美文网首页
java专题之系统优化

java专题之系统优化

作者: 这一刻_776b | 来源:发表于2020-01-04 10:04 被阅读0次

来自业务上的简化

  很多时候,自己是一个理想主义者,公司的其他一些也是,所有在系统设计时:总试图考虑周全,试图具备很强的扩展性,试图一劳永逸。事实是,在对业务又有成竹于胸、对设计有深刻立即的时候,很难做到。所以往往过度设计、过度开发。

  多做事情,不是好事情,在一些关键流程上影响严重,尤其是那些高频执行的代码。多一个环节,都是意味着多消耗计算资源。

  很早前,我们做的程序在结算上,要求对交易账号三方进行资金划拨(一方减少,另外一方增加,第三方佣金增加),要记录资金变动明细,要有事务保护。这业务,在交易量不大的情况下,没有问题;小幅度的性能提升也可以通过提升硬件配置来解决。但是对于我们,运营一段时间后,真的很难在提升:1、业务逻辑写得很复杂,改动风险很大,2、所有瓶颈在数据库上,事务经常失败

  经过很长时间的观察,我们发现,我们并不需要三方划账,只需要单方扣款就可以了;我们也发现,资金做好变动日志就可以了,事物也可以不需要。这个业务以确定下来,砍掉了这个模块6成的代码,单台的服务大幅提高。

  事后感叹,真的想多了,业务没有想的复杂。业务上的简化,比其他方面的优化,我认为更加有效,也更加乐意去做:

1.可以删掉很多无用的东西,维护简单了,

2.以前不爽的代码终于可以写了

部署上的优化

  业务总是在上升的,单台服务器,总会有一个上限。这是常理,但在开始做程序的时候,只是想过,并有做预案。那时的想法是先完成业务,在考虑性能。这个策略,仁者见仁,智者见智。

  部署上的优化,我的理解是有两个维度:

1.从业务流程上进行拆解,通过拆解,可以降低整体的复杂度,方便维护和部署;整个流程可以部署到不同的服务器上,可以达到分摊压力的效果;

2.单个环境多套部署,将单个环节部署到不同服务器上,做负载均衡

  就现在的情况看,增加硬件的成本,还是远低于开发、维护的人力成本的,所有这个方式的性能优化,是运维喜欢干的。

来自数据库上优化

  数据库的优化空间,还是挺大的,主要表现在表索引的合理使用、表字段设计、表关联查询、事务。

  个人认为:

  1、对于性能要求的程序,尽量避免使用事务、和表关联。

  2、好的索引能够很大程度上提高速度

  3、如果数据量大,要考虑表分区

  一些编码的人,对数据库了解不多,没有连主键、索引的都没有,也时常发生。所以优化这个,是程序员,尤其懂数据库的程序员喜欢干的事情。时常听到一些牛人将一些耗时巨大的数据库计算,瞬间提升数百、数千倍。

来自程序实现上优化

  一般公司的程序,只是完成某一些业务而且,没有什么大不了的技术攻关,所有也谈不上什么高深的技术。而我们写的程序,经常会因为各种各样的原因,多做一些没用的事情:

  1、没有用的for循环

  2、可以在一个循环里面搞定的,做了多个循环

  3、一个事情反复做,通常是代码相互调用(因为计算结果没有共享或传递)

这个事情,程序员会比较喜欢做。程序员每隔一段时间都会回头看自己的过去,每每发现以前的幼稚表现,都有冲动去修正一下。

来自硬件的提升

比较简单

来自前端的优化

相关文章

网友评论

      本文标题:java专题之系统优化

      本文链接:https://www.haomeiwen.com/subject/aibtactx.html