Spring Cloud Alibaba
一、Nacos
Naocs是一个动态服务注册中心、服务配置和服务管理中心。
分布式配置中心
使用Nacos作为配置中心,优先级会高于配置文件,配置信息也被集中管理,更加高效,敏捷。
有三个主要的属性,DataId(配置名称),group(配置分组),namepace(命名空间),通过@RefreshScope实现配置自动更新
服务注册中心
通过服务中心,服务提供者和消费者只需要通过注册中心交互就可以了降低了服务间的耦合度,应用场景有订单中心,购物车,会员中心,支付系统,商品中心等等
二、Ribbon
有两种负载均衡器,第一种是服务端负载均衡:有硬件和软件件,硬件有F5,软件有Nginx,OpenResty和国外的Kong
第二种是客户端负载均衡器,Ribbon就属于客户端负载均衡器,有几种常见的负载均衡算法,随机,轮询,权重,响应时长和地址Hash
设置负载规则,默认的是轮询,使用自己的规则可以用注解配置或者配置文件配置
三、OpenFeign
OpenFeign是一个声明式的Web服务客户端,可以做到使用HTTP请求远程服务时就像请求本地方法一样方便
Feign和OpenFeign的区别
OpenFeign支持spring mvc注解,整合了更多的扩展,如超时控制、请求重试策略、请求拦截器
OpenFeign的使用就是在编写调用接口时加上@FeignClient注解,在启动类上添加@EnableFeignClients注解
自定义拦截器,创建一个拦截器类,并让其继承RequentInterceptor类
配置全局拦截器在配置类中配置自定义的OpenFeign拦截器
配置局部拦截器是在配置文件中对自定义的OpenFeign拦截器进行局部配置
四、Sentinel
常见的容错机制
雪崩效应的根本原因是大量请求线程同步等待造成资源耗尽
限流:是对服务的保护,避免因瞬间高并发流量而导致的服务故障,避免雪崩问题,是预防措施
超时机制,隔离,降级,熔断是在部分服务故障 时,将故障控制到一定范围内,避免雪崩,是一种补救措施,熔断请求
有三个状态,开,关,半开
Sentinel和Hystrix的区别
Sentinel支持流量整形,支持系统负载保护,控制台开箱即用,可配置规则
五、GateWay
流量网关和服务网关的区别
流量网关是提供全局性的,与后端业务应用无关的策略,如HTTPS证书认证、Web防火墙、全局流量监控、黑白名单等
服务网关:是指与业务紧耦合的,提单个业务域级别的策略,如服务治理,token认证,负载均衡等
gateway配置项有三大属性:路由,断言,过滤器
- 路由:由ID,目标URL,断言集合,过滤器集合组成
- 断言:
path是匹配请求的路径,
host是匹配请求的主机名,
method是匹配HTTP方法,
header:匹配请求头
query:匹配查询参数 - 过滤器:有两种,全局过滤器和局部过滤器
三大案例组件
- 局部过滤器接口耗时
创建一个局部接口耗时过滤器,命名规则:以GatewayFilteractory结尾,在配置文件中加入LogTime - 全局token认证
首先创建一个全局token过滤器实现GlobalFilter接口,然后为了这个过滤器被识别并使用,需要在配置类中注册,可以加入@Comonent注解实现 - traceId全局链路跟踪
首先,创建一个全局过滤器,在请求头上带入traceId参数,穿透到下游服务,下游服务中使用全链路跟踪Id,配置TranceId过滤器,启动类使用@SercleComponentScan注解开启扫描,配置文件中配置日志输出格式
六、分布式Seata
事务的四大特征
ACID
- 原子性(atomicity)
- 一致性(consistency)
- 隔离性(isolation)
- 持久性(durability)
常见分布式事务解决方案
- XA协议两段提交
- TCC三段提交
- 本地消息(MQ+Table)一致性
- 事务消息(RocketMQ)
- Seata
2PC和3PC的区别
2PC两个阶段:预提交和提交
3PC多了一个准备阶段,加入了超时机制
2PC存在的问题:性能问题,可靠性问题,数据一整性问题
TCC
针对每个操作,都要实现对应的确认和补偿操作
优点:粒度可以把控,性能提升,可靠性提升
缺点:业务耦合度高,提高了开发成本
Sage
核心思想是将长事务拆分成多个短事务并依次提交
两个恢复策略:向后恢复,向前恢复
优点:锁的时间短,性能高,异步执行,高吞吐
缺点:不能保证隔离性
Seata
开源的分布式事务解决方案,提供简单易用、高性能的分布式事务服务
Seata的三大角色
- TC:事务协调者
维护全局和分支事务的状态,驱动全局事务的提交和回滚 - TM:事务管理者
开始、提交或回滚全局事务 - RM:资源管理器
管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚
TC单独部署到Server服务端,TM和RM嵌入到应用中的Client客户端
设计原理:
第一阶段:业务数据提交,分析业务sql,反分析,同时写入undo_log表
第二阶段:分布式业务操作成功,TC通知RM异步删除undo_log
分布式事务操作失败,TM向TC返送回滚请求,TC通知RM回滚刚刚写入的undo_log表数据
涉及到四个表:global_table存储的全局事务信息,bran_table存储的短事务相关的信息,lock_table此时此刻锁的行信息(行锁),undo_log存储的是在业务库中操作sql前后的镜像数据