微服务架构学习 | 青训营笔记

45 阅读2分钟

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

微服务架构

基本概念

服务 Service

一组具有相同逻辑的运行实体

实例 Instance

一个服务中,每个运行实例即为一个实例

实例与进程的关系

实例与进程之间没有必然对应关系,一个实例可以对应一个或多个进程

集群 Cluster

通常指服务内部的逻辑划分,包含多个实例

常见的实例承载形式

进程、VM、k8s pod等

有状态/无状态服务

服务的实例是否存储了可持久化的数据

服务间通信

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

服务注册与发现

用一个统一的服务注册中心,用于存储服务名到服务实例的映射。

服务发布

让一个服务升级运行新的代码的过程

可能的问题

服务不可用 进程被占用导致无法发布

服务抖动 网络流量抖动导致难题

服务回滚 升级后的回滚操作存在难度

蓝绿部署

发布时先将所有实例分为蓝绿两个集群,先断开绿色部分的流量,完成升级,然后断开蓝色部分的流量,完成升级。这种升级方式简单且稳定,但是会需要两倍的资源才能完成发布。

灰度发布

先增加一个额外实例完成升级,如不存在问题则逐步升级各个实例。该方法需求容量小,也快捷,但是出现问题后回滚的难度较大

负载均衡

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

稳定性治理

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

功能

限流 减少流量
熔断 下游节点timeout等时直接熔断该链路
过载保护 核心负载过大时拒绝一部分流量
降级 拒绝部分低级链路的流量