微服务架构原理与治理实践
- 为什么学?——微服务架构是当前大多数互联网公司的标准架构
- 学到什么?——微服务架构的由来及原理;服务治理功能是如何工作的
微服务架构介绍
系统架构演变历史
单体架构:all in one,性能高,冗余小;debug困难,耦合度高 垂直应用架构:按照业务线垂直划分,业务独立开发维护;不同业务存在冗余,每个业务仍是单体 分布式架构:抽出业务无关的公共模块,业务无关的独立服务;服务模块bug会导致全站瘫痪,调用关系复杂,不同服务冗余 SOA-Service Oriented Architecture-架构:面向服务,服务注册;系统设计中心化,需自上而下设计,重构困难 微服务架构:彻底服务化,开发效率高,业务独立设计,自下而上,故障隔离;治理、运维难度高,安全性难保证,分布式系统本身复杂
微服务架构核心要素
- 服务治理:服务注册,服务发现,负载均衡,扩缩容,流量治理,稳定性治理……
- 可观测性:日志采集,日志分析,监控打点,监控大盘,异常报警,链路追踪……
- 安全:身份验证,认证授权,访问令牌,审计,传输加密,黑产攻击
微服务架构原理及特征
基本概念
- Service-服务,一组具有相同逻辑的运行实体
- Instance-实例,一个服务中,每个运行实体即为一个实例
- 实例与进程的关系:无必然对应关系,可以一个实例对应一个或多个进程(反之不常见)
- Cluster-集群,通常指服务内部的逻辑划分,包含多个实例
- 服务间通信:对于单体服务,不同模块通信只是简单的函数调用;对于微服务,服务间通信意味着网络传输
服务注册及发现
问题:在代码层面,如何指定调用一个目标服务的地址(ip:port)? DNS?本地DNS存在缓存,导致延时;负载均衡问题;不支持服务实例的探活检查;域名无法配置端口 解决思路:新增一个统一的服务注册中心,用于存储服务名到服务实例的映射
流量特征
- 统一网关入口
- 内网通信多数采用RPC
- 网状调用链路
核心服务治理功能
服务发布
- 定义:Deployment-服务发布,即让一个服务升级运行新代码的过程
- 难点:服务不可用,服务抖动,服务回滚
- 蓝绿部署、灰度发布(金丝雀发布)、
流量治理
在微服务架构下,可以基于地区、集群、实例、请求等维度,对端到端流量的路由路径进行精确控制
负载均衡
- Load Balance-负载均衡,负责分配请求在每个下游实例上的分布
- 常见LB策略:Round Robin, Random, Ring Hash, Least Request……
稳定性治理
限流、熔断、过载保护、降级