RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 871755
Accepted
Peter Lavreniuk
Peter Lavreniuk
Asked:2020-08-22 13:26:24 +0000 UTC2020-08-22 13:26:24 +0000 UTC 2020-08-22 13:26:24 +0000 UTC

服务之间的负载分配

  • 772

要思考的问题。

假设我有一个微服务,它可以同时解析 1 到 N 个文档/站点(以下简称为对象)。解析一个需要一分钟到 M 分钟。

假设任务是分配负载,让微服务的工作更有效率。我们不会详细介绍 - 里面是什么,它是如何工作的,什么工具用于解析,在什么基础上 - 这个任务是抽象的。

由于我们使用的是微服务架构,因此拥有多个实例而不是 1 个实例是合乎逻辑的。假设我们有 1 到 K 个微服务实例。

但是如何并行化?理论上,你可以编写另一个微服务——微服务提供者。它将从我们的解析器的当前实例中获取信息,找出当前有多少正在工作,它正在做什么,并选择有空闲槽的实例。

这里所说的槽,是指一个实例可以同时解析多少个对象,也就是同一个N。

反过来,微服务提供者将有一个对象队列用于解析,并在一定的超时时间内轮询实例以获取空闲槽,并在槽空闲时提供对象。

问题是所提出的解决方案在微服务架构上的正确性如何,即使在这个抽象的例子中,也会有滑点吗?

我会预约——然后让解析后的数据放入数据库,它们不会去另一个微服务,它们之间不会以任何方式相互同步,也许只有在提供者微服务中才有验证(检查唯一性对象)。

архитектура
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Akina
    2020-08-22T14:57:05Z2020-08-22T14:57:05Z

    您和处理者可以向供应商请求工作,而供应商 - 将工作“推”给处理者。这样的方案不是多余的吗?

    鉴于提供者没有被正式通知处理者的意图(也许他想完成他已经分配并完成的事情),我认为应该只留下来自处理者的主动请求。同时,供应商有权向处理者发送“我有工作要给你”的信号——这将允许处理者在完成当前工作但没有收到新的工作之前“睡觉”。来自供应商的信号,而不是拉它。

    此外,处理程序必须在处理完成时告诉提供者作业已完成。而那个 - 在收到此信号之前不要删除任务(或直到超时到期,之后认为处理“失败”,并且该任务必须转移到另一个执行程序)。当然,同时出现了“退出当前任务,这个刹车还是完成了”的信号……

    提供者应该有办法获取可用处理程序的当前列表。还假设提供者可以调用处理程序并请求其状态(并获得诸如“工作”、“装傻”、“休息,请勿打扰”之类的东西)作为响应。即使有必要,尝试在允许的范围内启动另一个处理程序进程,或者相反,如果没有任务,则卸载冗余处理程序,留下几个“职责”。

    • 2

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5