开发者社区> 问答> 正文

常用的防重手段有哪些?

比防说为了防止MQ重复消费,那常用的防重手段有哪些?
除了依赖于唯一索引(防重表)之外是否还有其他的方法呢?

展开
收起
田大汪 2017-03-23 17:17:46 3963 0
8 条回答
写回答
取消 提交回答
  • 最好结合上游数据实际分布情况来考虑,比如重复数据是时间密集的,那加个分布式缓存,设置个ttl就行
    如果重复数据是时间离线的,可能需要用到数据库做长时间存储了

    2019-07-17 20:57:47
    赞同 展开评论 打赏
  • db太重,memcache来做即可,可以设置失效时间避免数据过多

    2019-07-17 20:57:47
    赞同 展开评论 打赏
  • 最好是业务做幂等,要么就是用缓存,缓存mq的唯一id。本地lru结合远程的缓存redis或者memcache

    2019-07-17 20:57:47
    赞同 展开评论 打赏
  • 可以做幂等的直接幂等,否则可以缓存消息ID来判断

    2019-07-17 20:57:47
    赞同 展开评论 打赏
  • 做幂等

    2019-07-17 20:57:47
    赞同 展开评论 打赏
  • 自己通过缓存记录下,如果已存在了就是重复了。

    2019-07-17 20:57:47
    赞同 展开评论 打赏
  • 阿里云数据库技术专家,主要从事阿里云数据库服务系统的架构设计及研发。该系统目前支撑了公有云万级实例每日逾万次次的自动化运维服务,设计的数据库高可用系统支持了mysql,mssql等万级线上实例7*24小时不间断服务。对云计算,大规模并发系统有7年以上的系统架构及研发经验。

    可以使用redis 来做key 的缓存,速度更快

    2019-07-17 20:57:46
    赞同 展开评论 打赏
  • 可以用个kv store当缓存保存已经消费的主键,一般MQ重复消费的间隔时间很短,业务允许的话可以设置过期时间,即在n分钟内不重复消费,这样对数据库的设计、性能压力会减小

    2019-07-17 20:57:46
    赞同 展开评论 打赏
滑动查看更多
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
代码未写,漏洞已出——谈谈设计不当导致的安全问题 立即下载
微信客户端怎样应对弱网络 立即下载
如何保证移动应用的稳定性 立即下载