一、单体架构的优势与不足
1.1 优势
- 易于开发:只需借助IDE的开发调试功能即可完成;
- 易于测试:只需通过单元测试或者浏览器即可完成测试;
- 易于部署:打包成单一可执行jar,执行jar包即可完成部署;
1.2 单体架构的不足
- 复杂性高:代码难以理解,导致代码质量低,复杂性进一步增加,代码难以被修改和重构;
- 交互效率高:构建和部署时间长,难以定位问题,开发效率低;
- 全量部署耗时长,影响范围广,风险大,发布频次低;
- 伸缩性比较长:单体只能横向扩展,无法分模块垂直扩展;
- IO密集型模块和CPU密集型模块无法进行独立升级和扩容;
- 可靠性差:一个BUG可能引起整个应用崩溃;
- 阻碍技术创新:团队必须使用同一框架和语言。
二、微服务架构
2.1 什么是微服务架构: 将单体应用拆分成多个高内聚低耦合的小型服务,每个效服务运行在独立的进程,由不同的团队进行维护和开发,服务间采用轻量级通信机制,独立自动部署,可以采用不同的语言及存储 。
2.2 微服务的优势:
- 独立部署;
- 一个微服务的修改不需要协调其它服务;
- 每个服务都可以在横向和纵向上扩展;
- 每个服务都可按硬件资源的需求进行独立扩容。
三、微服务的三个方向的扩展:
-
X轴扩展:
X轴扩展 -
Z轴扩展
Z轴扩展
Y轴扩展
一个电商平台的架构
四、微服务的挑战
- 服务拆分的原则
- 数据一致性
- 服务间的通信:RPC vs RESTvs 异步消息
REST的好处是:方便调试,跨语言、学习门槛较低,易于被大家接受,缺点是协议文档不可维护,协议较为繁琐。RPC是基于TCP,常用的技术选型是DUBBO等。 - 服务网关
- 高可观察
网友评论