headsky分享 http://blog.sciencenet.cn/u/headsky

博文

基于消息表与消息状态表消除分布式事务

已有 2077 次阅读 2016-1-9 15:39 |系统分类:科研笔记

环境:

两个物理机(192.168.1.1, 192.168.1.2),

192.168.1.1实例下:

     库:A ,表a_t1,message(id, msg)

192.168.1.2实例下:

     库:B,表b_t1(与A_t1表结构相同),message_applied(id)


192.168.1.1操作流程:

begin;

 INSERT INTO a_t1 VALUES(......);

 INSERT INTO message "";

commit;


192.168.1.2

for each message in queue

 begin;

   SELECT count(*) as cnt FROM message_applied WHERE id = message.id;

   if cnt = 0 then

     SQL   operation ......

   end

 commit;

 if 上述事务成功

   //dequeue message

   DELETE FROM message_applied WHERE id = message.id;

 end

end


//其他: 在message表中加一个“处理次数”字段,如果连续处理N次未成功进入“异常处理流程”。




https://blog.sciencenet.cn/blog-521451-949239.html

上一篇:MYSQL复制错误处理
收藏 IP: 101.95.114.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-23 17:00

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部