微服务架构原理与治理实践| 青训营笔记

73 阅读2分钟

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

一、微服务架构介绍

1. 系统架构演变历史

🤠 为什么系统架构需要演进

🥞 互联网的爆炸性发展
🥞 硬件设施的快速发展
🥞 需求复杂性的多样化
🥞 开发人员的急剧增加
🥞 计算机理论及技术的发展

image.png

(1)单体架构

image.png 🤠 all in one process

🥞 优点

① 性能最高

② 冗余小

🥞 缺点

① debug 困难

② 模块互相影响

③ 模块分工、开发流程

(2)垂直应用架构

image.png

🤠 按照业务线垂直划分

🥞 优势

① 业务独立开发维护

🥞 劣势

① 不同业务存在冗余

② 每个业务还是单体

(3)分布式结构

image.png 🤠 抽出与业务无关的公共模块

🥞 优势

① 业务无关的独立服务

🥞 劣势

① 服务模块bug可导致全站瘫痪

② 调用关系复杂

③ 不同服务冗余

(4) SOA架构

image.png 🤠 Service Oriented Architecture 面向服务

🥞 优势

① 服务注册

🥞 劣势

① 整个系统设计是中心化的

② 需要从上至下设计

③ 重构困难

(5)微服务架构

image.png

2. 微服务架构概览

image.png

3. 核心要素

image.png

二、微服务架构原理及特征

(1)基本概念

image.png 🤠 服务(service) :一组具有相同逻辑的运行实体

🤠 实例(instance):一个服务中,每个运行实体即为实例

🤠 实例与进程的关系:实例与进程之间没有必然对应的关系,可以一个实例对应一个或多个进程(反之则不常见)

🤠 集群(cluster):通常指服务内部的服务划分,包含多个实例。

🤠 常见的实例承载形式:进程、VM、k8s pod ……

🤠 有/无状态 服务:服务的实例是/否存储了可持久化的数据(例如磁盘文件)

🤠 服务间通信

image.png

(2)服务注册及发现

image.png

(3)流量特征

image.png

三、核心服务治理功能

1. 服务发布

🤠 服务发布(deployment),即指让一个服务升级运行新的代码的过程。

🤠 服务发布的难点

image.png

🤠 蓝绿部署:简单,稳定,但需要两倍资源

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

金丝雀(canary)对瓦斯极其敏感,17世纪时,英国矿工会在下井前先放入一只金丝雀,以确保矿井中没有瓦斯。

image.png

2. 流量治理

🤠 在微服务架构下,我们可以基于地区、集群、实例、请求等维度,对端对端流量的路由路径进行精确控制。

image.png

3. 负载均衡

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

image.png

4. 稳定性治理

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

🥞 网络攻击
🥞 流量突增
🥞 机房断电
🥞 光纤被挖
🥞 机器故障
🥞 网络故障
🥞 机房空调故障
🥞 ……

🤠 微服务架构中典型的稳定性治理功能

image.png