传统的SOA因为使用了数据总线来连接各个数据库,因此在执行某个关联多个数据库的操作时会存在分布式事务的问题,如图(1):
孢子框架是基于微服务的理念,就是自己的事情自己做主,某个业务操作如果需要连接多个数据库(图2),那么就在模块业务方法里面直接连接多个数据库,这个时候你解决不同数据库事务不就很好办了,以前没有SOA架构,最原始的做法就是这样的:
解决的算法:
Try{
DB1.数据连接.事务.begin()
DB2.数据连接.事务.begin()
……处理操作
……处理操作
DB1.数据连接.事务.commit()
DB2.数据连接.事务. commit()
}catch{
DB1.数据连接.事务. rollback()
DB2.数据连接.事务. rollback()
}
分布式事务变的简单了,业务处理变的复杂了,此种方法也只适合互联网这种业务处理本来就不是很复杂的应用。
- 1楼gzivan
- 典型的soa思想,敢问你当真实践过微服务?微服务这样解决事务的?请再参考多点资料,别误人子弟!