美文网首页
利用hashring进行客户端集群

利用hashring进行客户端集群

作者: Lupino | 来源:发表于2020-12-07 22:15 被阅读0次

我们在做延时任务的时候,任务量很大,需要用到很多个任务系统节点来执行。

通常情况下,我们用轮询的方式来解决,给一个自增的 ID,然后与服务器数量,取模,进行发送数据。

client = [client1, client2, client3]
auto_id = 0
def get_client():
    global auto_id
    auto_id += 1
    return client[auto_id % len(client)]

因为延时任务,不是马上执行,需要取消,或者更改延时时间。

所以我们必须知道任务发送给了那台任务系统,这时 hashring 派上用场了。

通过 hashring 我们可以确定每个任务发送给哪台任务系统,我们可以进行任务的取消,或更新。

from uhashring import HashRing
nodes = {}

nodes['host1'] = {
    'hostname': host1,
    'instance': client1
}
nodes['host2'] = {
    'hostname': host2,
    'instance': client2
}
nodes['host3'] = {
    'hostname': host3,
    'instance': client3
}

hr = HashRing(nodes=nodes, hash_fn='ketama')

def get_client(name):
    return hr[name]

同一个任务名称可以获取到同一个任务系统节点, 我们的要求就满足了。

相关文章

  • 利用hashring进行客户端集群

    我们在做延时任务的时候,任务量很大,需要用到很多个任务系统节点来执行。 通常情况下,我们用轮询的方式来解决,给一个...

  • Redis——Cluster

    为什么需要集群? 高并发: 大数据: 集群分区方式数据分区顺序分区哈希分区节点取余分区客户端分片:进行哈希+取余节...

  • Kafka Consumer

    客户端从kafka集群中消费数据,同时对于kafka broker的失败客户端可以自动进行处理,也可以自动的适应t...

  • Springboot整合哨兵模式Redis集群验证

    按照上步搭建好的redis哨兵集群配合Jedis客户端进行Springboot整合 1、配置 # redis 主从...

  • 前腾讯T3架构师分享:记一次 Kafka 集群线上扩容

    前段时间收到某个 Kafka 集群的生产客户端反馈发送消息耗时很高,于是花了一段时间去排查这个问题,最后该集群进行...

  • ZooKeeper总体架构

    应用使用ZooKeeper客户端使用ZooKeeper服务,客户端负责和集群的交互。ZooKeeper集群有两种模...

  • cas客户端集群无法登出问题

    问题描述 cas server 广播的登出请求,如果是接收到该请求的客户端是集群客户端,则无法确保集群的客户端能够...

  • Hadoop生态圈初识

    hadooop提供的功能:利用服务器集群,根据用户自定义的业务逻辑(利用hadoop的api),对海量数据进行分布...

  • Redis入门到高可用-8.Redis Cluster

    1.概要 呼唤集群 数据分布 搭建集群 集群伸缩 客户端路由 集群原理 开发运维常见问题 2.呼唤集群 呼唤集群1...

  • 006—Zookeeper—客户端使用-3

    利用客户端进行操作 zkCli.sh 进入客户端 create :创建子节点权限read:获取子节点 数据writ...

网友评论

      本文标题:利用hashring进行客户端集群

      本文链接:https://www.haomeiwen.com/subject/zuhxgktx.html