如图中,简单社交应用,双向好友关系,单用户好友数量有上限。redis集群中存储用户的好友列表等信息。用户消息处理通过一致性哈希分配到不同服务器处理,在redis中数据也只通过该服务器修改。
如果像下图所这种情景,用户1在好友个数即将到上限时申请加用户2为好友,同时收到用户3申请加好友请求,如果用户1同意用户3的请求,同时用户2同意用户1的请求,那么可能会出现用户1被加进了用户1的好友列表,但用户2不在用户1的好友列表的情况。怎么避免这种不一致呢?redis事务好像只能处理数据在同一节点的情况。hash tag应用不上。
--
FROM 39.144.103.*