使用 Erlang,我应该如何在集群之间分配负载?

2024-02-23

我正在查看从属/池模块,它看起来与我的类似 想要,但似乎我的系统中存在单点故障 应用程序(如果主节点出现故障)。

客户端有一个网关列表(为了后备 - 全部都做 相同的东西)接受连接,并且从其中选择一个 由客户随机。当客户端连接所有节点时 检查哪个负载最少,然后查看负载最少的 IP 加载的服务器被转发回客户端。那么客户 连接到该服务器,一切都在那里执行。

总之,我希望所有节点都充当网关,并且实际上 处理客户请求。仅当以下情况时才进行负载平衡 客户端最初连接 - 所有实际数据包并在 客户端的“主”节点。

我该怎么做?


我不知道是否已经实现了这个模块,但我可以说,负载平衡被高估了。我可以说的是,随机分配工作是最好的选择,除非您知道更多的信息,了解未来的负载情况,而在大多数情况下,您确实不知道。你写的:

当客户端连接时,将检查所有节点以确定哪个节点的负载最小,然后将负载最小的服务器的 IP 转发回客户端。

您如何知道所有那些负载最少的节点不会在下一个毫秒内负载最高?您如何知道您不会包含在列表中的所有高负载节点不会在下一个毫秒内降低负载?除非你遇到非常罕见的情况,否则你真的无法知道这一点。

只需测量(或计算)节点的性能并根据它设置节点被选择的概率。无论当前负载如何,随机选择节点。将此作为初始方法。当你设置好它之后,你就可以尝试编写一些更复杂的算法。我敢打赌,要击败这个最初的方法将是非常困难的工作。相信我,非常难。

