扩展的微服务实例需要更新 1

Posted

技术标签:

【中文标题】扩展的微服务实例需要更新 1【英文标题】:scaled microservices instances needs to update 1 【发布时间】:2020-12-09 07:27:58 【问题描述】:

我有一个独特的问题,试图看看什么是最好的实现。

我的表格有 50 万行。每行代表 我需要从中获取有关该实体的信息的业务实体 互联网并异步更新回表 . (此过程大约需要 2 到 3 分钟)。 我无法使用 1 个实例有效地更新所有这些行 微服务。因此计划将其扩展到多个实例 我的微服务实例是异步守护进程,每次获取业务实体 1 并处理数据并最终将数据更新回表。 .这是我在多个实例之间的问题我如何确保没有 2 个微服务实例在更新过程中与相同的业务实体(同一行)一起工作?我想实现一个最佳解决方案微服务,可能无需在应用层维护任何状态。

【问题讨论】:

【参考方案1】:

您必须使用外部系统(数据库/缓存)来保存有关每个实例的信息。

例如:Shedlock。在数据库中创建一个表或文档,用于存储有关当前锁的信息。

【讨论】:

【参考方案2】:

我建议您使用工作队列。这看起来非常适合您的问题。只需将整个数据或数据的 id 加载到队列中一次。然后让消费者消费。 你可以在这里看到一个清晰的解释 https://www.rabbitmq.com/tutorials/tutorial-two-python.html

【讨论】:

感谢您的回复这可能会导致多个消费者处理同一条消息将导致重复处理。 Thirumal 建议的棚屋将接近我正在寻找的东西.. 任何其他想法建议总是受欢迎的。 此设置不会导致任何重复处理。当消费者从队列中选择任务时,每个人都将处理单独的任务。

以上是关于扩展的微服务实例需要更新 1的主要内容,如果未能解决你的问题,请参考以下文章

将事件发布到单个微服务实例

Spring Cloud微服务实战

微服务实战:落地微服务架构到直销系统(构建消息总线框架接口)

基于springcloud的微服务实战

基于springcloud的微服务实战

微服务实战:选择微服务部署策略