问题标签 [akka.net-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.

0 投票
1 回答
901 浏览

c# - Akka.net Sender On non-actor context

我的演员系统是在控制台应用程序上初始化的。我配置了一个名为 BankAccrountActor 的参与者,它负责处理银行账户交易,如账户的贷方/借方/账户余额。在贷记/借记命令中,参与者将从帐户和 Sender.Tell() 中贷记/借记剩余余额。从我的 program.cs 我打电话给 BankAccountActor 并要求借记并获得结果余额。

对我来说问题来自 BankAccountActor 它调用 Sender.Tell() 余额。这里 sender 是 IActorRef 类型,结果是程序类,程序不是演员。怎么可能?

}

0 投票
2 回答
400 浏览

akka.net - Akka.net 演员选择或参考

在 Akka.net 中,与参与者选择对话或与消息中传递的 IActorRef 交互更有效的是什么?

0 投票
1 回答
450 浏览

akka.net - Akka.Cluster 的端口耗尽问题

我们为短信、电子邮件和推送通知创建了一个 Akka 集群基础设施。系统中存在三种不同类型的节点,分别是客户端、发送者和灯塔。Web 应用程序和 API 应用程序正在使用客户端角色(Web 和 API 托管在 IIS 上)。Lighthouse 和 Sender 角色作为 Windows 服务托管。我们还在发件人角色中运行另外 4 个相同 Windows 服务的控制台应用程序。

大约 2 周以来,我们的 Web 服务器一直在遇到端口耗尽问题。我们的 Web 服务器开始快速消耗端口,一段时间后我们无法执行任何 SQL 操作。有时我们别无选择,只能重置 iis。如果有多个节点处于发送者角色,则会出现此问题。我们对其进行了诊断并找到了问题的根源。

SRV_NOTIFICATION 是灯塔 ve 发送者节点运行的服务器。SRV_INBOUND 是我们的 Web 服务器。检查此表后,我们检查了 Web 服务器上分配了哪些端口。我们得到了如下表所示的结果。在 netstat 中有超过 12000 个这样的连接:

192.168.1.10 Web 服务器 192.168.1.10:3564 API 192.168.1.101:17527 灯塔

连接正在打开但未关闭。

部署后,我们的 Web 和 Api 应用程序将离开并重新加入集群,并为固定端口配置。我们正在使用@cgstevens 创建的应用程序监控我们的集群。即使我们为 Actor System 实现了 grecaful 关闭逻辑,有时 WEB 和 API 应用程序无法离开集群,因此我们必须手动删除节点并重新启动 Actor 系统。

我们已经在我们的开发环境中重现了这个问题,并在下面录制了一个视频

https://drive.google.com/file/d/0B5ZNfLACId3jMWUyOWliMUhNWTQ/view

我们对节点的 hocon 配置如下:

网页和 API

灯塔

发件人

集群监视器

0 投票
1 回答
379 浏览

sql-server - Akka .NET 连接池超时问题

我们正在使用 Akka.NET 创建一个新系统,并有一个带有分片和持久性的基本集群设置。

我们使用了官方文档以及一些 Petabridge 博客文章来让分片正常工作。但是,我们遇到了一个问题,即分片超出了 SQL Server 连接池允许的最大连接数。因此,我们收到以下消息...

2017-04-20 14:04:31.433 +01:00 [警告]“超时。在从池中获取连接之前已经过了超时时间。这可能是因为所有池连接都在使用中,并且最大池大小为到达。”

我们相信当分片更新分片日志时会发生这种情况。

为什么分片模块不能正确管理其 SQL 连接?这里有配置问题吗?

发生这种错误时是否可以重试?就目前而言,我们会丢失此错误的每个实例的消息。

这是相关的HOCON

0 投票
1 回答
232 浏览

c# - 如何获取整个 Akka.net 集群的更新状态?

我在我的 akka.net 集群中创建了一个监控节点,我正在使用cluster.SendCurrentClusterState(Self),但并非所有节点都立即可见,有时节点也会离开集群,虽然日志显示节点已正确删除,但状态显示节点已准备就绪很长时间。

获取整个 akka.net 集群的更新状态的最佳/正确方法是什么?

0 投票
2 回答
396 浏览

akka.net - 集群一致的哈希池为相同的映射产生新的路由

我有一个包含 2 个命令行项目的解决方案,它创建了一个带有种子和客户端进程的 akka.net 集群。种子启动集群,然后实例化一个一致哈希集群路由器,该路由器对实现我的接口“IHasRouting”的任何消息执行哈希映射。因此,任何 IHasRouting 消息(来自种子或客户端)都应该以该消息的哈希值在 routee 上的种子处结束。

