rabbitmq 基于区间的任务处理系统的体系结构

5sxhfpxr  于 2023-06-05  发布在  RabbitMQ
关注(0)|答案(1)|浏览(237)

我们的数据库中有一个大型的站点列表和需要在此站点上以给定的时间间隔执行的命令。
表:ID、SITE、COMMANDS(json:command_name => interval minutes)
1, example1.ru, { "command_name1": 5, "command_name2": 5, "command_name3": 60}
还有一个控制台应用程序可以在站点上执行各种任务。例如:

  • 检查响应状态
  • 检查HTTPS证书
  • 搜索内容中的一些数据
  • 等等的。

我们需要设计Golang应用程序,使其可以轻松扩展(即在不同的机器上创建应用程序的多个示例)。
我想了解如何最好地组织架构?数据库中的表是结构的一个示例。也许它需要以不同的方式组织起来,以便更有效地使用。
请帮助设计,并描述什么和如何组织。
抱歉英语不好。
我看到这个选项:
1.我连接rabbitmq -它将充当执行的任务队列。

  1. Golang将工作:
    1.监听任务队列的消费者获取任务并将其交给内部工作者(goroutines)执行。执行后,最后一次执行的日期将在数据库中标记。
    1.一个单独的goroutine每分钟扫描一次数据库,查找尚未完成的任务,并将它们放入队列中等待执行。在数据库中创建任务已被带走执行(即,任务正被锁定)的注解。
pbpqsu0x

pbpqsu0x1#

其中一个可能的解决方案是使用Kafka进行锻炼。假设你已经编写了一个服务,它正在消费来自Kafka主题的消息,生产者正在其上编写要处理的任务,所以如果你在消费者组(比如processing-gp)内启动3个消费者,那么在Kafka中,通过设计,单个消费者将选择任务并处理它。Kafka可以很容易地与多个分区沿着扩展。

相关问题