这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
微服务架构的原理和特征
微服务架构的核心要素
-
服务治理(本节课重点)
-
服务注册
-
服务发现
-
负载均衡
-
扩缩容
-
流量治理
-
稳定性治理
-
可观测性
-
日志采集
-
日志分析
-
监控打点
-
监控大盘
-
异常报告
-
链路追踪
-
安全
-
身份验证
-
认证授权
-
访问令牌
-
审计
-
传输加密
-
黑产攻击
基本概念
服务,实例,
服务包含集群,集群包含实例,
一个实例包含一个或多个进程
服务间的通信:网络传输
增加服务注册中心,来完成服务的注册和发现
流量特征:
统一网关入口
内网通信RPC
内网调用链路
核心服务治理功能
服务发布:让一个服务升级运行新的代码
服务不可用,服务抖动(某几次不可用),服务回滚(升级的代码有问题,先用前一个版本)
蓝绿部署:需要两倍资源,流量接入其中一个服务,都成功再接两个服务。
灰度发布:新代码先放到原来很多个实例种加一个新实例,观察一下,如果没问题再加新实例断掉老实例,缺点是回滚难度大,基础设施要求高
流量治理,微服务架构种,可以根据地区,集群,实例,请求等维度,对端到端流量的路径精确控制。
负载均衡,一个服务多个实例,有一些策略,分配到各个实例上请求。
稳定性治理,网络攻击,流量突增等。稳定性治理功能:限流,熔断,过载保护,降级
字节服务治理实现
本地函数调用,可能出现参数非法,OOM,NPE,边界case,系统崩溃,死循环,程序异常退出...
远程函数调用,可能网络抖动,下游负载高超时,下游机器宕机,本地机器负载高,调度超时,下游熔断,限流...
重试的意义:降低错误率,降低长尾延时,容忍暂时性错误,避开下游故障。
幂等性,重试风暴,超时设置,所以重试要谨慎。
重试有可能雪崩,微服务调用链路很深,A调用B调用C调用D,D下线了,
重试策略:
限制重试比例,比如如果有百分之99的可能性失败了,就不要重试了,只有大部分情况重试成功的情况下,再重试。
重试风暴是每层都重试,理想情况下只有C到D重试,可以返回一个特殊的status,请求失败,但别重试。(这里可以考虑用在大作业里,先加粗提示一下)
接入一个内部重试的组件。.. 而不是简单for循环进行重试,错误放大系数会降低很多。