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

87 阅读2分钟

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

1. 课程背景

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

2. 本堂课重点内容

  • 微服务架构的由来及原理
  • 服务治理功能是如何工作的

3. 微服务架构介绍

3.1 架构的演变历史

图片.png

3.2 微服务架构概览

图片.png

3.3 微服务架构核心要素

3.3.1 服务治理
  • 服务注册
  • 服务发现
  • 负载均衡
  • 扩缩容
  • 流量治理
  • 稳定性治理
3.3.2 可观测性
  • 日志采集
  • 日志分析
  • 监控打点
  • 监控大盘
  • 异常报警
  • 链路追踪
3.3.3 安全
  • 身份验证
  • 认证授权
  • 访问令牌
  • 审计
  • 传输加密
  • 黑产攻击

4. 微服务架构原理及特征

4.1 基本概念

  • 服务:一组具有相同逻辑的运行实体
  • 实例:一个服务中,每个运行实体即为一个实例
  • 实例与进程的关系:实例与进程之间没有必然对应关系,可以一个实例对应一个或多个进程
  • 集群:通常指服务内部的逻辑划分,包含多个实例
  • 常见的实例承载形式: 进程、VM、k8s pod...
  • 有状态 / 无状态服务: 服务的实例是否存储了可持久化的数据

4.2 服务间的通信

  • 对于单体服务,不同模块通信只是简单的函数调用。
  • 对于微服务,服务间的通信意味着网络传输

图片.png

4.3 服务注册与发现

4.3.1 在代码层面,如何指定调用一个目标服务地址

新增一个统一的服务注册中心,用于存储服务名到服务实例的映射

4.3.2 服务实例的上线及下线

图片.png

  • 下线 在服务注册中心删除记录,然后停止服务
  • 上线 先启动,后注册

4.4 流量特征

  • 统一网关入口
  • 内网通信多数采用RPC
  • 网状调用链路

5.核心服务治理功能

5.1 服务发布

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

5.1.1 难点
  1. 服务不可用
  2. 服务抖动
  3. 服务回滚
5.1.2 蓝绿部署

图片.png

简单,稳定 但需要两倍资源

5.1.3 灰度发布(金丝雀发布)

先用一个新代码实例去测试,如果没问题就减去一个老实例,一增一减

5.2 流量治理

图片.png

对流量进行精确控制 基于地区,集群,实例,请求难度

5.3 负载均衡

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

5.3.1 常见的LB策略
  • Round Robin
  • Random
  • Ring Hash
  • Least Request
  • ...

5.4 稳定性治理

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

  • 网络攻击
  • 流量突增
  • 机房断电
  • 光纤被挖
  • 机器故障
  • 网络故障
  • 机房空调故障
  • ......
5.4.1 微服务中典型的稳定性治理功能
  • 限流
  • 熔断
  • 过载保护
  • 降级