`
zy116494718
  • 浏览: 470504 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

redis实现分布式一致性事务

 
阅读更多

       我们经常会遇到一种情况,就是方法中会调用本系统的方法做一些操作,然后再调用外系统方法做一些操作,这里当本系统方法执行成功,而外部系统方法执行失败的时候,往往我们需要回滚或者进行补偿操作,这里我们可以用redis实现。

      

        //更新数据库, 操作之前先记redis
        String seckillCheckedListKey = "secKillCheckedList";
        String valKey = applyWare.getId() + "_" + DateUtil.formatDateTime(new Date());
        this.redisClient.sadd(seckillCheckedListKey, valKey);
        boolean success = checkFlowOperate.checkApply(checkApplyParam);  ①
        LogTypeEnum.ROUTINE_CHECK_RECOMMEND.warn("checkupdate applyWareId={} db success={}", applyWare.getId(), success);
        if (!success) {
            result.setResultCode("审核通过操作失败,请稍后重试!");
            return result;
        }
        //重新索引,创建促销
        LogTypeEnum.ROUTINE_CHECK_RECOMMEND.warn("checkupdate applyWareId={} solr begin", applyWare.getId());
        BaseParam baseParam = checkFlowOperate.indexMQOpt(OperateType.ADD,checkApplyParam, pageView.getRoleType()); ②
        LogTypeEnum.ROUTINE_CHECK_RECOMMEND.warn("checkupdate applyWareId={} solr finish", applyWare.getId());
        
        redisClient.srem(seckillCheckedListKey, valKey);//操作成功删除redis中的审核标识

    这里 ① 为本地对数据库的操作,②为刷solr和推MQ的操作,有可能①成功而②失败,这样需要记录下这类情况,然后进行处理,所以这里会刚开始的时候会存入到redis中,然后执行完①②后再把redis中的这条数据给去掉,这样可以用一个定时器去跑,然后从redis中取得有问题的数据后循环执行,补刷solr和发MQ,然后再从redis中去掉。

0
2
分享到:
评论

相关推荐

    fat:基于springboot,zookeeper,redis分布式事务强一致性方案

    脂肪FAT,基于springboot,使用zookeeper,redis,spring异步,spring transactionManager的强一致性分布式事务解决方案框架介绍纯编码方式,强一致性。使用redis / zookeeper作为注册中心,代理事务的执行,使用...

    如何操作Redis和zookeeper实现分布式锁

    在分布式场景下,有很多种情况都需要实现最终一致性。在设计远程上下文的领域事件的时候,为了保证最终一致性,在通过领域事件进行通讯的方式中,可以共享存储(领域模型和消息的持久化数据源),或者做全局XA事务...

    基于springboot , zookeeper , redis 分布式事务强一致性方案+源代码+文档说明

    FAT ,基于springboot , 使用zookeeper,redis , spring async , spring transactionManager的强一致性分布式事务解决方案 ## 框架介绍 纯编码方式,强一致性。 使用redis/zookeeper作为注册中心 ,代理事务的执行...

    rabbitmq分布式事务

    基于rabbit和本地消息表实现可靠消息一致性分布式事务,项目下载下来直接可以用了,已经包含了配置文件和数据库脚本,有问题的可以给我私信。项目架构springboot、nacos、rabbitMq、redis、MySQL

    分布式事务的实现原理

    在SOA与微服务架构大行其道的今天,在分布式的多个服务中保证业务的一致性就需要我们实现分布式事务。在文章的开头,我们已经说过事务是数据库管理系统执行过程中的一个逻辑单位,它能保证一组数据库操作要么全部...

    基于Redis分布式锁的实现代码

    概述 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。...在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分

    java面试最全八股文

    1. 使用Redis实现分布式锁 * WATCH, MULTI, EXEC, DISCARD事务机制实现分布式锁 * SETNX实现分布式锁 * 锁的释放 2. 使用Memcached实现分布式锁 3. 使用ZooKeeper实现分布式锁 获取锁 释放锁 获取锁 释放锁 Spring ...

    分布式Redis协议兼容的NoSQL数据库-Golang开发

    与Redis协议完全兼容具有高度一致性的完全分布式事务多租户支持Titan基于TiKV的Redis兼容层的分布式实现为什么选择Titan? 完全兼容Redis协议具有强一致性的完全分布式事务多租户支持无痛苦的横向扩展高可用性感谢...

    2阶段提交分布式事务中间件,一致性分布式事务框架

    一致性分布式事务框架。支持所有弹簧版本,无缝集成。提供对 springcloud dubbo motan RPC 框架的支持。提供 Spring Boot Starter 方法的集成。支持嵌套事务。本地事务存储支持:redis mongodb zookeeper 文件 mysql...

    Redis构建分布式锁

    的确,redis中的事务可以watch可以监控数据,从而能够保证连贯执行的时数据的一致性,但是我们必须清楚的认识到,在多个客户端同时处理相同的数据的时候,很容易导致事务的执行失败,甚至会导致数据的出错。...

    26章全Java主流分布式解决方案多场景设计与实战

    4.如果让你手撸实现Redis分布式锁,你可以做到吗? 2、分布式事务 1.你知道为什么CAP不能同时满足吗? 2.你了解不同分布式事务解决方案对应什么样的应用场景么 ? 3.你知道为什么大多数业务场景都选择了最终一致性...

    通过LCN实现分布式事务

    TX-LCN定位于一款事务协调性框架,框架其本身并不操作事务,而是基于对事务的协调从而达到事务一致性的效果。在一个分布式系统下存在多个模块协调来完成一次业务。那么就存在一次业务事务下可能横跨多种数据源节点的...

    2023年Redis缓存面试题目汇总

    包括以下是常见的一些Redis...在分布式环境下,如何解决Redis的节点一致性问题? Redis的内存管理是如何进行的? 你如何监控Redis的性能? 在Redis中,如何进行大量的写操作? Redis的将来版本可能会增加什么样的功能?

    Redis面试题50道(含答案)_.pdf

    39、支持一致性哈希的客户端有哪些? 40、Redis 与其他 key-value 存储有什么不同? 41、Redis 的内存占用情况怎么样? 42、都有哪些办法可以降低 Redis 的内存使用情况呢? 43、查看 Redis 使用情况及状态信息用...

    完结26章Java主流分布式解决方案多场景设计与实战

    java中常用的分布式方法有哪些呢? 分布式系统分布式存储:GFS,HDFS(HBase) 分布式计算系统: MapReduce 消息中间件: Kafka 分布式处理管理器: Zookeeper ...3.实战Seata事务解决下订单减库存一致性问题 4.实

    基于Springcloud+mysql的分布式架构网上商城设计与实现(源码+设计文档+部署说明+视频演示).zip

    分布式数据一致性:系统通过分布式事务处理,保证多个服务之间的数据一致性,如使用分布式事务管理器(如Seata)或采用最终一致性方案(如异步消息队列)。 分布式缓存:系统使用分布式缓存,如Redis、Memcached等...

    最详细Redis学习资料(源码)

    原子性操作:Redis支持原子性操作,能够保证多个操作的执行顺序和一致性,支持事务和流水线操作。 发布/订阅:Redis提供了发布/订阅功能,能够实现消息的异步发布和订阅,适用于实时通知、事件驱动等场景。 分布式...

    redis经典面试题详细

    如何保证缓存与数据库双写时的数据一致性? Redis常见性能问题和解决方案? Redis官方为什么不提供Windows版本? 一个字符串类型的值能存储最大容量是多少? Redis如何做大量数据插入? 假如Redis里面有1亿个key,...

    redis面试复习.xmind

    # redis事务 ### 一个简单的介绍并说明了一下resdis事物的不保证原子性 # redis集群 ### redis集群三种模式 ### Redis哈希槽 ### 什么情况下会导致整个集群不可用 ### 集群三种方案之间都有哪些区别,其优点和缺点是...

Global site tag (gtag.js) - Google Analytics