了解学习微服务 | 青训营笔记

68 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记

了解学习微服务

为什么学习微服务架构?

  • 微服务架构是当前大多数互联网公司的标准架构

微服务架构的由来及原理

  1. 系统架构演变原因
    • 互联网的快速发展
    • 硬件的快速发展
    • 需求多样化
    • 开发人员数量增加
    • 计算机理论和技术的发展
  2. 系统架构的演变过程
    单体 -> 分布式 -> SOA -> 微服务
    • 单体架构:所有逻辑放在一个项目里
      • 优点:
        1. 性能最高
        2. 冗余小
      • 缺点:
        1. debug困难
        2. 模块相互影响
        3. 模块分工、开发流程难以制定
    • 分布式架构:抽出业务无关的公共模块
      • 优点:
        1. 业务无关的独立服务
      • 缺点:
        1. 服务模块bug可导致全站崩溃
        2. 调用关系复杂
        3. 不同服务冗余
    • SOA架构:面向服务
      • 优点:
        1. 服务注册
      • 缺点:
        1. 整个系统设计是中心化的
        2. 需要从上至下设计
        3. 重构困难
    • 微服务架构: 彻底的服务化
      • 优点:
        1. 开发效率高
        2. 业务独立设计
        3. 自下而上
        4. 故障隔离:即不同微服务间互不影响
      • 缺点:
        1. 治理、运维难度高
        2. 观测挑战
        3. 安全性
        4. 分布式系统
  3. 微服务架构的核心要素
    • 服务治理
    • 可观测性
    • 安全

服务治理功能是如何实现的

  1. 基本概念

    • 服务:一组具有相同逻辑的运行实体
    • 实例:一个服务中,每个运行实体即为一个实例
    • 实例和进程的关系:没有必然对应关系,一对多,反之不常见
    • 集群:异常按照服务内部逻辑划分,包含多个实例
    • 常见实例承载形式: 进程、VM等
    • 有状态/无状态服务:服务的实例是否存储可持久化数据
  2. 服务发布的难点

    • 服务不可用
    • 服务抖动
    • 服务回滚
  3. 稳定性治理

    • 限流
    • 熔断
    • 过载保护
    • 降级
  4. 重试的意义

    • 降低错误率: 连续错误的概率更低
    • 降低长尾延时:对于偶尔出现的较长请求,重试可能提前成功返回
    • 容忍暂时性错误: 某些暂时性异常,重试可以规避
    • 避开下游故障实例:某些实例出现故障,重试其它实例可以成功
  5. 重试的难点

    • 幂等性
    • 重试风暴
    • 超时设置