微服务架构 | 青训营笔记

44 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第11天

单体架构

  • 应用开发采用单体架构,所有的代码在一个代码仓库中管理,最后打包成一个部署包,运行在一个进程上。

  • 单体架有以下的好处:

    • 应用开发简单,基本所有的代码都在一个仓库中管理;
    • 非常方便进行大规模的更改;
    • 容易测试,只需要写几个端对端的测试;
    • 部署简单明了,横向扩展非常容易.
  • 单体架构的弊端

    • 复杂度不断提升,模块之间的耦合度越来越高,维护成本很高;
    • 更新迭代周期变长,从代码提交到实际部署的周期会拉长,甚至有时都无法交付;
    • 难以扩展与迭代演进,使用过时的技术栈或组件一直无法升级.

分布式架构

  • 抽出业务无关的公共模块

  • 优点:

    • 业务无关的独立服务
  • 缺点:

    • 服务模块bug可导致全站瘫痪
    • 调用关系复杂
    • 不同服务冗余

SOA架构

  • 面向服务

  • 优点:

    • 通过服务注册中心进行解耦
  • 缺点:

    • 整个系统设计是中心化、从上至下的,因此后期重构困难

微服务架构

  • 彻底的服务化

  • 优点:

    • 开发效率高
    • 业务独立设计
    • 自上而下
    • 故障隔离
  • 缺点:

    • 运维难度高
    • 观测挑战
    • 安全性
    • 分布式系统
  • 核心要素

    • 服务治理
    • 可观测性
    • 安全

微服务架构中需要考虑决策模型由多个模式组成。从层次上大致可分为应用相关、应用基础相关、基础设施相关三大层。

  • 应用相关模式: 服务拆分、数据库的架构、维护数据一致性问题、测试相关;

  • 应用基础设施相关模式: 边界问题、安全性、事务性消息、通信风格、可靠性、可监测性;

  • 基础设施相关模式: 应用/服务的部署、服务发现等.

微服务架构核心服务治理功能

  • 服务发布:即让一个服务升级运行新代码的过程。
    • 难点:服务不可用、服务抖动、服务回滚。
    • 蓝绿部署--需要两倍资源--适用于流量低的时段。
    • 灰度发布(金丝雀发布)
  • 负载均衡:负责分配请求在每个下游实例上的分布。
  • 流量治理:在微服务架构下,我们可以基于地区、集群、实例、请求等维度,对端到端流量的路由路径进行精确控制。
  • 稳定性治理
    • 限流、熔断、过载保护、降级