美文网首页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