在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:tcc-final开源软件地址:https://gitee.com/HuanPoSui/tcc-final开源软件介绍:tcc-final介绍tcc分布式事务解决方案 通常一个请求到达网关,经由网关到APP中心,APP中心调用服务完成业务流程。这里是在APP中心里增加了ucc层,使用ucc调用服务。一个ucc代表一个完整的业务流程。 一个业务分为try、confirm、cancel方法。try执行通过,confirm、cancel必须保证能正常执行。每一个完整的业务流程都要求有一个全分布式系统唯一的tcc_id。 软件架构sql tcc-final-coretcc-final核心,包含切面的定义等。 tcc-final-conststcc-final常量定义。 tcc-springcloud-startertcc-final结合springcloud eureka使用时须导入此包。 tcc-final-cloud-eurekatcc-final结合springcloud使用例子tcc-cloud-pay-api 账户支付接口tcc-cloud-pay 账户支付业务tcc-cloud-points-api 账户积分接口tcc-cloud-points账户积分业务tcc-cloud-server eureka服务中心tcc-cloud-web-app app应用中心,在这里使用ucc调用业务tcc-final-sure 定时6秒查找因各种异常原因超过3分钟未正常执行完的ucc,然后使之正常执行完 安装教程
使用说明一个完整的分布式业务流程就是一个ucc。其try尝试执行,如try能通过,则confirm一定能正常执行通过。如果try无法执行通过,则cancel一定能正常执行通过。保证的是最终一致性,try是尝试执行,并记录业务信息,confirm是确认,cancel是回退到最初,confirm、cancel都是通过try记录的业务信息来执行的。 这里业务服务示例应该用mq或其它做一个幂等。eg。一个简单的业务,账户支付、账户加积分,最终一起成功或失败。 支付10元,加100积分。则try方法为支付账户里减10元,积分账户不动,并在 记录表里记下这次业务数据; 假设先执行的是积分服务;try都执行通过,那么confirm方法支付账户不动,积分账户里加上100积分,完成业务流程; 支付try执行不通过,则执行cancel,积分账户不动,支付账户里加上业务数据里记录的10元钱,完成业务流程。tcc-final-sure 定时6秒查找因各种异常原因超过3分钟未正常执行完的ucc,比如应用中心突然挂机了,然后调用bs执行完业务流程 更新后续1.数据库变更为多库,一表变为多表,增加并发量2.增加其它项目子包,使之能结合dubbo等其它框架使用3.更改一些方式,使之异步执行confirm和cancel各业务4.增加其它持久化方法,使之可以不一定非得用数据库来持久分布式信息5.增加一个外部记录类,代替printStackTrace,使异常信息直接输入到业务系统指定地方。默认实现为在系统控制台打印。6.分布式事务数据中心。分布式事务数据不直接物理删除,移到history表中。展现管理各分布式事务数据。7.业务示例用mq队列或其它方式做一个幂等控制 参与贡献
码云特技
|
请发表评论