架构-跨库事务管理器-使用storm

分表分库后的不可避免一部分事务变为跨库事务.

根据cap原则,在保证系统整体性能情况下只能牺牲一定的一致性.

即分库后架构不支持强一致性,转为支持最终一致性.

跨库事务管理器用于汇总各个业务系统所有涉及跨库的业务逻辑,并统一规划管理,保证其最终一致性.

实现:

不支持跨多个库的大事务.每个库串行提交.出现错误立即中断.

不支持跨多个库的回滚.只回滚当前执行库的事务,之前库已成功提交的数据不做回滚.

报警+人工干预+手动重放.出错报警,管理员查看事务执行到什么阶段,支持继续从断点处执行能力.但是不支持回滚操作.

  • 进阶

自动化运维能力,自动断点续传.可设置多种续传策略,比如如,时间间隔*2自动重放策略.

 

借助storm实现该管理器:

一个topplogy是一个跨库事务集合.

其中每个库的一个数据库事务的逻辑对应一个bolt

spout发起跨库事务,准备各个事务要使用的tuple

事务号对应messgeid

事务的管理:

storm的容错机制监控会根据messageid分组,监视同组的所有的tuple是否都被bolt处理.对应到这里就是一个跨库事务.

前端可以使用activemq或者kafaka,业务将跨库事务请求相关数据发送到mq,storm从mq中取出跨库事务进行处理.

 

posted @ 2017-03-24 14:06  java林森  阅读(214)  评论(0)    收藏  举报