带去重的生产者水平扩容方案咨询——分布式系统设计求助
分布式消息接收与去重方案咨询
背景
- 第三方服务器每分钟发送n>5000种消息
- 需接收消息并传递到自身系统,每条消息必须送达所有消费者
- 部署多个服务副本,每个副本订阅全部n种消息,需实现去重机制,避免消费者被大量重复消息淹没
现有思路
思路一:基于Redis Cluster的去重方案
- 方案内容:使用Redis Cluster进行去重,消费者可直接从Redis读取消息,或通过Kafka Connect将消息发送至Kafka Topic
- 顾虑:不确定少量副本的Redis Cluster能否支撑
17000*副本数的RPS负载,且不确定同一消息能否被多个服务读取
思路二:主服务器分配消息方案
- 方案内容:配置一台主服务器将n种消息均匀分配给各副本,每个副本仅向Topic写入主服务器指定类型的消息,同时读取所有消息,超时后与Topic校验,补全缺失的消息
- 问题:若某一副本宕机且未完成消息发送,其他副本会发送大量重复消息,需依赖主服务器进行重新平衡
需求
希望得到更简便的实现方案
内容的提问来源于stack exchange,提问作者Men
相关产品推荐
相关产品推荐

