微服务架构 | 青训营笔记

45 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天,对前一个阶段学习的微服务架构的内容做一个总结。

第一课:微服务架构介绍

架构分类/发展

系统架构演进:互联网爆炸性发展\

  1. 单体架构:性能高,冗余小;模块分工困难,易耦合。
  2. 分布式架构:抽出业务无关公共模块;模块bug会导致全部崩溃
  3. SOA:多服务注册中心,但设计是中心化的
  4. 微服务:从下而上的业务独立设计;劣势在于治理难度变大。

核心要素

  1. 服务配置和治理
  2. 链路追踪和监控
  3. 安全性

第二课:微服务架构原理及特征

服务:相同逻辑(同一段代码)的运行实体,
实例:服务中的每个运行实体,承载形式如VM,进程
有状态服务:含有数据存储的服务
微服务就是本质是运行同一段代码的多个实体。

服务发现

场景:指定一个目标服务的地址,这个过程不能硬编码,因为服务端ip,port可变。
方案1:域名DNS,缺点是无法配置port,不支持探活检查。
方案2:服务注册中心:保存服务名到服务实例的映射。

无损上下线

服务实例下线,上线过程刚好相反
下线:先从服务注册中心删了,再关实例。

第三课:服务治理功能

服务发布:

服务升级带来一些问题:服务不可用,服务抖动,服务回滚
策略:
a)蓝绿部署,划分为两部分一一升级,但在升级一部分时,只有一半的资源可用。
b)灰度发布/金丝雀发布:先加一个,没问题就继续缓慢切换流量,但回滚很麻烦。

流量治理:

地区、集群、实例、请求维度端到端流量控制。

稳定性治理

线上服务一定会出问题,与程序正确性无关。
限流,熔断,过载保护,降级(只保障高优先级应用)

第四课:

重试

本地函数调用不建议重试 远程函数调用建议重试,可一定程度提高可用性SLA。

重试风暴

微服务调用链路n比较深,会导致系统重试次数的n指数次重试。

重试策略

限制重试比例、防止链路重试(末端服务返回特殊标记)、hedged request(对冲:多发几个请求,等一个成功就成功)。