项目开始正常,集群形成没有错误。种子和客户端都实例化了一个路由器。来自种子和客户端的所有消息都具有相同的“VolumeId”,因此它们应该在种子处使用相同的路由。但是来自客户端节点的消息会为种子中的这些消息产生一个新的路由!

我对一致哈希集群路由器的理解是:

  • 一个表示它的 IActorRef 应该在该节点中的参与者打算向路由器发送消息的每个节点上退出。
  • 路由器的实现在每个节点上应该是相同的,并且具有相同的参与者名称。
  • 所有到路由器的消息都应该实现 IConsistentHash 或者路由器实例应该有一个“WithHashMapping()”
  • 具有相同哈希的所有消息将仅到达一个路由,并且始终是相同的路由
  • 一个路由可能需要多个哈希

我相信我了解一致哈希集群路由器的行为方式,并且许多 DEV 似乎都在正确使用路由器类型,所以我的实现一定是错误的......请帮助!如果有帮助,我可以提供完整的解决方案。

创建路由器的代码:

我有一个向路由器发送消息所需的“公司”类。此测试的所有 VolumeId 都相同。

路由器映射使用的 IHasRouting 接口:

可以发送到路由器的示例消息类:

最后是在路由器上为每个路由实例化的 CompanyDeliverActor:

感谢您的任何指导。

0 投票
2 回答
348 浏览

akka.net - 集群分片客户端未与主机连接

在最近的调查和Stack over flow 问题之后,我意识到集群分片比集群一致哈希路由器更好。但我无法让 2 进程集群运行。

一个进程是种子,另一个是客户端。Seed 节点似乎不断地抛出死信消息(见本问题的结尾)。

这个种子 HOCON 如下:

我有一种方法可以将上述内容变成这样的配置:

如果没有“WithFallback”,我会从配置生成中得到一个空引用异常。

然后像这样生成系统:

客户端以相同的方式创建其系统,HOCON 几乎相同,除了:

种子节点像这样创建分片:

客户端创建一个分片代理,如下所示:

RouteExtractor 是:

在这种情况下,VolumeId 总是相同的(只是为了实验)。

这两个过程都开始了,但种子不断向日志抛出这个错误:

[INFO][7/05/2017 9:00:58 AM][Thread 0003][akka://my-cluster-system/user/sharding /company-routerCoordinator/singleton/coordinator] 来自 akka.tcp 的消息注册: //my-cluster-system@127.0.0.1:5000/user/sharding/company-router 到 akka://my-cl uster-system/user/sharding/company-routerCoordinator/singleton/coordinator 未交付。遇到4个死信。

附言。我没有使用灯塔。

0 投票
0 回答
605 浏览

publish-subscribe - Akka.net 中分布式 Pubsub 的订阅者管理

考虑集群中具有许多内部参与者的节点。许多参与者正在使用分布式 Pub/Sub 订阅一个公共主题。集群中另一个节点中的参与者正忙于将消息发布到公共主题上。

发布/订阅系统是否会将一条消息发布到包含“许多参与者”的节点,然后从那里在节点内部分发消息。或者发布/订阅系统是否会向订阅该主题的每个参与者发送单独的消息?

我怀疑形式,但也许这里有一个我不欣赏的微妙之处。

谢谢,
史蒂文。

0 投票
1 回答
171 浏览

asp.net-web-api - IIS 上带有双 asp.net webapi 的 akka.cluster

在 out 集群中,我们有五个节点组成:

  • 2 个种子节点(后端)
  • 1 名工人
  • 2 IIS 上的 webapi

集群已加入、启动并运行;但是当通过路由器向集群执行第一条消息时,第二个 IIS 使所有集群无法访问和分离。此外,第二个 IIS 无法传递任何消息。

这是我的 IIS 配置:

在 global.asax 中,我们为集群创建了一个新路由器:

这是我们的后端配置:

目前使用 Akka 1.1 和 Akka 1.2 的问题

更新

如果我直接调用每个 IIS 工作正常,我发现问题与我们的 LoadBalancer (NetScaler) 有关。如果被平衡器调用,我将面临报告的问题;平衡器是透明的(它只向请求添加一些标头)。我可以检查什么来解决这个问题?

0 投票
1 回答
182 浏览

akka.net - akka.cluster 和持久性交付问题

在我们的集群中,我们有四个节点组成:

  • 2 个种子节点(后端)
  • 1 名工人
  • 1 个 IIS 上的 webapi

集群已加入、启动并运行;当我向 webapi 发送 POST 时,:

  • IIS 加入集群
  • API 接收帖子并使用 Tell 发送消息
  • 消息被处理了两三次!
  • 仅发生在 IIS 加入时发送的消息,以下消息工作正常

这是我的 IIS 配置:

这是我的后端配置:

我认为问题与 akka 持久性有关,问题可能是什么?