这是我参与「第五届青训营 」笔记创作活动的第5天
微服务
微服务架构介绍
演变
由于:
- 互联网的爆炸性发展
- 硬件设施的快速发展
- 需求复杂性的多样化
- 开发人员的急剧增加
- 计算机理论及技术的发展
系统架构发生了以下演变:
单体架构 -> 垂直应用架构 -> 分布式架构 -> SOA架构 ->微服务架构
架构优劣
单体架构
- 优势:性能最高;冗余小
- 劣势:debug困难;模块相互影响;模块分工、开发流程
垂直应用架构(按照业务线垂直化分)
- 优势:业务独立开发维护
- 劣势:不同业务存在冗余;每个业务还是单体
分布式架构(抽出业务无关的公共模块)
- 优势:业务无关的独立服务
- 劣势:服务模块bug导致全站瘫痪;调用关系复杂;不同服务冗余
SOA(面向服务)
- 优势:服务注册
- 劣势:系统设计中心化;从上至下设计;重构困难
微服务(彻底的服务化)
- 优势:开发效率;业务独立设计;自下而上;故障隔离
- 劣势:治理、运维难度;观测挑战;安全性;分布式系统
微服务架构的核心要素
- 服务治理
- 客观测性
- 安全
微服务架构原理特征
基本概念
- 服务:一组具有相同逻辑的运行实体
- 实例:一个服务中的每个运行实体
- 集群:服务内部的逻辑划分,包含多个实例
- 有状态/无状态服务:是否存储可持久化的数据
- 服务间通信:单体服务为函数调用;微服务通信意味着网络传输
服务注册及发现
问题:如何指定调用一个目标服务的地址:
- 本地DNS存在缓存,导致延时,负载均衡问题
- 不支持服务实例的探活检查
- 域名无法配置端口
解决思路:新增一个统一的服务注册中心,用于存储服务名到服务实例的映射
流量特征
- 统一网关入口
- 内网通信多数采用RPC
- 网状调用链路