1 微服务架构介绍
1.1 系统架构演变历史
- 单体架构
- 垂直应用架构:按照业务线垂直划分
- 分布式架构:抽出业务无关的公共模块
- SOA架构:面向服务
- 微服务架构:彻底的服务化
1.2 微服务架构概览
1.3 微服务架构核心要素
- 服务治理:服务注册、服务发现、负载均衡、扩缩容、流量治理、稳定性治理……
- 可观测性
- 安全
2 微服务架构原理及特征
2.1 基本概念
2.1.1 服务
一组具有相同逻辑的运行实体
2.1.2 实例
一个服务中,每个运行实体即为一个实例
2.1.3 服务间通信
单体服务中,只是简单的函数调用。微服务中,意味着网络传输。
2.2 服务注册及发现
新增一个统一的服务注册中心,用于存储服务名到服务实例的映射。
2.2.1 服务实例上线及下线过程
服务B实例3要下线:
服务注册中心删除实例3记录:
使实例3不再有流量,此时可以安全删除实例3:
实例4上线前先添加实例4:
再去注册服务中心注册实例4:
2.3 流量特征
- 统一网关入口
- 内网通信多数采用RPC
- 网状调用链路
3 核心服务治理功能
3.1 服务发布
让一个服务升级运行新的代码的过程
3.1.1 服务发布的难点
- 服务不可用
- 服务抖动
- 服务回滚
3.1.2 蓝绿部署
简单稳定,但需要两倍资源
先升级绿色集群,则关闭绿色集群流量:
绿色集群升级后,升级蓝色集群:
3.1.3 灰度发布(金丝雀发布)
直接上线新实例,然后下线旧实例,再上线新实例直到全部更新
3.2 流量治理
基于多维度,对端到端流量的路由路径过程限制
3.3 负载均衡
负责分配请求在每个下游实例上的分布
3.4 稳定性治理
线上服务总是会出现问题的,与程序的正确性无关。
- 限流
- 熔断
- 过载保护
- 降级