美文网首页System Design
系统设计基础6:单体架构和微服务

系统设计基础6:单体架构和微服务

作者: MeazZa | 来源:发表于2019-03-20 21:25 被阅读0次

    本文我们来讨论下最近很流行的单体架构和微服务的选择问题。

    概念介绍

    先来简单介绍下单体架构和微服务的概念:

    • 单体架构(Monolith):所有的功能在一个服务中实现,使用同一个数据库,各种方法进行内部调用。注意,单体架构并不一定是单点的,单体架构也可以部署在多台服务器上进行水平扩展,数据库也可以部署为主从结构的。
    单体架构
    • 微服务(Micro Services):将功能进行拆分,由每个小服务单独实现,每个服务有独立的数据库,服务之间进行远程调用。一般将所有服务接入网关,统一对外服务。
    微服务架构

    优势和劣势

    单体架构
    • 优点:
      • 适合于小团队开发,节省微服务之间的交互讨论时间
      • 代码移动少,不需要考虑功能的拆分,运维成本小
      • 重复代码少,对于一些通用功能不需要重复实现
      • 调用速度快,本地调用即可,不需要远程调用
    • 缺点:
      • 新成员上手速度慢,需要理解所有代码
      • 发布较复杂,任何改动都需要部署整个系统
      • 单个服务器职责较多,某个功能出错将整体不可用
    微服务
    • 优点:
      • 功能易扩展,在微服务体系中增加一个服务即可
      • 新成员上手较快,仅需理解某一个服务的功能
      • 不同服务可以并行开发,提高开发效率
      • 可以针对某一服务,而不是整体服务进行水平扩展
    • 缺点:
      • 需要一些设计技巧,一般将相同功能放在同一服务中。另外,如果两个服务是单向依赖,并且和其他服务没有依赖关系,可以考虑合并为一个服务。

    小结

    单体架构和微服务是两种不同的架构方式,各自都有很好的代表,比如StackOverflow就是单体架构的代表,在实际应用中可以按需选择。上述提到的各自的优缺点也不是绝对的,某些缺点是可以通过一些方法来避免的。目前在分布式设计中,使用微服务是更常见的方式。

    欢迎大家订阅专题,其中包含了系统设计基础系列的全部文章:System Design

    相关文章

      网友评论

        本文标题:系统设计基础6:单体架构和微服务

        本文链接:https://www.haomeiwen.com/subject/jvxzmqtx.html