- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
系统重构 | 小手术与伤筋动骨
系统重构 | 小手术与伤筋动骨
所有的项目都需要重构吗 ?你知道在什么时机 需要进行项目重构吗 ?今天点融黑帮软件开
发工程师Fisher来和大家分享一下系统重构的一点心得。
重构的目的
首先不是所有的项目都需要重构 ,就项目本身而言重构并不是一件很好的事情 ,不但不会带来很明
显的效益 ,相反可能会对当前系统产生一定的风险。然而当你发现的你的系统已经不能支持快速发
展的业务需求 ,Q PS越来越高 ,数据库压力越来越大 ,很难在现有的系统中展开新的业务时 ,你就
不得不考虑一下重构。
动动小手术
重构就像医生给病人做手术 ,根据病人病情来决定是否动手术 ,如果小手术就能解决的问题 ,就没
必要进行大的操刀 ,系统也一样 ,越是底层的 ,框架级的越不要轻易重构 ;一旦伤筋动骨带来的影
响就是毁灭性的。
比如只是某个W EB页面响应时间过长 ,一般在应用层就可以解决 ,不涉及到架构或是框架
层面 ,方法一般是先检查页面是渲染时间过长还是服务端响应过慢 ;如果是前者 ,可以考虑
调整静态资源的加载顺序 ,减少无关的JS代码 ,延迟无需同步加载的JS ,Img等。如果是
后者 ,可以考虑前端是否可以异步调用后端请求 ,或者合并A PI减少调用次数 ,降低服务端
响应时间 ,这里可以考虑优化A PI确定时间是消耗在复杂逻辑计算上 ,或是DB的数据查询上
,还是网络间的通信上 ,对症下药。
优化代码逻辑 ,减少不必要的冗余计算 ,或者减少DB查询次数 ,增加缓存 ,同步转异步等都是优化
方向 ,根据不同业务需求选择不同的优化方向。
伤筋动骨
当你发现上述小的改动做完之后 ,服务器压力依然很大 ,CPU负载还是很高 ,DB压力依旧很大 ,
单表数据还是猛增 ,这时候你该考虑做个大手术了。可以从系统架构入手。
拆分
除了增加服务器外 ,垂直拆分也是不错的选择 ,将服务器模块化 ,根据业务将不同的请求分发在不
同的服务器上 ,不但可以降低单台服务器的访问压力 ,还可以降低风险等级 ,即使某个服务器宕了
,也不会对其他服务器造成致命的影响
SOA
服务化可以让业务调用更加清晰 ,不但可以让复杂的业务碎片化 ,也可以更快的定位解决线上问题
缓存
因为DB的资源是极其宝贵的 ,降低DB压力必不可少 ,对于实时性能不高的响应 ,
缓存绝对是不二的选择。本地缓存 ,Memcache ,Redis 等都是目前不错的方式。
读写分离 ,分库分表
当对DB的操作大部分都是read 或者w rit e 操作时 ,可采用读写分离 ,这里需要考虑数据同步的问题
,是否写操作需要实时显示。当写操作非常频繁或者随着时间的推移单表数据已经过于庞大达到千
万级别时 ,需要考虑分库分表 ,提高单表的查询效率。
由于篇幅所限 ,这里只做了概括性的描述 ,不能一一展开了。提醒一点很重要 :一定要在保证系统
的稳定性的前提下 能重构 ,万不能为了重构而重构 ,本末倒置得不偿失。
人人都是产品经理 (woshipm co m )中国最大最活跃的产品经理学习、交流、分享平台
文档评论(0)