当前位置: 首页 > 知识库问答 >
问题:

如何通过tcpdump查看集群中akka参与者之间交换的消息

郎健柏
2023-03-14

我有一个akka集群项目:

https://github.com/roclas/akka-distributed-hash

它基本上是跨集群节点的分布式HashMap。

我希望能够读取(使用tcpdump或wireshark或类似工具)不同虚拟机中参与者之间交换的消息。

我怎么能这么做?

执行TCP转储时,我只看到“集群消息”,但看不到不同虚拟机中不同参与者交换的消息。

如果我在端口2551上启动一个节点: sbt运行2551(将是主)

和端口2552上的另一个节点: sbt"run 2552"

当我这样做时,实际发生了什么

Curl-X PUThttp://localhost:8551--data"你好=333

我明白:

>

主节点更改其HashMap并向第二个节点的参与者发送消息,以便更新其哈希(

第二个节点更新其散列(因此它表示消息已成功接收)。我怎么不能使用TCP转储查看该消息?(我看到在端口2552上没有收到任何消息,我还做了一个tcpdump,监听所有网络接口和所有端口,从我发送http put消息的那一刻起,到第二个节点中更新哈希的那一刻,似乎没有tcp消息包含主节点中的参与者在第二个节点上发送给参与者的akka消息节点)

非常感谢。

共有1个答案

龚德本
2023-03-14

我在这里找到了答案:

https://groups.google.com/forum/#!搜索/akka-user/tcp转储/akka-user/pipFVxI6XsU/XlLh0e_8v_0J

我正在寻找的消息是通过端口2552和2551发送的只是没有找到他们之间的所有消息群集节点发送给对方但过滤段大小我能够隔离那些我想要看看和他们的样子像内部。

 类似资料:
  • 我的用例是,我想建立一个运行Akka Actors的节点集群。每个参与者都是同一参与者的实例,用于处理与特定用户的WebSocket连接。每个参与者都将使用唯一的路径注册自己。在非集群设置中,我可以简单地通过其路径调用actor,如其中,是actor实例的唯一名称。我必须将消息传递给这些参与者,这样他们才能将消息发送回各自的WebSocket客户端。 显然Akka集群提供了各种设置:http://

  • 我遇到了一个场景,我需要检查特定的参与者是否存在,这可以通过ActorSystem完成。actorSelection方法,指定参与者路径 但是,当本地节点上存在此类参与者时,此方法可以正常工作。若actor系统由多个节点组成,并且actor存在于另一个节点上,则该方法告诉我们actor不存在。若我给出指定远程参与者系统的字符串,那个么这个方法可以工作。但在actorSelection方法中指定远程

  • 我有一个演员系统,如下图所示。 主演员启动监控演员和监控演员。 Monitor actor会发出一条消息,告诉自己每30秒检查一次设备资源清册。对于资源清册中存在的每个设备,它会向Supervisor actor发送一条消息以注册该设备。 主管参与者在收到来自监视器参与者的消息以注册设备时启动设备参与者。 代码可以在github上找到。 在单个JVM实例中,一切都运行得很好,但当涉及到集群模式时,

  • 我们正在使用Akka sharding将我们的运行参与者分布在多个节点上。这些行为体是持久的,我们将它们的内部状态保留在数据库中。 现在我们需要将ActorRef添加到“Metrics Actor”中,在每个节点上运行。shard中的每个actor都应该将遥测数据发送给metrics actor-它必须选择正确的metrics actor,该actor在本地运行于同一节点上。原因是,度量执行元收集

  • 我对Akka演员和演员模型有点困惑。从参与者A发送到参与者B的消息是否保持顺序?如何在本地/网络环境中实现这一点?据我所知,网络引入了可变延迟,如果M1的延迟为1秒,M2为0.5秒,那么消息M1和消息M2如何保持顺序?

  • 我希望能够从集群的一个Akka节点创建一个actor,这样actor就可以生存,而不管创建它的节点是否正在运行。 这是我试图处理的场景: 节点A启动。 节点B启动。 节点A和B形成群集。 节点A创建FooActor。 节点A终止。 节点B仍然能够搜索并找到节点A创建的FooActor 节点B会杀死fooactor。 此时,当节点A终止时,它创建的参与者将丢失。 你能告诉我这是否可能使一个参与者比创