我们正在使用Spring Boot和Kubernetes构建我们的第一个微服务架构。对于扩展我们的一种处理RSS feed的微服务,我有一个普遍的问题。
当前,我们大约有100个提要,并运行一个微服务实例来处理它们。提要源存储在数据库中,一旦提要被处理,它们将被写入中央Kafka队列。
我们希望增加提要的数量以及处理提要的微服务实例的数量。
我是否可以遵循任何设计模式来在可用实例数之间分配RSS提要?我将如何动态分配哪些微服务实例处理哪些供稿。
任何建议或最佳实践建议将不胜感激。
答案 0 :(得分:0)
第一个尝试是使用某些邮件系统。
您可以发送一条消息,其中包含一些“ rss feed必须被处理”,其中包含有关此任务的基本信息(feed id,链接任何内容)。
然后使所有实例实现队列中的消耗逻辑。 这样,实例将竞争处理该作业。 (显然)您在更多任务中拥有的消息越多。然后,您可以扩展微服务的数量。
答案 1 :(得分:0)
您可以使用哈希功能在您的微服务之间分发RSS feed。假设您有5个微服务实例,可以使用以下算法将RSS分配给您的微服务
hash_code = hashingAlgorithm(rss)
node_id = hash_code % num_of_nodes // 5 in this case
get_service(node_id).send(rss)
将RSS分配给微服务的过程也可以轻松扩展,您可以启动3个独立的过程从数据库中读取数据,并将RSS分配给微服务而无需任何协调。