个人技术分享

一、分布式事务

1.CAP和BASE

三者不能同时存在。
CP:由于网络分片的存在,如果要保证强一致性就不能写,此时不满足可用性
AP:由于网络分片的存在,如果要保证可用性,能读也能写,就不能保证强一致性。

BASE理论:

2.AT模式原理

添加全局锁,由事务协调者进行记录。只会说由事务协调者管理的事务不能操作这个数据,而其他的还是可以进行操作。
而XA模式开启的是数据库锁,拿到锁后别人不能进行数据库的增删改查任何操作。

其他不由事务协调者管理的事务,可能会出现去修改我们全局锁管理的数据,只是概率很低,预防措施。

AT模式会保存两份快照一个是修改前,一个是修改后。修改后的快照可以判断在第二阶段是否数据进行了修改,进行了就发出警告。

3.TCC模式

4.最大努力通知

分布式事务,解决方案就是避免产生分布式事务

二、注册中心

1.环境隔离

创建命名空间可以有一个唯一标识:

 

2.分级模型

3.Eureka和Nacos

Eureka得自己启动

使用只需要将依赖更改和配置修改

一般注册中心都会采用AP就是可用性,因为不可用的话注册都注册不了叫什么注册中心。

区别:

nacos对服务的注册发现更加敏感,

三、远程调用

1.负载均衡原理

2.切换负载均衡算法

首先对于负载均衡的配置类进行自定义

再在启动类上添加注解

nacos负载均衡先配置中的集群,再带权重的优先

四、服务保护

1.线程隔离

2.滑动窗口算法

服务保护限流熔断等等需要对请求的数量和线程数量计数

固定从窗口算法

类似于就是将窗口画小,然后每次来请求就看前一个小窗口和自己的窗口是否超过数量

这个算法就是选择多大的小区间,以及多少区间数量

3.漏桶算法

对于超过限额的策略有直接拒绝,快速失败;还有就是让它等待,等待的算法就是:漏桶算法

4.令牌桶算法

热点参数限流方法的底层就是令牌桶算法

令牌桶适合于限流的范围是可动态变换的(生成令牌的速率),成本更低,适合需要有很多限流规则的场景。热点参数限流,不是针对接口进行限流,是针对某一个接口中某一个方法的参数进行限流,可以不同参数进行不同限流,有查询商品的接口,有的商品在进行秒杀,秒杀的商品单独设置限流规则,每一个参数有一个自己的令牌桶。参数的使用上下浮动没有达到整个接口的上限是可以接受的。