问题标签 [akka-remoting]

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.

0 投票
1 回答
322 浏览

c# - 用于远程处理的 Akka.NET 配置设置

我正在使用Akka.NET github上的示例来玩一些基本的远程处理。

在 GitHub 提供的远程处理示例中,Akka.NET 的配置字符串中有以下部分。

  1. 正斜杠 / 表示什么?这是评论还是只是文件的格式?

  2. 路由器选项“循环池”控制什么?我可以看到它映射到以下类,但我希望有人可以解释 akka.routing 在远程处理场景中的实际含义?我假设这与 url 或 ips 的映射方式有关吗?

任何澄清将不胜感激。

0 投票
1 回答
2068 浏览

c# - 让 Akka.NET 连接到远程地址

我发现的所有演示如何开始在 Akka.NET 中进行远程处理都展示了两个参与者使用 localhost 在同一台机器上运行的最简单的用例。

我试图让 Akka.NET 演员连接到远程机器并遇到了一些困难。

代码非常简单:

客户代码

服务器代码

当我在本地网络上的另一台机器上运行参与者进程时,我可以成功连接,但是当我将相同的简单示例分发到云 VM 上时,我收到以下错误:

我也尝试过使用“127.0.0.1”,但这似乎在本地或网络上都不起作用。

任何人都可以就我可能做错的事情提供任何意见吗?

更新

我尝试使用 Akka.NET 中可用的绑定主机名和绑定端口选项,因为这应该可以解决我认为我正在遭受的 NAT 问题。不幸的是,这似乎也不起作用,我尝试了各种配置选项,例如使用主机名和 IP 地址,如下所示:

尝试上述配置时收到的错误消息是:

0 投票
1 回答
149 浏览

scala - 以编程方式创建远程 Actor 不起作用

我正在以编程方式创建远程 akka 演员。

以下是程序 -

配置是 -

运行程序后的输出是 -

我发送给演员的消息总是进入死信。看起来remoteActorAddr在 RemoteNodeApp 演员系统上没有成功创建。任何想法为什么不创建演员以及为什么消息总是变成死信。谢谢。

0 投票
1 回答
463 浏览

akka - AWS 上的 Akka 种子节点丢弃所有消息,因为它们与入站地址不匹配

我发现了很多文档较少的配置选项可供使用,但我似乎无法配置我的种子节点,使其既可以联系自己,也可以被其他节点联系。

目前,我已将其配置为:

在此配置中,节点可以作为种子节点连接到自身并自行运行,但其他尝试与其联系的节点会public-hostname丢弃其消息:

