SpringCloud + SpringCloud Alibaba分布式集群总结
eureka:
单机eureka、集群eureka
resttemplate + @loadbalance 负载均衡 调用
zookeeper:
linux docker部署zookeeper,配置注册地址
resttemplate + @loadbalance 负载均衡 调用
consul:
命令本地启动consul,8500端口页面
resttemplate + @loadbalance 负载均衡 调用
Ribbon:
Irule配置或自定义负载均衡算法,@Ribbonclient配置调用的服务和算法
手写轮询算法,CAS锁
Openfeign:
接口注解调用,默认支持ribbon自带负载均衡
ribbon超时控制,日志显示
Hystrix:
服务降级:@HystrixCommand,调用中出现错误、超时、宕机等,启用兜底方法,fallback方法分离
服务熔断:配置熔断情况,时间窗口,请求阈值,错误百分比阈值等,half open
hystrixDashboard可视化监控,监控服务访问
Zuul、Gataway:
路由转发、断言匹配、执行过滤器链,支持负载均衡
作为中转站进行路由映射,过滤器生命周期pre、post,常用过滤器:请求头、参数匹配等,自定义过滤器
Config:
服务端实时获取Github配置,文件配置映射,生产模式配置,客户端父子配置文件,设置文件映射和配置中心
Post请求动态刷新客户端配置
Bus:
支持RabbitMQ和kafka,自动进行消息监听配置中心变化,全局订阅实现配置更新,称为消息总线
加入bus依赖,rabbitmq配置,自动监听,一次发送处处生效
定点刷新,post附带服务端端口号
Stream:
统一底层差异,设置生产者、消费者、监听进行消息发送
分组消费,配置group,支持消息持久化
Sleuth:
zipkin可视化监控,本地命令启动,全局链路id关联调用链路
配置zikpin地址,采样率设置
Nacos:
nacos服务注册中心,本地命令启动,支持CP、AP切换
作为配置中心,加入配置匹配格式,配置名称空间,分组等进行匹配,自带动态刷新
namespace:环境、group:分组,不同微服务模块、service:微服务模块、cluster:集群,杭州虚拟划分,实现容灾,instance:微服务实例
持久化配置,默认嵌入式数据库derby,连接到mysql即可
nacos集群,linux docker部署,请求到Nginx集群,nacos集群,底层db集群
Sentinel:
sentinel可视化控制台,本地命令启动,yaml配置地址,默认懒加载
流控规则,
统计规则:慢调用比例,异常比例、异常数,
流控模式:直接、关联,关联的资源达到阈值限流自己、链路,统计指定资源到当前资源,对请求来源限流,
流控效果:直接、预热,阈值从冷启动因子经过预热时长后达到正常阈值,秒杀应用、排队等待,匀速排队,阈值必须为qps,处理间隔突发的流量
服务降级,降级策略:RT平均响应时间、异常比例、异常数,分钟统计,支持半开状态
热点key限流,支持参数索引,排除特殊参数。系统规则,全局限流
@SentinelResource,blockhandler:限流兜底方法,自定义限流处理逻辑,代码分离
服务熔断,整合ribbon,加上fallback即可,整合feign,消费者侧接口注解处fallback
规则持久化,yaml配置datasource,地址指向nacos,文件匹配
seata:
ID+三组件,TC全局事务协调器,TM事务提交回滚,RM分支事务、分支注册、状态汇报等
seata service本机命令启动,配置文件,数据库,nacos地址
mysql建表,seata事务表,业务数据库回滚日志表
微服务配置,文件nacos匹配,yaml配置,seata代理数据库,@GlobalTransactional,异常回滚
执行流程:一阶段加载:解析sql语句找到业务数据保存为before image,执行业务sql,保存after iamge,生成行锁,二阶段提交:顺利提交,seata删除快照和行锁,完成数据清理即可,二阶段回滚:回滚执行的业务sql,通过一阶段回滚日志进行反向补偿,用before image还原业务数据,脏写校验,对比当前和after image
分布式全局唯一id:
UUID,入库性能差、数据库自增主键,B+树索引分裂、reids集群增长步长,需要维护,雪花算法