分布式事务:java
弱一致性(基于MQ的最终一致性)redis
强一致性(基于XA二段提交的强一致性)spring
分布式JOB(任务调度)数据库
分㐊全局一致性(分布式锁)springboot
分布式场景下的session一致性服务器
CAP:网络
C:数据一致性(数据从一个事务到另外一个事务时一致的)session
A:服务可用性,全部读写请求在必定时间内获得相应,可终止,不会一直等待负载均衡
P:分钱容错性,在网络分区的状况下,被分隔的节点仍能正常对外服务框架
base理论:基本可用,服务降级
jta,XA接口,2PC
jta:java操做xa接口
jta+automatic
XA接口:全局事务(事务管理器,本地事务)
2PC:二段提交协议(准备和提交)
LCN分布式事务框架官网:http://www.txlcn.org/
一、lcn事务原理:不生产事务,只是事务的搬运工(事务协调者TX,本地事务)
二、发起方:调用其余服务接口
三、参与方:被别人调用我接口
1.建立事务分组(发起方建立事务分组,获取到分组ID,将分组ID发给事务协调者)
二、http协议,经过请求头将事务分组传递给参与方
三、参与方从请求头里面获取到事务分组ID
四、参与方获取到事务分组以后,不会去提交事务
五、lcn假关闭。发起方通知TX,TX通知参与方提交或者回滚事务。
任务调度:定时JOB,在何时进行执行代码任务
场景:标的放款与标的还款每5秒跑一次。
java实现定时任务几种方式:
Thread(死循环一直监听),
TimeTask,
线程池定时线程ScheduledExecutorService .scheduleAtFixedRate(new Runnable),1,1,TimeUnit.SECONDS),
quartz,springboot
分布式JOB如何解决幂等性:
一、分布式锁(zk、redis),保证只有一台服务器执行job,zk与redis分布式锁的区别?
二、使用配置文件,配置文件开关,加一个配置文件 start=true、false,true执行job,false不执行job,一个配置文件为true其他全为false
三、使用数据库惟一标识(年月日),成功就执行,失败就不执行,缺点:效率低。
传统任务调度 缺点:
一、执行中出现异常,就中止了,没有补充机制,只有等到下一次才会执行。
二、支持集群?随机出如今某一台机器上面执行(权重)
三、不支持路由策略(负载均衡)
四、统计(几百个服务,那些执行成功了,那些失败了,手动补偿,统一管理)
五、管理平台
六、重试屡次失败->报警、状态监控
---分布式任务调度平台(XXLJOB)(elsticjob):解决传统任务调度缺点