分布式锁,分布式事务,分布式job

分布式事务: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):解决传统任务调度缺点

相关文章
相关标签/搜索