四、单体架构的不足

一、单体架构的优势与不足

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等。
  • 服务网关
  • 高可观察

4.1 微服务的关注全景图:

微服务的关注全景图

你可能感兴趣的:(四、单体架构的不足)