问题标签 [service-fabric-actor]

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 回答
108 浏览

.net-core - 无法通过 ActorServiceProxy 将端点解析为参与者

我在本地 servicefabric 集群上有一个演员,当我的无状态服务完成工作时,我尝试将其删除。我使用 RemotingListenerVersion.V2。

然后我收到一个异常:

{"NamedEndpoint 'V2Listener' 在地址 '{\"Endpoints\":{\"\":\"my-localhost.pl:30004+ea7448c4-2a32-4c48-8ac9-cb23b6bd6269-131849397597858002-a68d72c7-2387 中找不到-4390-8170-49b38127c0d1\"}}' 用于分区 'xxxx-xxx-xxxx-8ac9-cb23b6bd6269'"}

我的演员清单:

我做错了什么?为什么演员端点名称为空(值正确)?

0 投票
1 回答
137 浏览

azure-service-fabric - 在 RunAsync(CancellationToken) 中从客户端手动调用 Cancel

在 RunAsync(CancellationToken) 后台方法中,当前代码正在生成新线程,并且在 while(true) 循环中还有一些长时间运行的任务。

Web api 控制器公开提供取消请求,然后使用入队/出队,此请求在 RunAsync(cancellationToken) while(true) 循环中访问。

我只是无法在接收此取消请求的 web api 控制器与传递给 runasync 方法内运行的线程的取消令牌之间建立连接。

我很确定的一件事是,用户以某种方式调用的取消请求与作为 RunAsync() 的参数的 cancelToken 之间没有联系,如上面的代码所示。似乎它们没有连接。我们不想在用户取消请求时退出 RunAsync() 后台的永远循环,这仅适用于特定线程运行。
请指导我正确的方向来设计终止线程的取消请求。

0 投票
2 回答
603 浏览

azure-service-fabric - Service Fabric,确定是否存在特定参与者

我们正在使用 Azure Service Fabric,并使用参与者对特定设备进行建模,使用设备的 id 作为ActorId. 当我们为给定 id 请求一个演员时,如果它尚未实例化,Service Fabric 将实例化一个新的演员实例,但我似乎找不到允许我查询特定设备 ID 是否已经实例化演员的 api。

我知道在获取时间点真相时可能存在一些分布式/时间问题,但出于我们的特定目的,我们不需要硬实时答案,但可以满足于最佳猜测。理论上,我们只想联系当前主ActorId节点以获取由 解析的特定分区,并返回设备是否具有实例化的参与者。

理想情况下,它是一个快速/高性能的调用,基本上比实例化actor 和调用方法来了解它是否已正确初始化并且不仅仅是一个“空”actor 更快。

您可以使用ActorServiceProxy来遍历特定分区的信息,但这似乎不是获取信息的一种非常高效的方式。

有对此有见解的人吗?

0 投票
1 回答
309 浏览

c# - 中断参与者 - 来自父服务的自定义取消令牌

使用作为参数传递的 cancelTokenSource 生成一个线程。

在此 ParentMethod 中,创建了 Actor 并再次尝试传递 CancellationToken。

它是自定义令牌,根据客户端请求,调用 RootStatefulService.cts.Cancel()。从有状态服务到参与者,我不确定是否传递了取消令牌源引用,以便根服务中的 Token.Cancel() 调用向下传播到参与者 Token.Register 方法。我没有成功。如果这不起作用,请回答调用自定义 Token.Cancel() 以传播到生成的演员的正确方法。

0 投票
1 回答
148 浏览

c# - 从 .Net Core Stateless Service 调用 .Net 框架 Service Fabric Actor

Actor 依赖于用 .Net Framework 编写的 Nuget 包。接口项目是用 .Net 标准编写的,因此可以从 .Net 核心无状态服务中使用。

当我尝试从无状态服务调用我的演员时,我收到一个错误:

我已经尝试按照微软的监听器升级教程在演员上添加 V2Listener,但没有成功。

0 投票
1 回答
983 浏览

azure - 具有 5 个节点的 Service Fabric 本地开发集群运行的实例和分区少于预期

我在本地开发集群上运行 Service Fabric 应用程序,在我的 PC 上“模拟”了 5 个节点。

该应用程序有一个公共 API 无状态服务,实例计数设置为 -1。

