7
回答
如果后台是一个老系统,用户访问量持续增加,这种Java系统应该怎么设计?
华为云实践训练营,热门技术免费实践!>>>   
后台数据库是几个老系统,性能有限,中间用Java通过web service访问,前台是移动客户端。用户访问时间比较长,而且用户数量会增加,系统是企业级应用,需要保证响应速度和稳定性,这种情况用Java应该怎么设计这个系统?用什么技术解决这个问题比较好?
举报
文心雕码
发帖于3年前 7回/817阅
共有7个答案 最后回答: 3年前
具体分析几个老系统的业务,针对具体业务优化性能。比如拆分大的业务逻辑,变成一个个小的独立的功能,总之尽量深入业务才能选择更好的技术手段。
老系统整体优化很困难的,只能针对缓慢的节点,进行方案讨论,优化~这么问很能得到答复~慢慢来吧

1. 首要任务一定而且肯定是对数据库进行优化:


  • 对查询较多的列进行分析并优化或者增加索引以提高查询速度。
  • 冷热数据分离:对数据较多的表进行数据转移,比如将命中率脚底的老数据转移到历史表中,为历史表的查询专门建造查询逻辑。
  • 实在不行就做读写分离,但是这个比较麻烦,在上面两条能够解决问题的情况下不建议用。
  • 再不行就进一步分表分库,这个也同样麻烦。

2. 从程序角度来说,增加缓存是个办法,但是缓存的设计一定要得当,不然并不能解决什么问题。这是个人经验之谈。

3. 优化JVM配置。

4. 利用nginx或者Apache进行反向代理,可以增加WEB服务器的实例,如果后台业务放在其他JVM实例上(比如JBOSS或者RPC或者其他),也可以进一步增加分布式部署实例或者负载均衡。

5. 将部分业务异步化,比如某些复杂的新增和修改操作,可以放到异步线程里面,让客户稍后再看到结果,而非实时结果;某些复杂报表,可以在系统闲时跑出数据存到查询表中,这样避免复杂查询占用太多资源;很多批处理操作可以进一步放到夜间等闲时。

个人觉得,第1点里面的前两点,是很多老系统提高性能的根本,立竿见影,同时也应该首先从这两点入手解决问题。

--- 共有 3 条评论 ---
Justic_0111学习了,从多个角度都可以入手,剩下的就是时间和资源上的分配问题了 3年前 回复
oulaly学习了 3年前 回复
whaongood 3年前 回复

所有的优化工作都是要视业务而定的,例如:

1、后台数据加预处理功能,减少用户访问时的代码执行耗时

2、铺业务级缓存

3、终端跟服务器实现增量同步,减少数据传输,也可以减少用户流量

楼上说过的,负载均衡、部分业务拆解后异步化。

顶部