Edit:为了在一个微妙的细节上更清楚,我强烈认为您无法根据当前和历史负载预测未来负载,但您应该使用有关任务持续时间概率和任务生命周期当前分解的知识。这项工作很难实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Erlang,我应该如何在集群之间分配负载? 的相关文章

  • `ejabberdctl start` 导致“内核 pid 终止”错误 - 我该怎么办?

    我用谷歌搜索了三个小时但没有结果 我有一个 ejabberd 安装 但不是使用 apt 安装的 它是从源代码安装的 其中没有名为 ejabberd 的程序 启动和停止 一切都是通过 ejabberdctl 进行的 它完美地运行了一个月 突然
  • Erlang 中事件流(又名 CEP)的实时关联/分析有什么框架吗?

    想要分析具有某些特征 例如公共来源 的事件流 并在给定的时间窗口内 最终将这些多个事件关联起来并从中得出一些推论 最后启动一些操作 我对复杂事件处理 CEP 的有限了解告诉我 它是此类事情的理想选择 然而 在我迄今为止的研究中 我发现人们将
  • Erlang:如何从体内引用匿名函数?

    In Erlang http en wikipedia org wiki Erlang programming language 有没有办法引用当前正在执行的函数 这对于产生无限循环很有用 spawn fun gt do something
  • erlang中如何将中缀转换为后缀?

    我刚刚遇到这个帖子 https stackoverflow com questions 4621151 the shortest way to convert infix expressions to postfix rpn in c 相当
  • Erlang:NIF 和透析器警告

    在实施 NIF 时 Dialyzer 给了我 函数 crc16 1 没有本地返回 可能是因为我这样做exit在 erl 模块中 如官方文档推荐 module my nifs export crc16 1 on load init 0 ini
  • 如何在没有任何服务器的情况下创建 P2P 网络聊天?

    有没有一种方法可以在没有任何服务器的情况下创建 P2P 网络聊天 可以 但是您必须决定见面地点 如果你的朋友把他的IP发给你 你就可以连接 那么你只需要告诉更多的人加入即可 一段时间后 你会变得越来越大 然后 如果网络上的某个链接发生故障
  • 如何平衡Web服务器带宽使用?

    我有一个 drupal 商务网站 用户一直在其中上传大量图像 每个商业订单有 n 个图像 我想平衡网络流量以节省带宽 每个服务器的带宽是有限的 我无法使用传统的负载平衡解决方案 因为平衡器服务器的带宽也有限 我的数据库将位于单独的服务器上
  • Erlang停止gen_server

    我有 gen server start UserName gt case gen server start global UserName player of ok gt io format Player UserName started
  • 如何返回元素的个数?

    我必须编写一个函数 它接受一个整数列表作为参数并返回列表中小于 1 的整数的数量 到目前为止 我所拥有的是一个仅返回列表中的整数个数的函数 我不确定应该在哪里 是否放置 if 语句和计数器以仅返回有多少个整数小于 1 export num
  • RabbitMQ 失败,错误:无法连接到节点rabbit@TPAJ05421843:nodedown

    在 Windows 7 Enterprise 计算机上 我全新安装了 Erlang 17 4 和 RabbitMQ 3 4 3 x64 安装成功且顺利 我还没有尝试创建我的第一个队列或交换器 但我已经看到了麻烦 这个问题类似于另一个SO帖子
  • 使用字符串将 Erlang 映射编码为 JSON 以便通过 Javascript 进行解析?

    我正在尝试使用 Erlang 地图 例如 breakfast gt leftovers 并编码为 JSON 映射 例如 我尝试使用 jiffy 转换列表 email protected cdn cgi l email protection
  • 带功能区的 Spring Cloud 不会忽略关闭的服务器

    我正在遵循有关尤里卡客户端负载平衡的 Spring 指南 https spring io guides gs client side load balancing https spring io guides gs client side
  • Erlang 如何并发处理访问邮箱

    关于如何使用erlang邮箱的信息有很多 但很少找到一篇论文或文档描述erlang如何在VM内部同时实际访问邮箱 据我了解 Erlang VM 必须执行锁定或 CAS 操作以确保消息完整性 erlang幕后有没有什么精巧的方法 我假设您所说
  • 在 Erlang 中展平嵌套列表的列表

    我正在做练习Erlang编程 问题是 编写一个函数 给定一个嵌套列表的列表 该函数将返回一个平面列表 例子 flatten 1 2 3 4 5 6 1 2 3 4 5 6 提示 使用concatenate解决flatten 这是我的conc
  • 如何使用 ibrowse 将附件上传到 CouchDB 中的文档?

    我已经使用curl上传图像文件Penguins jpg 例如 C curl gt curl vX PUT H Content Type image jpeg http localhost 5984 DBNAME DOCID Penguins
  • 基于邻近度的负载均衡

    我正在开展一个项目 我们在世界各地拥有大量 目前为 5 台 服务器 客户端通过集中式代理连接到其中一台服务器 我们知道客户的原籍国 但除此之外一无所知 我们完全控制服务器 因此我们可以获得所需的所有信息 我们不控制客户 他们必须按照标准通过
  • 将 erlang shell 作为守护进程/服务运行

    显然 我有一个在 Erlang shell 中运行的 Erlang 程序 我想监视它 这就是我要的 当机器启动时 Erlang shell 应该随之启动 并且在 shell 中运行的程序也应该随之启动 如果 Erlang shell 由于某
  • 停止 Erlang 守护进程

    除了跑步 killall 9 beam smp 当我知道 Erlang 节点的情况时 如何以编程方式杀死它 sname 如果我不希望心跳监视器重新启动该进程 如何确保上述问题的任何答案也会终止心跳 有没有一个不错的指南来将 Erlang 部
  • Mnesia:如何同时锁定多行,以便我可以写入/读取一组“一致”的记录

    我多么希望我一开始就能表达我的问题 取一个包含 26 个键 a z 的表 并让它们具有整数值 创建一个流程 哎哟 一遍又一遍地做两件事 在一笔交易中 写入随机值a b and c使得这些值always总和为 10 在另一个事务中 读取值a
  • 使用自定义 mysql 模式的模块扩展 ejabberd?

    代替ejabberd sql https github com processone ejabberd blob master sql mysql sql L95 我正在使用自定义 MySQL 架构 由于遗留原因 我将对某些活动执行一些数据

