第1章 初识微服务

1-2 软件架构的进化

  • 软件架构是在软件的内部,经过综合各种因素的考量、权衡,选择特定的基数,将系统划分为不同的部分并使这些部分相互分工,彼此协作,为用户提供需要的价值。

  • 因素:业务需求、技术栈(公司人员会的技术)、成本、组织架构、可扩展性、可维护性。

  • 软件架构进化:

    • 一层架构
    • MVC
    • dubbo:前后端分离
  • 单体架构(单块架构):功能、业务集中在一个发布包(jar、war),部署运行在同一个进程中。

  • 优点:

    • 易于开发、测试、部署和水平伸缩(新增节点时直接复制jar包发布到另一台机器上即可)。
  • 缺点:

    • 代码膨胀,难以维护
    • 构建、部署成本大
    • 新人上手困难
    • 创新困难(想引入新框架但代码太多太难改)
    • 可扩展性差

1-3 什么是微服务

  • 定义:使用一套小服务来开发单个应用的方式,每个服务运行在独立的进程里,一般采用轻量级的通讯机制互联,并且它们可以通过自动化的方式部署。

  • 特征:

    • 单一职责:紧密相关的功能放在一个服务里,如,订单和支付一个服务,登录和注册一个服务。
    • 轻量级通信:服务之间的通信必须与平台无关,如,http通信(与平台有关的如java的远程机制必须运行在jvm里)。
    • 隔离性:每个服务运行在自己的环境中,互不干扰。
    • 有自己的数据:每个服务有独立的数据存储系统,降低数据复杂度。
    • 技术多样性:每个微服务都可以选择最适合的技术,如,有的是java开发,有的是python开发,只要最后能提供所需的Api即可。

1-4 画出微服务架构

  • 经典架构:

第1章 初识微服务_第1张图片

  • 微服务架构:

第1章 初识微服务_第2张图片

1-5 微服务的优势和不足

  • 优势:

    • 独立性
    • 敏捷性:有新需求时很容易找到要在哪个服务里增加。
    • 技术栈灵活
    • 高效团队:一个服务一个团队,只有几个人,沟通方便快捷。
  • 不足:

    • 额外的工作:如,微服务的拆分。
    • 数据一致性:单体架构中只有一个数据库,很容易用事务和级联来实现数据一致。
    • 沟通成本:在单体架构中,如果你想修改一个Api,那么自己把调用的地方也修改了即可,但是在微服务中,很可能这个调用的地方就不是你负责的了,那么就需要联系其他组的人。

你可能感兴趣的:(第1章 初识微服务)