美文网首页
微服务事务保证

微服务事务保证

作者: leeliang | 来源:发表于2022-06-03 08:47 被阅读0次

保证更新db和发送消息的事务

利用数据库的事务原子性

image.png

操作如图中所示

  1. 订单服务在更新order表的同时会将消息插入到outbox表(一般在类似mysql结构中使用),这里outbox扮演了消息临时队列。或者可以给order表添加一个属性,专门用来记录需要发送的message(一般在NoSQL中使用)
  2. message relay读取outbox表中的内容
  3. message relay将读取到outbox内容发送到message broker中。当成功发送到broker中后,relay在将outbox表中对应的message删除。

优势

  • 实现简单

劣势

  • 由于要经常性的读取数据库,在数据量较大时,性能有可能不好

消费事务日志

image.png

这种方法是通过消费事务日志来获取消息,然后发送到broker中。对于log miner组件,一般采用开源的实现,主要有以下开源软件

  • Debezium
  • LinkedIn Databus
  • DynamoDB streams
  • Eventuate Tram
  • Canal(阿里出品)

优势

  • 性能良好
  • 对于数据库侵入少

劣势

  • 实现较为复杂

相关文章

  • 微服务事务保证

    保证更新db和发送消息的事务 利用数据库的事务原子性 操作如图中所示 订单服务在更新order表的同时会将消息插入...

  • 15.分布式事务Seata

    在分布式系统下,一个业务跨越多个服务或数据源,每个服务都是一个分支事务,要保证所有分支事务最终状态一致,这样的事务...

  • @Transactional回滚问题(try catch、嵌套)

    Spring 事务注解 @Transactional 本来可以保证原子性,如果事务内有报错的话,整个事务可以保证回...

  • @Transactional回滚问题(try catch)

    Spring 事务注解 @Transactional 本来可以保证原子性,如果事务内有报错的话,整个事务可以保证回...

  • zookeeper系列(五):Leader选举

    服务器各角色 leader 事务请求的唯一调度和处理者,保证集群事务处理的顺序性。(事务请求个人理解其实就是写请求...

  • 事务transaction

    什么是事务 事务的英文是transaction,事务可以保证多个操作原子性,对于数据库来说,事务可以保证批量的DM...

  • 数据库知识总结

    事务特性 ACID 原子性能保证一个事务完全执行或完全不执行,隔离性能保证事务并发执行不出错,持久性能保证写入的数...

  • 数据库相关概念

    分布式数据库 事务 什么是事务? 事务就是并发 + 锁 事务就是为了保证数据的一致性,ACID保证事务的完整性 事...

  • 微信开发——内网穿透

    微信开发需要与微信服务器交互,要保证微信服务器能向我们的服务器POST数据,我们的服务器需要能够在公网访问。这里简...

  • 破解世界性技术难题! GTS让分布式事务简单高效

    什么是分布式事务?简单的说,就是一次大操作由不同小操作组成,这些小操作分布在不同服务器上,分布式事务需要保证这些小...

网友评论

      本文标题:微服务事务保证

      本文链接:https://www.haomeiwen.com/subject/etscmrtx.html