6.微服务框架-不变的基建 | 青训营笔记

119 阅读3分钟

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

微服务架构的原理和特征

微服务架构的核心要素

  • 服务治理(本节课重点)

  • 服务注册

  • 服务发现

  • 负载均衡

  • 扩缩容

  • 流量治理

  • 稳定性治理

  • 可观测性

  • 日志采集

  • 日志分析

  • 监控打点

  • 监控大盘

  • 异常报告

  • 链路追踪

  • 安全

  • 身份验证

  • 认证授权

  • 访问令牌

  • 审计

  • 传输加密

  • 黑产攻击

基本概念

服务,实例,

服务包含集群,集群包含实例,

一个实例包含一个或多个进程

服务间的通信:网络传输

增加服务注册中心,来完成服务的注册和发现

流量特征:

统一网关入口

内网通信RPC

内网调用链路

核心服务治理功能

服务发布:让一个服务升级运行新的代码

服务不可用,服务抖动(某几次不可用),服务回滚(升级的代码有问题,先用前一个版本)

蓝绿部署:需要两倍资源,流量接入其中一个服务,都成功再接两个服务。

灰度发布:新代码先放到原来很多个实例种加一个新实例,观察一下,如果没问题再加新实例断掉老实例,缺点是回滚难度大,基础设施要求高

流量治理,微服务架构种,可以根据地区,集群,实例,请求等维度,对端到端流量的路径精确控制。

负载均衡,一个服务多个实例,有一些策略,分配到各个实例上请求。

稳定性治理,网络攻击,流量突增等。稳定性治理功能:限流,熔断,过载保护,降级

字节服务治理实现

本地函数调用,可能出现参数非法,OOM,NPE,边界case,系统崩溃,死循环,程序异常退出...

远程函数调用,可能网络抖动,下游负载高超时,下游机器宕机,本地机器负载高,调度超时,下游熔断,限流...

重试的意义:降低错误率,降低长尾延时,容忍暂时性错误,避开下游故障。

幂等性,重试风暴,超时设置,所以重试要谨慎。

重试有可能雪崩,微服务调用链路很深,A调用B调用C调用D,D下线了,

重试策略:

限制重试比例,比如如果有百分之99的可能性失败了,就不要重试了,只有大部分情况重试成功的情况下,再重试。

重试风暴是每层都重试,理想情况下只有C到D重试,可以返回一个特殊的status,请求失败,但别重试。(这里可以考虑用在大作业里,先加粗提示一下)

接入一个内部重试的组件。.. 而不是简单for循环进行重试,错误放大系数会降低很多。