And*_*row 4 sharding go publish-subscribe redis redis-cluster
[更新]:当前redis将每个已发布的消息发送到整个集群中的每个节点:
/* -----------------------------------------------------------------------------
* CLUSTER Pub/Sub support
*
* For now we do very little, just propagating PUBLISH messages across the whole
* cluster. In the future we'll try to get smarter and avoiding propagating those
* messages to hosts without receives for a given channel.
* -------------------------------------------------------------------------- */
void clusterPropagatePublish(robj *channel, robj *message) {
clusterSendPublish(NULL, channel, message);
}
Run Code Online (Sandbox Code Playgroud)
这是问题的原始文本,这是不正确的:
据我所知,我需要:
给定一个通道,找到拥有该哈希槽的节点.
订阅该节点以及群集:插槽以检测迁移.
在插槽迁移时,订阅新节点上的通道并保持旧连接打开.
将消息从旧连接转发到应用程序,直到它关闭并记住这些消息.
迁移完成并关闭旧连接后,转发来自新连接的消息,修剪来自第一个连接的记忆消息.
golang redis客户端库中的任何一个都可以这样做吗?我已经浏览了很多,感觉我需要自己编写这个逻辑,不断轮询
CLUSTER SLOTS或监听该信息的pubsub,以了解分片何时增加或减少,并将我现有的pubsub脚本从一个服务器移动到另一个服务器.也就是说,即使分片数量发生变化,也有很多golang库可以处理普通的GET密钥.但是pubsub和cluster是另一回事吗?
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |