微服务架构原理与治理实践 | 青训营

47 阅读3分钟

前言:

本篇笔记记录了微服务架构的相关内容,为青训营课程视频学习所整理

主要内容包括系统架构的演变,微服务架构的原理及特征,核心服务治理功能三方面

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

与开源生态契合,有大量针对微服务架构的开源项目,是当前主流的系统架构


系统架构演变

系统架构发生演进的原因

  1. 互联网的发展
  2. 硬件设施的发展
  3. 需求复杂性的多样化
  4. 计算机理论及技术的发展

系统架构演变历史

  • 单体架构

    • 优势:1. 性能最高 2. 冗余小
    • 劣势:1. debug困难 2. 模块互相影响
  • 垂直应用架构

    • 按照业务线垂直划分
    • 优势:1. 业务独立开发维护
    • 劣势:1. 不同业务存在冗余 2. 每个业务还是单体
  • 分布式架构

    • 抽出业务无关的公共模块
    • 优势:1. 业务无关的独立服务
    • 劣势:1. 服务模块bug可导致全站瘫痪 2. 调用关系复杂 3. 不同服务冗余
  • SOA架构

    • 面向服务 (Service Oriented Architecture)
    • 优势:1. 服务注册
    • 劣势: 1. 整个系统设计是中心化的 2. 需要从上至下设计 3. 重构困难
  • 微服务架构

    • 彻底的服务化
    • 优势:1. 高效的开发迭代效率 2. 故障可控
    • 劣势:1. 治理、运维难度增加 2. 观测挑战 3. 安全性 4. 分布式系统本身的复杂性

微服务架构原理及特征

微服务架构核心要素

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

基本概念

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

微服务弱化连接的概念,强调”请求“

即同一个客户端长连接发出的请求,理论上可以到达服务中的所有实例


核心服务治理

服务发布

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

  • 灰度发布(金丝雀发布)
  • 蓝绿部署

流量治理

在微服务架构下,我们可以基于地区、集群、实例、请求等维度,对端到端流量的路由路径进行精确控制

负载均衡

负载均衡(Load Balance)负责分配请求在每个下游实例上的分布。

稳定性治理

线上服务总是会出问题的,这与程序的正确性无关。

如:网络攻击,流量突增,机房断电,光纤被挖,机器故障,网络故障,机房空调故障……

常用的措施有:限流,熔断,过载保护,降级……