这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天
一、微服务架构介绍
1. 系统架构演变历史
🤠 为什么系统架构需要演进
🥞 互联网的爆炸性发展
🥞 硬件设施的快速发展
🥞 需求复杂性的多样化
🥞 开发人员的急剧增加
🥞 计算机理论及技术的发展
(1)单体架构
🤠 all in one process
🥞 优点
① 性能最高
② 冗余小
🥞 缺点
① debug 困难
② 模块互相影响
③ 模块分工、开发流程
(2)垂直应用架构
🤠 按照业务线垂直划分
🥞 优势
① 业务独立开发维护
🥞 劣势
① 不同业务存在冗余
② 每个业务还是单体
(3)分布式结构
🤠 抽出与业务无关的公共模块
🥞 优势
① 业务无关的独立服务
🥞 劣势
① 服务模块bug可导致全站瘫痪
② 调用关系复杂
③ 不同服务冗余
(4) SOA架构
🤠 Service Oriented Architecture 面向服务
🥞 优势
① 服务注册
🥞 劣势
① 整个系统设计是中心化的
② 需要从上至下设计
③ 重构困难
(5)微服务架构
2. 微服务架构概览
3. 核心要素
二、微服务架构原理及特征
(1)基本概念
🤠 服务(service) :一组具有相同逻辑的运行实体
🤠 实例(instance):一个服务中,每个运行实体即为实例
🤠 实例与进程的关系:实例与进程之间没有必然对应的关系,可以一个实例对应一个或多个进程(反之则不常见)
🤠 集群(cluster):通常指服务内部的服务划分,包含多个实例。
🤠 常见的实例承载形式:进程、VM、k8s pod ……
🤠 有/无状态 服务:服务的实例是/否存储了可持久化的数据(例如磁盘文件)
🤠 服务间通信
(2)服务注册及发现
(3)流量特征
三、核心服务治理功能
1. 服务发布
🤠 服务发布(deployment),即指让一个服务升级运行新的代码的过程。
🤠 服务发布的难点
🤠 蓝绿部署:简单,稳定,但需要两倍资源
🤠 灰度发布(金丝雀发布)
金丝雀(canary)对瓦斯极其敏感,17世纪时,英国矿工会在下井前先放入一只金丝雀,以确保矿井中没有瓦斯。
2. 流量治理
🤠 在微服务架构下,我们可以基于地区、集群、实例、请求等维度,对端对端流量的路由路径进行精确控制。
3. 负载均衡
🤠 Load Balance :负责分配请求在每个上下游实例上的分布
4. 稳定性治理
🤠 线上服务总是会出现问题的,这与程序的正确性无关
🥞 网络攻击
🥞 流量突增
🥞 机房断电
🥞 光纤被挖
🥞 机器故障
🥞 网络故障
🥞 机房空调故障
🥞 ……
🤠 微服务架构中典型的稳定性治理功能