随机推荐

  • 如何使用 JAXB 和 spring-boot 将 XML 转换为字符串?

    当我运行mvn spring boot run在包含 pom xml 文件的文件夹上 应用程序启动并将 POJO 正确序列化为 XML 但是当我通过转到目标文件夹并使用以下命令启动它时java jar在我得到的jar文件中javax xml
  • SCRIPT87:参数无效

    我有一个 jquery 函数 可以在所有浏览器中运行 但不能在兼容模式下的 ie7 和 ie 9 中运行 问题出在这个函数中 non attivo live click function clearInterval start slide
  • Servlet 3.1 - 安全约束 - 没有 web.xml

    Java Servlet 3 0 和 3 1 规范允许开发人员在 Java 代码中执行许多常见的基于配置的任务 而不是通过提供 web xml 文件的传统机制 我的应用程序已经完成了所有这些工作 但是在寻求解决应用程序安全性时 我找不到任何
  • React+Jest - 测试异步组件并等待安装

    我正在尝试测试一个具有异步功能的 React 组件componentDidMount Promise 本身不需要被嘲笑 它不一定用于访问外部内容 主要只是 props 的包装 但是 为了测试它 我需要使用wrapper update 4 t
  • 在 C++ 中将序列化的 Thrift 结构序列化到 Kafka

    我有一套structs定义于Thrift例如以下内容 struct Foo 1 i32 a 2 i64 b 我需要执行以下操作C a 序列化实例Foo转换为 Thrift 兼容字节 使用Binary or Compact节俭协议 b 将字节
  • Objective C 中的 INT32U 和 INT8U

    我在声明下方遇到错误 当声明 INT32U 时 我得到 错误 Though INT32U和 int 是 4 个字节 我如何声明 INT8U 的等价物 我不能使用 int 这里作为它的INT8U是2个字节 INT32U C Uucode IN
  • JavaScript - 动态创建 SVG 并修改光标

    假设我有一个 HTML5 画布 在本例中使用 Fabric js 并且我想更改画布上的光标以表示已选择的画笔大小和颜色 我认为应该有一种方法可以通过使用 JS 动态更改 SVG 的属性 大小和颜色 来做到这一点 这样我们就不必使用多个图像
  • React Native热重载刷新但不更新更改

    我了解 React 的基础知识 并在 React 上完成了一些个人项目 现在我开始反应本机 https facebook github io react native 所以我创建了一个新项目并运行run android命令 它完成了所有必需
  • 隐藏 UITabBarController 中的顶部栏

    如何使用 OBJ C 代码 不使用 Interface Builder 隐藏 UITabBarController 中的顶部栏 请参阅下面链接中的图片以更好地了解我的要求 http skitch com jugsvn dxkr7 iphon
  • 如何对 MIME 消息中 Content-Disposition 标头的文件名参数值进行编码?

    通过查看一些邮件的来源 我发现很多邮件都使用了 Encoded Words RFC 2047 https www ietf org rfc rfc2047 txt 格式对文件名参数值进行编码 然而 根据 RFC 2047 这种编码方法不应用
  • Facebook SDK 是否使用 IDFA 进行移动应用程序安装?

    当您集成 Facebook SDK 来跟踪移动应用程序安装时 这是否使用 IDFA 因此您是否必须回答yes提交应用程序供审核时 iTunes Connect 问题中的相应问题 这是代码中的application didFinishLaun
  • 组件宽度属性发生意外变化

    我注意到运行下面列出的程序有时会产生不需要的效果 编辑 我简化了代码以使事情看起来更清晰 我正在绘制一个字符串 它打印出当前组件的大小 我重写了 Component 类中的 getPrefferedSize 方法 并将宽度和高度分别设置为
  • Clojure 打印函数:pr 与 print

    有什么区别pr prn and print println 什么时候会使用其中一个而不是另一个 它们在以下方面有所不同 print println生产供人类消费的产出 pr prn产生读者可以阅读的输出 因此 在为人类生成输出时使用前一个函
  • Mailgun:使用解析云代码发送图像

    我有一个代码定义为 Parse Cloud define mailgunSendMail function request response var Mailgun require mailgun Mailgun initialize ph
  • 如何重定向到 root - public/index.html?

    我希望重定向到我的 application public 文件夹中的index html def get current user current user current user if current user nil redirect
  • jQuery animate() 和浏览器性能

    我有一些元素在页面上移动得非常缓慢 本质上 我在 40 秒左右的时间内减少了两个图像的左边距 从视觉上看 它的工作效果非常好 然而 在动画播放过程中 我的处理器使用率跃升至 50 左右 这也不特定于任何单一浏览器 Safari3 和 Fir
  • 如何在可编码结构中使用计算属性(swift)

    我创建了一个 可编码 结构来序列化数据集并将其编码为 Json 除了计算属性未显示在 json 字符串中之外 一切都运行良好 如何在编码阶段包含计算属性 Ex struct SolidObject Codable var height Do
  • 使用 Logback 但 Log4j 开始显示 WARN no Appenders

    我正在使用 logback 进行日志记录 但它一直在工作 前几天我开始收到警告 log4j WARN 找不到记录器 org apache axis i18n ProjectResourceBundle 的附加程序 log4j WARN 请正
  • 在 Flutter 中制作固定的应用程序范围菜单,而不是平板电脑上的抽屉

    我的应用程序有很多路线 几乎每条路线都使用带有相同抽屉菜单的 Scaffold 在应用程序内部导航 我自己的 CustomDrawer 小部件 对于大屏幕的设备 我希望始终在布局中显示左侧的菜单 而不是使用抽屉 它在Gmail应用程序中的工
  • 使用 Erlang,我应该如何在集群之间分配负载?

    我正在查看从属 池模块 它看起来与我的类似 想要 但似乎我的系统中存在单点故障 应用程序 如果主节点出现故障 客户端有一个网关列表 为了后备 全部都做 相同的东西 接受连接 并且从其中选择一个 由客户随机 当客户端连接所有节点时 检查哪个负