假设处理用户请求的最外层系统是A系统,这里称之为微服务A。业务逻辑的伪代码如下:
1、执行若干增删改查操作。
2、调用微服务B的某个方法。B系统和A系统使用不同的数据库。后续的操作不依赖B系统方法的返回值。
3、执行若干增删改查操作。
这可能是最简单的场景了。通常做法是将上述步骤2改为:
1、将调用B方法的参数序列化为JSON串,保存在A系统的某个表里,如:t_mq_task,这样A系统可以按传统方法管理本地事务边界。
2、通过定时任务读取t_mq_task表里未发送的数据,发MQ给B系统。
3、若发生成功,标记为已发送。
这可能是最简单的,通过MQ来保证分布式事务弱一致性的方案了。