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

一、基础知识

1.1 系统架构演变历史

image-20230205135117326

  • 单体架构:all in one process
  • 垂直应用架构:按照业务线垂直划分,但每个业务也是单体架构,即划分成了多个单体架构。
  • 分布式架构:抽出业务无关的公共模块。
  • SOA架构:开始面向服务,整个系统是中心化的,自上而下
  • 微服务架构:去中心化,自下而上,易于重构。微服务是在SOA上做的升华。微服务架构重点强调的一个是"业务需要彻底的组件化和服务化",原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。

1.2 概览

image-20230205140916064

1.3 核心要素

  • 服务治理:服务注册、服务发现、流量治理...
  • 可观测性:日志采集、链路追踪...
  • 安全: 身份验证、认证授权...

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

2.1 基本概念

2.1.1 基本名词解释

  • 服务一组具有相同逻辑(相同代码)的运行实体。
  • 实例(instance):一个服务中,每个运行实体即为一个实例。
  • 集群(cluster):通常指服务内部的逻辑划分、包含多个实例。
  • 服务包含集群,集群包含实例

#### 2.1.2 服务间通信

  • 单体服务:不同模块间通信只是简单的函数调用。
  • 微服务:服务间通信意味着网络传输。

image-20230205142738205

2.2 服务注册与发现

2.2.1 怎样去调用服务?

新增一个统一的服务注册中心,用于存储服务名到服务实例的映射(类似DNS一样)。

image-20230205143737266

2.2.2 服务实例上线及下线的过程

目的:保证流量通畅

上线:先跑起实例,再health check,最后再注册服务。

下线:先删除注册中心的记录,等一段时间,再下线服务。

2.3 流量特征

  • 统一网关入口
  • 内网通信多数采用RPC协议(二进制协议,传输和编解码效率高)
  • 网状调用链路

image-20230205144817391

三、核心服务治理功能

3.1 服务发布

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

难点:服务不可用、服务抖动(流量不稳定)、服务回滚

解决方案:

  • 蓝绿部署:简单、稳定,需要两倍资源,可以考虑在流量低峰的时候完成部署
  • 灰度发布(金丝雀发布):一个个实例进行部署。需要对流量的有很高精确控制,而且回滚困难(需要很好的平台支撑,如:k8s)。

3.2 流量治理

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

image-20230205155200204

3.3 负载均衡(Load Balance)

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

常见的LB策略:Round Robin、Random、Ring Hash、Least Request

3.4 稳定性治理

线上服务总是会出问题的,这与程序的正确性无关。(流量突增、硬件故障...)

解决方案:

image-20230205155949462

参考链接

(92条消息) SOA架构和微服务架构的区别_扛麻袋的少年的博客-CSDN博客_soa架构和微服务架构的区别

‍‍‍⁤⁣⁣⁡⁣⁡⁢⁣⁡‌⁤⁣⁣‍⁣‬⁣⁡‍‍⁣⁡⁣⁢⁡⁣⁡‍‬⁡⁢‬‬‌⁡‬⁡⁤微服务架构原理与治理实践 .pptx - 飞书云文档 (feishu.cn)

微服务架构原理及特征 - 掘金 (juejin.cn)

[核心服务治理功能 - 掘金 (juejin.cn)](

最后修改:2023 年 06 月 07 日
如果觉得我的文章对你有用,请随意赞赏