前言
一个服务器再怎么优化,其处理能力都是有限的。根据项目情况,将一个整体应用拆分为多个应用也不失为一个方案。比如按功能模块及功能模块使用频率拆分。
应用拆分的好处
- 减轻并优化了整个统一的应用的压力。
- 拆分后的应用可以被更精准的监控。
- 不同子应用会更容易管理及局部优化。
- 更利于功能模块内部的团队协作。
应用拆分的弊端
- 管理的复杂度上升。
- 代价昂贵。使用资源的成本增加。
- 网络开销增加,带宽要求增加。
应用拆分的原则
- 业务优先。优先按照业务的功能拆分为小应用。
- 循序渐进,迭代拆分并进行测试。
- 兼顾技术:重构、分层。
- 可靠测试。减少或避免累积错误的出现。
应用拆分的思考
- 应用之间通信:RPC(dubbo 等)或消息队列(适用于传输数据包小,但传输量大,对数据的实时性要求不高的场景)。
- 应用之间的数据库设计:每个应用都应有自己的数据库,其中一些共同的信息可以另建一个公共数据库来存放。
- 避免事务操作跨应用,降低耦合度。
框架
dubbo
spring cloud