百万级聊天系统:聊天历史表的分片键该如何选择?
百万级聊天历史的分片键选择困惑
我正在设计一款需要保存聊天历史的聊天系统,系统拥有大量日活用户,聊天历史记录规模将达百万级,因此打算对存储表进行分片,但一直确定不了合适的分片键。
我曾考虑用senderId+receiverId作为分片键,这种设计下每个用户对应独立分片,分片数量等于用户总数,用户可以在自己的分片内快速检索聊天历史,但该方案存在不少弊端,比如热点问题——某用户聊天历史过多会导致对应分片负载过高。
对应的消息实体类定义如下:
class Message { @PrimaryKey private UUID messageId; private UUID senderId; private UUID receiverId; private String message; private MetaData metaData; }
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