2018-01-25 19:29:56,934 [错误]:application-akka.actor.default-dispatcher-5 中的 akka.remote.EndpointWriter - 为非本地收件人 [Actor[ 丢弃消息 [class akka.actor.ActorSelectionMessage] akka.tcp://application@xx.xx.xxx.51:1551/]] 到达 [akka.tcp://application@xx.xx.xxx.51:1551] 入站地址是 [akka.tcp:/ /application@xxx.xx.xx.5:1551]

我的研究表明存在公共主机名配置来解决这个问题。也许不吧?我尝试了相反的方法,将主机名设置为公共 IP,并将其配置为bind-hostname使种子节点能够连接到自身的 IP:

然后我在相反的方向遇到了同样的悖论:

2018-01-25 19:39:08,207 [警告]:application-akka.actor.default-dispatcher-4 中的 akka.cluster.JoinSeedNodeProcess - 在 [3] 次尝试后无法加入种子节点,将重试。种子节点=[akka.tcp://application@xxx.xx.xx.5:1551]

2018-01-25 19:38:48,168 [错误]:application-akka.actor.default-dispatcher-6 中的 akka.remote.EndpointWriter - 为非本地收件人 [Actor[ 丢弃消息 [class akka.actor.ActorSelectionMessage] akka.tcp://application@xxx.xx.xx.5:1551/]] 到达 [akka.tcp://application@xxx.xx.xx.5:1551] 入站地址是 [akka.tcp:/ /application@xx.xx.xxx.51:1551]

种子节点现在无法连接到自己,因为xx.xx.xxx.51已经接管了入站地址。

我也尝试同时使用public-hostnameand bind-hostname,但没有成功。

0 投票
1 回答
332 浏览

akka - 节点不会重新连接到种子

我们在不同的 AWS 数据中心拥有三个节点,其中一个是唯一的种子节点和单例的独家拥有者,通过使用.withDataCenter单例代理设置来完成。我们可以通过启动种子节点然后其他节点来让我们的集群按设计工作,但是如果任何节点出现故障,似乎让它们再次通话的唯一方法就是以相同的方式重新启动整个集群。我们想让这些尝试重新连接到种子节点并在可能的情况下恢复正常操作。

当我取下一个非种子节点时,种子节点将其标记为 UNREACHABLE 并开始定期记录以下内容:

Association with remote system [akka.tcp://application@xxx.xx.x.xxx:xxxx] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://application@xxx.xx.x.xxx:xxxx]] Caused by: [connection timed out: /xxx.xx.x.xxx:xxxx]

很公平。但是,当我重新启动节点时,新启动的节点开始重复:

2018-01-29 22:59:09,587 [DEBUG]: akka.cluster.ClusterCoreDaemon in application-akka.actor.default-dispatcher-18 - now supervising Actor[akka://application/system/cluster/core/daemon/joinSeedNodeProcess-16#-1572745962]

2018-01-29 22:59:09,587 [DEBUG]: akka.cluster.JoinSeedNodeProcess in application-akka.actor.default-dispatcher-3 - started (akka.cluster.JoinSeedNodeProcess@2ae57537)

2018-01-29 22:59:09,755 [DEBUG]: akka.cluster.JoinSeedNodeProcess in application-akka.actor.default-dispatcher-2 - stopped

种子节点日志:

2018-01-29 22:56:25,442 [INFO ]: a.c.Cluster(akka://application) in application-akka.actor.default-dispatcher-4 - Cluster Node [akka.tcp://application@52.xx.xxx.xx:xxxx] dc [asia] - New incarnation of existing member [Member(address = akka.tcp://application@172.xx.x.xxx:xxxx, dataCenter = indonesia, status = Up)] is trying to join. Existing will be removed from the cluster and then new member will be allowed to join.

2018-01-29 22:56:25,443 [INFO ]: a.c.Cluster(akka://application) in application-akka.actor.default-dispatcher-18 - Cluster Node [akka.tcp://application@52.xx.xxx.xx:xxxx] dc [asia] - Marking unreachable node [akka.tcp://application@172.xx.x.xxx:xxxx] as [Down]

之后反复:

2018-01-29 22:57:41,659 [INFO ]: a.c.Cluster(akka://application) in application-akka.actor.default-dispatcher-18 - Cluster Node [akka.tcp://application@52.xx.xxx.xx:xxxx] dc [asia] - Sending InitJoinAck message from node [akka.tcp://application@52.xx.xxx.xx:xxxx] to [Actor[akka.tcp://application@172.xx.x.xxx:xxxx/system/cluster/core/daemon/joinSeedNodeProcess-8#-1322646338]]

2018-01-29 22:57:41,827 [INFO ]: a.c.Cluster(akka://application) in application-akka.actor.default-dispatcher-18 - Cluster Node [akka.tcp://application@52.xx.xxx.xx:xxxx] dc [asia] - New incarnation of existing member [Member(address = akka.tcp://application@172.xx.x.xxx:xxxx, dataCenter = indonesia, status = Down)] is trying to join. Existing will be removed from the cluster and then new member will be allowed to join.

我觉得奇怪的是,日志表明“将”发生的事情不会发生,现有的被删除,新的成员被允许加入。我一直在谷歌上搜索该消息,但找不到关于我可能需要做什么才能实现这一点的解释。

0 投票
1 回答
149 浏览

java - Akka 客户端 actor 连接到服务器 actor 系统

我有服务器演员在后台运行。服务器actor的基本操作是获取一个键值对。一旦它收到这对,它将它存储在一个地图中,并在被要求时返回它。现在,我有一个客户演员。我想使用actorSelection() 方法连接到服务器actor。但我对它所采用的参数感到困惑。谁能帮我理解它需要什么参数?

服务器端:- 演员系统:actorSystem 服务器演员:akkademy-db

客户端:- 演员系统:LocalSystem

0 投票
1 回答
481 浏览

akka-stream - Akka.Net 流和远程处理 (Sink.ActorRefWithAck)

我使用 Akka.net Streams 做了一个非常简单的实现Sink.ActorRefWithAck:订阅者向发布者请求一个大字符串,发布者通过切片发送它。它在本地(UT)工作得很好,但在远程却不行。我不明白怎么了?具体来说:订阅者可以将请求发送给发布者,发布者会回复一条OnInit消息,但之后OnInit.Ack将永远不会返回给发布者。此Ack消息以死信告终:

请注意,日志来自目标参与者,因此消息在正确的过程中处理。没有明显的路径错误。

查看不处理此消息的发布者代码,我真的不知道我做错了什么:

这是订阅者代码:

带有消息:

0 投票
1 回答
193 浏览

akka - 我可以重新启动远程 Akka Actor 吗?

我假设一个主管演员正在监督一个远程演员。如果远程参与者在处理请求时失败,是否有任何方法可以重新启动远程参与者。如果不可能,任何人都可以建议我解决这个问题的方法。先感谢您。

0 投票
0 回答
123 浏览

java - 我如何让 Akka Java 演员在远程系统上保持活动状态,准备好接收消息部署?

我正在尝试使用 JAVA 在分布式系统上创建 AKKA 演员集群。我可以在单台机器上使用它们。只是想知道假设我将演员保存在不同的机器中,我如何让他们保持活力以准备好接收消息。

1.我应该将它们保存在像netty这样正在运行的服务器中吗?可能像 Spring Boot 可执行 jar 2.我应该通过线程或循环保持公共静态 void main 活着吗?

是否有任何完整的部署示例?

0 投票
1 回答
726 浏览

akka - akka 聚类中的错误

我正在使用 Akka 集群开发服务,但是当我的程序运行时我收到了这些警告。我有一个 8 节点的 Akka 集群。谁能帮我解决这个错误:

[警告] [06/07/2018 15:08:51.923] [ClusterSystem-akka.remote.default-remote-dispatcher-18] [akka.tcp://ClusterSystem@192.168.2.8:2552/system/endpointManager/reliableEndpointWriter -akka.tcp%3A%2F%2FClusterSystem%40192.168.2.7%3A2552-8] 与远程系统 [akka.tcp://ClusterSystem@192.168.2.7:2552] 的关联失败,地址现在为 [5000] 毫秒. 原因:[Association failed with [akka.tcp://ClusterSystem@192.168.2.7:2552]] 原因:[远程没有响应出站关联。[15000 ms] 后握手超时。]

[警告] [06/07/2018 16:07:06.347] [ClusterSystem-akka.actor.default-dispatcher-101] [akka.remote.PhiAccrualFailureDetector@3895fa5b] 心跳间隔过大:2839 毫秒