中文文档https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
nacos
简介
naming(命名中心)configuration(配置中心)service(服务调用)->na + co + s
下载https://github.com/alibaba/Nacos
安装,运行,startup.cmd -m standalone,在8848端口
注册中心使用
客户端pom配置
客户端yml配置
控制台可以看见服务列表,同eureka
Nacos 支持AP和CP模式的切换
配置中心使用
pom,yml配置同上
boostrap.yml
命名空间分组和 DataID 三者关系
namespace→group→profile.active<br>等效于:学校→学院→班级
集群使用(重要)
官网 https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
切换数据库
执行nacos-server-1.1.4\nacos\conf目录下sql脚本
配置application.properties
注意:时区和ssl视情况增加,不加有可能报错
Linux版Nacos+MySQL生产环境配置<br>预计需要,1个Nginx+3个nacos注册中心+1个mysql<br>
nacos集群最低3个
1.Linux服务器上mysql数据库配置,同window,可以直接用source语句执行sql文件
2.application.properties 配置,同win
3.Linux服务器上nacos的集群配置cluster.conf,配置ip+端口号即可
4.编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端口(高版本现在自带)
虚拟机内存不够使,设置nacos默认占用内存为512m(不设置默认是1g)
5.Nginx的配置,由它作为负载均衡器
成功运行
sentinel
官网https://github.com/alibaba/Sentinel
中文文档https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D
下载启动,访问8080
流控规则
可以针对每个接口或者 controller 配置的 value 值设置拦截规则
资源名就是 id,阈值类型,QPS 是单机的访问数,只允许一个访问,单机阈值的单位是 s
线程数,是 controller 只允许设置的 x 个线程进入系统
快速失败:直接返回 fallback 的结果
warmup:冷启动,阈值从设置阈的 1/3 开始慢慢上升
排队等待:在设置的时间内,会排队等待处理结果
关联:设置资源名 A 关联 B,当 B 出现问题是 A 被限流。使用场景,支付场景高压时,下单场景限流
链路:符合条件时,从链路开始和结尾都限流
降级规则
RT(平均响应时间,秒级)
平均响应时间 超出阈值 且 在时间窗口内通过的请求 >=5,两个条件同时满足后触发降级。
窗口期过后关闭断路器。
RT 最大 4900(更大的需要通过 - Dcsp.sentinel.statistic.max.rt=XXXX 才能生效)。
异常比列(秒级)
QPS >= 5 且异常比例(秒级统计)超过阈值时,触发降级;时间窗口结束后,关闭降级 。
异常数 (分钟级)
异常数 (分钟统计)超过阈值时,触发降级;时间窗口结束后,关闭降级
对比限流和降级
限流:只要超过设定阈值,直接不让进入 controller 的方法
降级:能进入 controller 的情况下,发生错误,并达到设定阈值,服务降级
@SentinelResource 配置
代码
value 就算 id
blockHander 是出现服务限流的调用返回方法
blockHanderClass 是 blockHander 方法所在类,默认在本类
fallback 是出现服务降级去找的方法,java 异常去找他
出现 java 异常去找 fallback,流控异常找 blockhander,同时异常 找 blockhander
sentinel持久化
手动配置到 nacos,nacos 实现持久化,启服务后自己去 nacos 找
seata分布式事务
分布式事务处理过程的一ID+三组件模型
全局唯一的事务ID
Transaction Coordinator (TC):事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚;
Transaction Manager (TM):控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议;
Resource Manager (RM): 控制分支事务,负责分支注册、状态汇报,并接收事务协调器的指令,驱动分支(本地)事务的提交和回滚
官网http://seata.io/zh-cn/
下载安装
配置file.conf
建立sql数据库
启动
使用@GlobalTransactional
加了这个注解,微服务调用发送错误会集体回滚
简单总结
@GlobalTransactional就是分布式事务的开始
TC为这个分布式事务分配一个全局事务id
TM可以理解为是每一个小的分布式系统(某个业务模块)保证原子性
RM是和去操作数据库
如果没出现问题,一步一步正常进行
如果出现问题,TM会通知TC自己负责的业务是否成功完成<br>TC负责通知已经完成的TM去进行回滚,TM对自己业务内的多次数据库操作(RM)回滚