单体架构
指单个应用程序部署
优点
开发简单直接;
没有分布式管理开销;
缺点
代码耦合在一起,维护难;
缺乏稳定性,任何一个小问题 可能导致整个应用挂掉;
扩展性不足,无法满足高并发场景;
SOA架构
优点
模块拆分,独立部署;
通过接口进行通信,降低耦合;
缺点
模块之间需要远程通信;
增加开发工作量;
微服务
是否选择微服务取决于你要设计的系统的复杂度。微服务是用来把控复杂系统的,但是随之而来的就是引入了微服务本身的复杂度。需要解决包括自动化部署、监控、容错处理、最终一致性等其他分布式系统面临的问题。即使已经有一些普遍使用的解决方案,但是仍然是有不小的成本的
优点
模块儿强边界;
独立部署;
技术选型的多样性;
缺点
分布式带来的编程复杂度,远程调用的消耗;
舍弃强一致性,实现最终一致性;
操作复杂性要求有一个成熟的运维团队或者运维基础设施;