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