我希望在 Service Fabric Explorer 中看到 5 个无状态服务实例,但我只看到 1 个。

该应用程序还有一个参与者服务,其分区计数设置为 10(由 Visual Studio 自动生成的配置)。

当应用程序部署到我的 PC 上的开发集群时,Service Fabric Explorer 中只能看到一个分区。在我模拟“大”负载并且我的 PC 的 CPU 和内存使用率在 90% 左右或以上之后,仍然只有一个演员服务分区。我创建了一个有状态服务,将分区计数设置为 5,以检查我的环境是否有问题,但它按预期运行。

这对于无状态服务是正常的还是我的配置有问题。此行为是否特定于开发集群,设置为避免端口冲突之类的事情。

演员服务怎么样。根据文档动态分区缩放是可能的,但是即使在高负载期间,actor服务的分区数量也不会增加。此外,Actor 文档中没有提到动态分区缩放。

有关的

提前致谢!

编辑:经过一些不同配置的测试后,我得到了它的工作。

ApplicaitonManifest.xml 中的原始配置:

有效的配置:

请注意,唯一的区别是参数名称:

HttpAPI_InstanceCount

变成

HttpAPIInstanceCount

SystemStatusConsumerActorService_PartitionCount

变成

SystemStatusConsumerActorServicePartitionCount

0 投票
2 回答
321 浏览

c# - Service Fabric 参与者中的静态对象

IRemindable有一个具有以下定义的服务结构参与者,它通过实现接口注册然后注销。这个演员也有一个静态字典。

我的理解是,如果每个参与者的 guid 在实例化时不同,则服务结构会创建同一参与者的多个实例。当每个演员实例被创建时,提醒的动作将一个对象添加到字典中以供以后处理。

我的期望/理解是字典的范围在同一个实例化的actor内,但是当下一个actor的实例出现时,我意识到_myDictionary有添加到另一个actor中的节点!所以,它给人的印象是字典在所有相同actor类型的实时实例之间共享!这是正确的理解还是再次调用了同一个已经实例化的actor?!

由于参与者实现了IRemindable我希望 GC 在取消注册后将参与者从集群中删除,但它似乎没有发生。静态字典是否有可能导致演员的实例一直存在?

0 投票
1 回答
484 浏览

azure-service-fabric - 服务结构自动缩放也可以横向扩展节点吗?

基于此 Link,从 Service Fabric 提供 Auto Scaling 实例或分区。

但是,令人困惑的是,这是否还可以提供节点(虚拟机/实际物理环境)的自动缩放,这似乎没有明确提及。

0 投票
0 回答
26 浏览

azure-service-fabric - 在本地集群上激活参与者失败

我们有一些作为 Service Fabric 参与者创建的长期运行的作业。除了提醒之外,演员没有其他数据。当这些服务部署在本地集群中时,它们似乎可以毫无问题地激活。当我们将它们部署到运行 3 节点集群的服务器时,一些服务无法激活。我们没有看到节点中的内存利用率超过 50% 。但是,当我们添加 2 个节点并在 5 个节点上运行时,激活似乎工作正常。我们只使用 1 个分区和 1 个副本计数;所以想知道是否有一些设置会停止结构以激活更多服务。我们还增加了应用程序端口范围,但没有运气。

还需要注意的是,一个服务激活失败后;其他有状态的服务也变得不稳定。它们显示不健康分区的错误。集群还运行一些无状态服务,运行起来就像一个魅力。任何线索为什么演员的激活失败?

0 投票
0 回答
52 浏览

azure-service-fabric - 为什么我们的服务结构参与者提醒停止工作?

我们使用服务结构参与者提醒来执行出队机制。提醒每 5 秒触发一次,除非参与者正忙于让大量消息出队,否则它将在线程完成工作时触发。我们有 30 个演员同时在这个模式上运行。演员状态设置为“持续”。据我了解,提醒应该持续存在,并且应该跨越服务移动、故障转移、停用等。

我们面临的问题是,当系统其他地方出现错误时,例如超时,那么这些参与者提醒就会停止。我们有一个租户系统,逐渐停止提醒每个客户,因为一旦他们停止为一个客户队列开始建立,这会导致更多错误和更多参与者提醒停止工作。

什么会导致提醒停止像这样工作?