Spring Cloud Alibaba

一、Nacos

Naocs是一个集动态服务注册、服务配置和服务管理的平台。

分布式配置中心

使用Nacos作为配置中心,优先级会高于配置文件,配置信息也被集中管理,更加高效,敏捷。
配置中有三个主要的属性,DataId(配置名称),group(配置分组),namespace(命名空间),通过@RefreshScope注解实现配置自动更新

服务注册中心

通过服务中心,服务提供者和消费者只需要通过注册中心交互就可以,降低了服务间的耦合度,应用场景有订单中心,购物车,会员中心,支付系统,商品中心等等

二、Ribbon负载均衡器

有两种负载均衡器,第一种是服务端负载均衡器 :在消费者和服务提供方中间使用独立的代理方式进行负载,有硬件和软件,硬件有F5,软件有Nginx,OpenResty和国外的Kong

第二种是客户端负载均衡器:客户端根据自己的请求情况做负载均衡,Ribbon就属于客户端负载均衡器,Ribbon有几种常见的负载均衡算法,随机,轮询,权重,响应时长和地址Hash
设置负载规则,默认的是轮询,使用自己的规则可以用注解配置或者配置文件配置
Ribbon第一次加载为什么那么慢
Ribbon默认使用懒加载,第一次访问才加载创建LoadBalanceClient,优化方法就是使用饥饿加载,在项目创建时就加载,降低第一次打开的耗时

三、OpenFeign

OpenFeign是一个声明式的Web服务客户端,可以做到使用HTTP请求远程服务时就像请求本地方法一样方便

Feign和OpenFeign的区别
OpenFeign支持spring mvc注解,整合了更多的扩展,如超时控制、请求重试策略、请求拦截器

OpenFeign的使用就是在编写调用接口时加上@FeignClient注解,在启动类上添加@EnableFeignClients注解

自定义拦截器,创建一个拦截器类,并让其继承RequentInterceptor
配置全局拦截器在配置类中配置自定义的OpenFeign拦截器
配置局部拦截器是在配置文件中对自定义的OpenFeign拦截器进行局部配置

四、Sentinel

分布式服务遇到的问题
服务可用性问题,服务雪崩效应
雪崩效应的根本原因是大量请求线程同步等待造成资源耗尽
常见的容错机制
限流:是对服务的保护,避免因瞬间高并发流量而导致的服务故障,避免雪崩问题,是预防措施
超时机制,隔离,降级,熔断是在部分服务故障 时,将故障控制到一定范围内,避免雪崩,是一种补救措施
熔断请求有三个状态,开,关,半开
Sentinel和Hystrix的区别
Sentinel支持流量整形,支持系统负载保护,控制台开箱即用,可配置规则

五、GateWay

流量网关和服务网关的区别

流量网关是提供全局性的,与后端业务应用无关的策略,如HTTPS证书认证、Web防火墙、全局流量监控、黑白名单等
服务网关:是指与业务紧耦合的,提供单个业务域级别的策略,如服务治理,token认证,负载均衡等

gateway配置项有三大属性:路由,断言,过滤器

  1. 路由:由ID,目标URL,断言集合,过滤器集合组成
  2. 断言:匹配HTTP请求中的内容
    两个主要的内置断言:PathRoutePredicate和QueryRoutePredicate
    path是匹配请求的路径,
    host是匹配请求的主机名,
    method是匹配HTTP方法,
    header:匹配请求头
    query:匹配查询参数
  3. 过滤器:有两种,前置过滤器和后置过滤器

三大案例组件

  1. 局部过滤器接口耗时
    创建一个局部接口耗时过滤器,命名规则:以GatewayFilterFactory结尾,在配置文件中加入LogTime
  2. 全局token认证
    首先创建一个全局token过滤器实现GlobalFilter接口,然后为了这个过滤器被识别并使用,需要在配置类中注册,可以加入@Comonent注解实现
  3. traceId全局链路跟踪
    首先,创建一个全局过滤器,在请求头上带入traceId参数,穿透到下游服务,下游服务中使用全链路跟踪Id,配置TranceId过滤器,启动类使用@SercleComponentScan注解开启扫描,配置文件中配置日志输出格式

六、分布式Seata

事务的四大特征

ACID

  1. 原子性(atomicity)
  2. 一致性(consistency)
  3. 隔离性(isolation)
  4. 持久性(durability)

常见分布式事务解决方案

  1. XA协议两段提交
  2. TCC三段提交
  3. 本地消息(MQ+Table)一致性
  4. 事务消息(RocketMQ)
  5. Seata

2PC和3PC的区别
2PC两个阶段:预提交和提交
3PC多了一个准备阶段,加入了超时机制
2PC存在的问题:性能问题,可靠性问题,数据一整性问题

TCC

针对每个操作,都要实现对应的确认和补偿操作
优点:粒度可以把控,性能提升,可靠性提升
缺点:业务耦合度高,提高了开发成本

Sage

核心思想是将长事务拆分成多个短事务并依次提交
两个恢复策略:向后恢复,向前恢复
优点:锁的时间短,性能高,异步执行,高吞吐
缺点:不能保证隔离性

Seata

开源的分布式事务解决方案,提供简单易用、高性能的分布式事务服务

Seata的三大角色

  1. TC:事务协调者
    维护全局和分支事务的状态,驱动全局事务的提交和回滚
  2. TM:事务管理者
    开始、提交或回滚全局事务
  3. RM:资源管理器
    管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚

TC单独部署到Server服务端,TM和RM嵌入到应用中的Client客户端
设计原理:
第一阶段:业务数据提交,分析业务sql,反分析,同时写入undo_log表
第二阶段:分布式业务操作成功,TC通知RM异步删除undo_log
分布式事务操作失败,TM向TC返送回滚请求,TC通知RM回滚刚刚写入的undo_log表数据

涉及到四个表:global_table存储的全局事务信息,branch_table存储的短事务相关的信息,lock_table此时此刻锁的行信息(行锁),undo_log存储的是在业务库中操作sql前后的镜像数据

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值