springcloud 中使用redis以及rabbitMQ实现分布式事务

分布式事务的补偿机制,在很多成熟的案例都是使用TCC机制,来实现资源冻结,以及提交,失败则释放资源,很多情况下,处理业务的特殊情况需要对不支持事务的redis进行手动的事务补偿。
比如,现在人脸识别入库的服务,算法识别人脸的服务,这两个是依赖性比较高的服务,而且存在长事务,如果需要查询频繁的操作,就需要把数据放到redis,缓存 减轻数据库的压力,而发生事务的操作,在方法上即使使用了@Transactional注解只是针对有事务性质的JDBC操作,而redis则需要手动的事务补偿,进行异常后处理。
通常的做法是人脸识别的事务先提交,返回事务的结果,然后算法库识别事务进行,如果算法事务出了异常,就回滚操作,而人脸识别的事务再做事务的回滚,做到的是最终一致性
即使后面使用rabbitMQ来处理这种事务补偿,最终也只能达到最终一致性,RabbitMQ提供,类似TTL,DLX等定时任务的操作,这种针对秒杀,定时付款等场景还是挺适用,但是对数据要求实时强一致性,可能就需要到zk+dubbo之类的RPC框架来支持。后续这个专题,尝试从其他的资料找到相应的实际的解决分布式事务的补偿机制的更好实现提供给读者。
目前本月的专题为springcloud结合人工智能项目的实践,如果需要代码可以留言获取,截图的代码为慕课网的实例。

猜你喜欢

转载自blog.csdn.net/weixin_30947631/article/details/85062241
今日推荐