集群任务均衡的一种实践

集群任务均衡的一种实践
场景:
任务多,例如从kafka拉取消息的任务,每个kafka topic的partition是一个任务,每个任务是一个线程,此类任务数量还比较多,拉取也比较频繁。这类任务如何均衡的分散到集群的机器上呢?
目前的任务分配策略如下
在这里插入图片描述

● 启动时,执行器从任务池中捞取所有需要执行的任务
● 每个任务启动一个线程执行
● 任务的逻辑如下
○ 抢锁,抢任务执行的锁,抢到锁的执行任务
○ 不断的拉取消息
○ 处理消息
○ 。。。
举例,例如任务A,执行器1抢到了该任务的锁,则其他执行器只能等待,或重试,当执行器1抢到了锁,其他所有的执行器都是任务A的冷备机器,如果执行器1挂了,则其他执行器可以立即上线执行任务。
但这么做会有一些极端的情况,例如集群有三个执行器,执行器1先启动,执行器1就会把任务池中所有的任务全包揽了,执行器2、3启动时,会因为抢不到任何一个任务的锁,一直处于空闲等待状态。执行器1则一直很忙碌,如果任务比较多或重,很有可能导致执行器1直接挂掉,然后由执行器2,执行器3处理所有的任务,对执行器2,执行器3来说仍然会有崩溃的风险。

如何能够将任务均分到集群的各个机器呢?后来我们优化了一版,架构如下
在这里插入图片描述

● 配置任务池对应的执行器个数,例如 executor.num=3
● 执行器启动后,会注册到zk,通过zk临时顺序节点机制,得到一个id
● 根据id及executor.num,对任务池中的任务分片,每个执行器只处理自己对应的分片任务

这样任务分布就均衡了。另外为了防止单个执行器宕机,支持增加冷备机器,例如id=4的机器就是id=1的冷备,但每个执行器都有个冷备也是很耗费资源的。(有点类似于redis的集群架构方案)
因此,这里也可以优化,比如id=2的执行器,也注册个虚拟节点id=4,作为id=1的冷备,id=3的机器,注册个id=5的机器,作为id=2的冷备。
我们实际实践中,并没有使用冷备的方案,而是借助运维手段实现的。因为线上所有的机器都是k8s管理的,部署在容器中,k8s中提供了崩溃恢复的能力,可满足我们的需求,这样也减少了我们的成本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: PostgreSQL是一种开源的关系型数据库管理系统,它支持高可用性集群部署,可以提供数据的持久性和可用性。以下是关于PostgreSQL高可用集群的装指南简述: 1. 集群环境准备:首先需要准备一组具有相同操作系统和网络配置的物理或虚拟机。确保集群中的所有节点都可以互相通信。 2. 安装和配置PostgreSQL:在每个节点上安装PostgreSQL软件,并在配置文件中设置适当的参数。确保所有节点的配置文件保持一致。 3. 数据同步和复制:为实现高可用性,需要使用PostgreSQL内置的复制功能。使用流复制或逻辑复制将数据从主节点复制到备份节点。 4. 主备切换和故障恢复:在主节点发生故障,需要手动或自动触发主备切换。保证备份节点可以接管主节点的功能,并尽快恢复服务。 5. 自动化监控和管理:为了更好地管理和监控集群,可以使用一些工具和脚本来自动化任务,例如监控节点状态、日志检查和备份。 6. 容灾和故障转移:为了应对更严重的故障,可以在不同的地理位置设置多个节点,以实现容灾和故障转移。在这种情况下,需要考虑数据同步的延迟和网络带宽等因素。 7. 安全性和权限管理:在配置高可用集群,务必考虑数据的安全性。设置适当的访问权限并实施加密和身份验证措施。 总之,PostgreSQL高可用集群的装指南包括安装和配置PostgreSQL、数据同步和复制、主备切换和故障恢复、自动化监控和管理、容灾和故障转移以及安全性和权限管理等内容。通过合理地设置和管理,可以确保PostgreSQL数据库具备高可用性和可靠性。 ### 回答2: PostgreSQL是一个开源的关系型数据库管理系统,它支持高可用集群配置,以确保数据库系统的可用性和容错性。以下是一个关于PostgreSQL高可用集群配置的装指南。 1.选择合适的架构:在配置PostgreSQL高可用集群之前,首先需要选择适合你的架构。常见的架构包括主-从复制、主-主复制和基于分布式数据库的架构。根据你的需求和资源预算选择适合的架构。 2.配置主-从复制:主-从复制是最简单和常见的PostgreSQL高可用架构。配置主-从复制需要设置一个主数据库和一个或多个从数据库。主数据库接收写入操作,并将更新传播给从数据库。配置主-从复制需要在主数据库和从数据库之间设置流复制。 3.配置主-主复制:主-主复制架构允许多个节点同接收写入操作。这种架构可以提高系统的容错性和可用性。配置主-主复制需要设置多个相互同步的节点,并使用流复制来实现数据同步。需要注意的是,主-主复制可能导致数据冲突,因此需要进行一些额外的配置和管理。 4.配置自动故障转移:为了实现高可用性,当主节点遇到故障,需要配置自动故障转移。自动故障转移可以自动将故障节点替换为备用节点,以确保数据库系统的连续性。可以使用软件工具或自定义脚本来实现自动故障转移。 5.监控和管理集群:为了确保高可用集群的稳定性和性能,需要定期监控和管理集群。可以使用PostgreSQL提供的监控工具,如pg_stat_replication和pg_stat_activity,来监控数据库状态和查询性能。另外,还可以使用第三方的监控工具来监控集群的运行状况。 以上是关于PostgreSQL高可用集群配置的一些基本指南。具体的配置方法和工具选择可能会因环境和需求而异,建议在实际操作中参考官方文档和相关资料,以确保配置正确和可靠。 ### 回答3: PostgreSQL是一种非常强大的开源数据库管理系统,在构建高可用性集群,可以采用以下指南: 1. 安装和配置PostgreSQL:首先,需要在每个节点上安装和配置PostgreSQL。可以从官方网站下载适用于您的操作系统的最新版本,并按照说明进行安装。确保在每个节点上进行相同的配置,包括数据库路径、监听地址和端口等。 2. 设置主从复制:在高可用性集群中,通常会将一个节点作为主节点,其他节点作为从节点。主节点负责处理写操作,而从节点负责处理读操作。在主节点上进行设置,以使其将更改记录到WAL(Write-Ahead Log)并发送给从节点,从节点可以通过流复制技术将更改同步到自己的本地数据库。 3. 配置复制流:在从节点上配置复制流以接收主节点发送的更改。可以使用PostgreSQL提供的pg_basebackup工具来进行复制流设置。确保在从节点上指定主节点的地址和端口,并指定复制流的用户名和密码。 4. 配置故障切换:在高可用性集群中,当主节点发生故障,必须能够实现自动故障切换。这可以通过使用PostgreSQL的流复制和触发器来实现。可以编写一个触发器,当检测到主节点故障,自动将一个从节点提升为新的主节点,并将其他从节点重新配置为复制新的主节点。 5. 监控和管理:在构建高可用性集群,需要定期监测各个节点的状态和性能。可以使用PostgreSQL自带的工具,如pg_stat_replication和pg_stat_activity来监控复制状态和数据库活动。此外,还可以使用第三方监控工具,如Zabbix或Nagios来实监测集群的运行状态,并及采取措施应对潜在的故障。 在配置和管理PostgreSQL高可用性集群,请确保备份数据库,定期更新软件版本,并遵循最佳实践和安全措施,以确保数据的完整性和可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lanicc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值