问题标签 [akka-cluster]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
akka - 使用 Akka 进行跨服务调用
我正在使用新发布的 Akka.Net 1.0(恭喜发布!)所以这对我来说都是新的,但我很确定任何有 JVM Akka 经验的人也可以加入,因为在问题。
让我们考虑几个(例如,2个)单独的服务,它们是更大的系统/应用程序的一部分。这些服务通常做自己的事情,但有时需要跨服务调用。假设它Service 2
可以是独立的并且有一个GetStuff
动作。Service 1
有一个DoSomething
动作,它必须首先得到GetStuff
动作的结果。
当两种服务都可以单独部署到不同的机器上时,处理这种情况的首选方法是什么?
正如我所说,我对 Akka 了解不多,但是通过示例、文档和源代码挖掘,我发现了两个选项:
- 远程处理。在他们自己的服务中分离参与者系统,
Remoting
用于ActorSelection
从远程主机获取。它与Remoting docs example几乎相同,只是两个参与者系统将是相等的“客户”。 - 聚类。我正试图解决这个问题,我现在能想到的最多的是设置一个单独的集群服务,它只是设置集群系统,创建一个简单的侦听器参与者,以便种子节点可以正确初始化(?)。然后在他们自己的服务中创建的每个单独的参与者系统将以不同的角色加入到所述集群系统中。
也许还有另一种我不知道的解决方案......?
就个人而言,集群解决方案乍一看似乎更难掌握和设置,但也许有一些我现在看不到的显着优势。
重申一下,处理这种情况的首选方法是什么,我应该注意什么?
akka - Akka 集群:如何禁用 ClusterHeartbeat 日志
我正在玩一个 Akka 集群,我有一个有 2 个节点的设置。不出所料,两个节点通过心跳互相聊天说他们还活着。所以每一秒我的日志中都有一个这样的字符串
但是我不想看到这个诊断,因为它隐藏了我的调试信息,而且我很确定集群可以正常工作,因为我的机器上由两个 JVM 组成。我试图改变配置
但它似乎不适用于这种情况。如何从日志中隐藏此信息?
akka - 使用喷雾的 Akka 集群的性能
我正在使用 Akka 和 Spray 构建一个 RESTful API。我正在使用 Typesafe Akka Cluster Sample 项目...
(http://www.typesafe.com/activator/template/akka-sample-cluster-scala)
作为参考。我有一个使用路由池和集群感知路由的集群。API 的接口是通过一个喷雾前端创建一个参与者 (ClusterClient),它充当集群的前端并监控集群活动(新节点、停机节点等)。当请求进入喷射路由时,我通过集群感知路由器将工作委托给集群后端工作人员。
我的希望/目标是我可以通过根据需要添加更多后端工作节点和路由来提高系统的性能。我还可以添加更多将通过负载均衡器访问的前端(喷雾)节点。我正在尝试构建一些高性能和可扩展的东西。
这一切都很好。此刻的工人演员只是返回一个字符串进行测试。
在继续之前,我想通过对应用程序进行压力测试来了解当前的集群性能。所以我正在使用 apache bench 进行一些快速测试。
所有的测试都在我的本地开发机器(QuadCore Macbook Pro with 16gb RAM)上完成。该应用程序在喷雾罐上运行。前端(spray)和后端节点通过使用不同的端口在同一台机器上的不同 JVM 上启动。
奇怪的是,当我向集群添加更多后端节点时,性能似乎会下降。这是我的测试和结果。我每次测试运行大约 10 次以获得更好的平均值...
一个后端节点
两个后端节点
三个后端节点
这是预期的吗?即我认为我应该通过添加更多后端/工作节点来获得更多性能是错误的吗?根据上面的数据,我添加到集群中的节点越多,性能就会变得越差。这可能与在同一台机器上运行测试有关吗?
谢谢
akka - 在 Akka 集群中发送大消息(> 200MB)
我必须在 akka-cluster 中从一个参与者向多个参与者发送大小约为 200MB 的大消息。我曾尝试使用 akka 消息传递,但它会超时,因为它需要很长时间。
实现这一点的最佳方法是什么?我在某处读到我们需要使用 Akka IO 来完成此类任务,但我找不到足够的文档来说明如何使用它。
playframework - 玩 Akka 集群 dist
我正在构建一个应用程序,其中 Play 作为前端,akka 集群作为后端。现在两者都在同一个 sbt 项目下。使用 sbt 中的“dist”,我只能得到一个 .zip 包,其中包含启动脚本和 akka 集群的脚本。所以我想知道是否有一种方法可以生成多个包,例如一个用于 Play,一个用于 akka 集群,以便我可以轻松部署每个包。或者对于此类项目是否有任何推荐的良好做法?
akka - 将 ActorRef 作为构造函数参数传递
我是 Akka 的新手,我正在构建一个包含许多远程节点的集群系统。远程节点称为工人。工作人员创建远程路由器链。
创建路由器的父级(工人)将有一个统计观察者,该观察者将从路由器的所有路由中获取消息。
qn is : Is 在创建路由器时传递 statswatcher actorRef 作为路由器的构造函数参数或者只是传递 statswatcher 的actor路径作为构造函数参数和路由器中的用户actor选择来告诉消息是一种很好的做法。
**************** 更新 ********
根据来自 akka 邮件组的回复,将 actor ref 作为构造函数参数的回复并不是一个坏习惯。演员选择对于远程演员查找很有用。
akka - 如何使用 Tcp 增加 Akka IO 中的 Tcp Chunk 大小
我正在使用 Akka-Cluster 并通过 Tcp 使用 Akka IO 通过网络发送大型对象。数据被切割成非常小的块。通过 'Received' 消息接收到的数据 ByteString 的大小非常小(大约 7KB)。是否有任何配置设置可以让我一次发送和接收更大的字节字符串?
singleton - 存在单例时如何在akka集群中配置停机
我在 Akka 的文档中读到,当使用集群单例时,应该避免使用自动停机。我不明白在这种情况下应该如何配置downing。我了解我可以订阅集群成员事件并根据这些消息计划我的策略。但是,我不明白它与自动下降有何不同。
当一个节点以某种方式从集群中分区时,如果使用自动关闭,分区节点将“认为”整个集群丢失并启动它自己的集群(使用它自己的单例)。但是,另一方面,我不能将无法访问的节点永远保持在无法访问的状态,因为集群不会达到收敛(新节点将无法加入),并且如果分区节点是单例本身,那么一个新的单例节点不会被分配,因此,根据我的理解,唯一要做的就是在一段时间后删除无法访问的节点,这正是自动关闭所做的。
我在这里想念什么?
akka - What's the best way to get members of an Akka cluster?
If I have an Akka cluster, what is the best way to access a list of members of that cluster?
I can listen for events and manage my own registry on each node in my cluster. I can also use Cluster(system).state but according to the docs this isn't necessarily in-sync with the published events. Is one of these preferred/better?
My use case is this:
我有一个包含各种服务(不同角色)的集群。当我需要特定角色的服务时,我会在集群中的所有节点列表中进行过滤,以获取具有我需要的角色的节点,然后随机选择其中一个进行通信。这就是为什么我想要集群中所有节点的列表。
这是实现此用例的最佳方法吗?
java - java - 如何在java中向AKKA集群中的所有参与者广播消息?
我有一个名为ClusterSystem的 AKKA 集群系统。该集群的每个节点都有一个演员ActorA。我想要一种将发送给参与者的消息广播到集群中运行的所有ActoraA -s 的方法。
如果有人可以用 Java 发布一个示例,那将是非常有帮助的。