微服务架构原理 | 青训营笔记

196 阅读3分钟

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

微服务架构介绍

系统架构演变历史

image.png

  1. 单体架构

image.png

  • 优点:性能最高;冗余小
  • 缺点:debug困难;模块相互影响;难以分工合作开发
  1. 垂直应用架构 image.png
  • 优点:业务独立开发维护
  • 缺点:不同业务存在冗余;每个业务还是单体
  1. 分布式架构 image.png
  • 优点:可以抽出与业务无关的独立服务
  • 缺点:服务模块bug导致全站瘫痪;调用关系复杂;不同服务冗余
  1. SOA结构(Service Oriented Architecture) image.png
  • 优点:服务注册功能
  • 缺点:整个系统设计是中心化的;需要自上而下设计;重构困难
  1. 微服务架构
  • 优点:高效;业务独立设计;自上而下;故障隔离
  • 缺点:治理、运维难度大;观测挑战;安全问题;分布式系统复杂性

微服务架构概览

image.png

微服务架构核心要素

image.png

微服务架构原理及特征

基本概念

服务(service): 一组具有相同逻辑的运行实体。
实例( instance): 一个服务中,每个运行实体即为一个实例。
实例与进程的关系: 实例与进程之间没有必然对应关系,可以一个实例可以对应一个或多个进程(反之不常见)。
集群(cluster): 通常指服务内部的逻辑划分,包含多个实例。
常见的实例承载形式: 进程、VM、k8s pod……
有状态/无状态服务: 服务的实例是否存储了可持久化的数据(例如磁盘文件)。
服务间通信: 对单体服务来说,不同模块通信只是简单的函数调用。对于微服务,服务间通信意味着网络传输

服务上下线过程

  • 新增一个统一的服务注册中心,用于存储服务名到服务实例之间的映射关系
  • 旧服务实例下线前,从服务注册中心删除该实例,下线流量
  • 新服务实例上线后,在服务注册中心注册该实例,上线流量 不能影响正常服务

流量特征

  • 统一网关入口
  • 外网通信多数采用 HTTP,内网通信多数采用 RPC(Thrift, gRPC) image.png

核心服务治理功能

服务发布

让一个服务升级运行新的代码的过程。

  • 难点 image.png

  • 蓝绿部署 简单稳定,消费两倍资源
    image.png

  • 灰度发布

image.png

流量治理

基于地区、集群、实例、请求等维度,对端到端流量的路由路径进行精确控制。
image.png

复杂均衡

负责分配请求在每个下游实例上的分布.\

image.png

稳定性治理

与程序正确性无关的问题.
image.png

image.png

  • 限流
    • 限制服务处理的最大 QPS,拒绝过多请求
  • 熔断
    • 中断请求路径,增加冷却时间从而让故障实例尝试恢复
  • 过载保护
    • 在负载高的实例中,主动拒绝一部分请求,防止实例被打挂
  • 降级
    • 服务处理能力不足时,拒绝低级别的请求,只响应线上高优请求