问题标签 [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 回答
321 浏览

azure-service-fabric - IStatefulServiceReplica.Open 上的错误 - 已添加具有相同密钥的项目

我们有一个有两个分区的演员服务。所有空闲的辅助副本都处于警告状态,并带有来自 Service Fabric Explorer 的以下消息:

我们在从一个分区移动到两个分区时首先遇到了这个错误。停用节点并删除数据是一个临时修复,因为问题在下一次部署中重新出现。

该问题导致 Service Fabric 不断尝试启动服务,该服务一直处于“启动、终止、重复”的永久循环中。

我了解处于 IdleSecondary 状态的副本意味着它当前正在从其他节点获取数据,以便提升为 ActiveSecondary。在我看来,这个问题与从演员的其他节点获取数据有关。

是什么导致了这个问题,我以后如何防止它?

0 投票
1 回答
454 浏览

c# - Service Fabric 参与者:使用最新版本的 Service Fabric nuget 包部署参与者时出现的问题

昨天我创建了一个新的服务结构应用程序,包括一个新的 Actor。当我将它部署在本地服务结构集群上时,发布状态为“成功”。但问题是,当我继续使用 Service Fabric 集群时,我可以看到参与者处于“错误”健康状态。我可以向您显示有关诊断事件和 Server Fabric Explorer 的错误消息:

Service Fabric 群集资源管理器 [图像]

诊断事件错误 [图像]

为了向您展示我的问题,我使用 Visual Studio 创建的通常的演员示例创建了一个简单的解决方案,该示例应该可以正常工作。我创建了一个 .Net Core 2.0 Actor Service。 演员服务

演员使用的nuget包是:

  • Microsoft.ServiceFabric (6.2.274)

  • Microsoft.ServiceFabric.Actors (3.1.274)

  • Microsoft.ServiceFabric.Data (3.1.274)

  • Microsoft.ServiceFabric.Services (3.1.274)

我的 Visual Studio 在版本15.7.2上,Service Fabric 运行时在最新版本上6.2.274.9494

我还有另一个解决方案,它可以与具有先前版本的 nuget 包一起使用,可以正确部署和处理服务结构。

当我将服务结构包更新到最新版本时,服务结构资源管理器上的参与者出现错误。所以我可以推断这些错误可能是由最新版本的服务结构 nuget 包产生的。

此致,

亚历山大

0 投票
3 回答
1082 浏览

azure - 在服务结构应用程序中动态创建服务

这有点描述性,所以请多多包涵。:)

在我尝试构建的应用程序中,产品具有不同的功能。用户可以选择加入功能 A、B、D 但不是 C。我构建这个的方式是,每个不同的功能都是一个服务(无状态,我正在考虑将数据存储在 Azure SQL数据库并从每个服务公开 REST API)。将所有服务捆绑在一起是一个 ApplicationType。对于创建的每个客户租户(将其视为一组用户的共享帐户),我正在考虑使用 TenantManagementService 创建注册的 ApplicationType 的新具体实例并client.ApplicationManager.CreateApplicationAsync()调用FabricClient实例,以便我可以在我的节点上为该租户运行一个专用的应用程序实例。但是,正如我所提到的,租户可以选择仅选择映射到服务子集的特定功能。如果租户仅选择我的应用程序的服务 A,则与功能 B、C、D 对应的其余服务实例不应在节点上空闲运行。

我想为每个服务创建参与者,但我正在创建的服务是无状态的,我希望它们的多个实例在多个节点上主动运行以进行负载平衡,而不是让有状态服务的空闲副本。

与我对应用程序类型所做的类似,即在新租户注册时生成应用程序类型,我可以在租户想要选择加入/退出产品功能时生成/删除服务吗?

这是我尝试过的:我InstanceCount在打包我的应用程序时尝试将服务设置为 0。在我的ApplicationParametersXML 文件中:

但是,在使用此类应用程序类型实例化应用程序时,Service Fabric Explorer 会出现问题。错误是这样的: 零服务实例计数错误

但另一方面,当服务部署在结构上时,它给了我一个选项来专门删除它,所以这个场景应该是有效的。 在此处输入图像描述

欢迎任何建议!

编辑:我的要求类似于 anderso 在此处提到的方法-https://stackoverflow.com/a/35248349/1842699 但是,我特别要解决的问题是上传创建一个应用程序实例或更多实例计数为零的打包服务!

0 投票
1 回答
110 浏览

azure - 远程处理时 Service Fabric 上的重复请求

我在 Service Fabric (ASP.NET Core) 上有一个无状态服务,它将调用一个 Actor,并且 Actor 可能在内部也可以根据场景调用其他 Actor 和/或有状态服务。

我的问题是,由于系统的远程处理方面,我们是否需要考虑重复请求?

在我们早期的 Akka.Net 实现中,由于 TCP/IP 网络拥塞等原因,Actor 有可能收到重复的请求,我们通过给每条消息一个唯一的 Correlation Id 来处理这个问题。我们会将请求及其结果以状态存储在参与者上,如果再次返回相同的关联 id,我们将假设它是重复的并发送较早的结果,而不是重新处理请求。

我曾在 Microsoft 的一个示例项目中看到过类似的方法,但我似乎再也找不到了(Github 上的死链接)。

有谁知道这是否需要在 Actor 和/或有状态服务中处理?

0 投票
1 回答
1347 浏览

azure - “反序列化程序不知道映射到此名称的任何类型...”上的 Service Fabric 错误

我是 Azure Service Fabric 的新手,仍处于学习模式。我正在学习一个示例课程来创建一个电子商务应用程序,该应用程序由一个 ProductCatalog 服务和一个 Web API 服务组成。Web API 应该由客户端使用。Web API 公开一个 API 调用以获取所有产品。API 在内部调用 ProductCatalog 服务,该服务具有硬编码的产品列表。这些由 ProductCatalog 服务返回。API 服务和 ProductCatalog 服务是微服务。使用 .NET Remoting 调用内部服务。API 和 ProductCatalog 服务都使用相同版本的 .NET 远程处理。问题不是提供产品列表的 API,而是给我以下错误:

元素“ http://schemas.microsoft.com/2003/10/Serialization/:anyType ”包含映射到名称“urn:ServiceFabric.Communication:ServiceResponseMessageHeaders”的类型的数据。反序列化器不知道映射到此名称的任何类型。如果您正在使用 DataContractSerializer,请考虑使用 DataContractResolver,或者将与“ServiceResponseMessageHeaders”对应的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将其添加到传递给序列化程序的已知类型列表中。

我目前正在努力前进。为什么我会收到此错误,我该如何摆脱它?

0 投票
0 回答
75 浏览

c# - 如何检查返回的actor代理实例是否有效

让我们假设以下代码片段作为示例:

ActorProxy.Create 的工作方式即使some_actor_URI不正确,也不会抛出异常或返回 null。结果总是一些代理对象。在该代理上调用参与者的方法时,副本无一例外地崩溃。

问题是没有明显的方法来检查解析的代理是否正确。

如何检查已解析的 Actor 代理实例是否指向现有的 Service Fabric Actor 实例?

0 投票
0 回答
42 浏览

wcf - 如何从 Service Fabric Actor 调用 WCF 服务

我有一个服务结构参与者,它做了一些事情,最后,它以异步方式调用另一个 WCF 服务。真正的问题是如何将端点信息以及绑定信息传递给参与者?

0 投票
1 回答
84 浏览

azure-service-fabric - 处理多种参与者类型的 Service Fabric 参与者模型

我使用 Service Fabric 作为我的微服务框架。我正在使用无状态服务,因为我们使用的是外部数据库。我有两种类型的用户:一种是 CSR(客户代表),另一种是用户本身。如何安排我的 Actor 服务来解决这个问题?

CSR 的功能很少。但客户是整个难题的重要组成部分。假设 CustomerActor 需要更新它自己的地址。CSRActor 也可以完成相同的操作。

是否建议创建 2 个不同的 Actor,CSRActor 和 CustomerActor,然后 CSRActor 对客户 Actor 进行任何操作。或者 Customer 可以是一个单独的服务,两种类型的参与者都调用 CustomerService。还有其他想法吗?

0 投票
0 回答
207 浏览

azure-service-fabric - 为什么有状态服务的演员?

随着我越来越多地了解有状态服务中的 Actor 模式,我不相信为什么 Actor 模式是有状态服务的良好解决方案。

大多数用例都在讨论单线程的、每个actor中运行时间短的actor的状态管理,最好的场景是每个actor中的小规模计算和大量并行运行的actor。

在这种情况下,瓶颈将是从数百万演员到数据库的写操作。争论的焦点是将来自每个参与者的状态或小型输出存储到其自己的状态管理器或可靠集合(例如可靠字典)中,但这仍然与使用数据库的真正有状态服务不同。

我认为这混淆了依赖数据库的有状态服务的用例推荐与真正的参与者模式。

如果有人可以帮助我了解在有状态服务中使用数据库的可靠参与者的良好用例,或者如果我不正确理解可靠参与者的某些方面,请纠正我。

0 投票
0 回答
32 浏览

c# - 顺序取消不同参与者中的多个任务

Actor 依赖 Cancellation Token 来取消可以包装在 Cancellation Token Source 中的任务。当这个单一的工作流程中有一个actor链时,取消请求可以传播到这个工作中的actor链。

可能每个参与者中的每个取消任务都可以注册到令牌中,以便在终止未完成的工作之前完成不同的工作。

这种情况是这样的,最好以相反的顺序终止这个工作链,以便产生最新的工作角色,例如发送批量工作更新数据库,最好在其父角色抛出取消异常之前取消其工作。至少对我来说,这个计划似乎比仅仅在这一系列作品的最顶端的演员身上抛出取消异常更安全。

我在想以某种方式以相反的顺序注册这些取消工作(例如使用堆栈),以便最后一个注册的取消委托执行,然后是注册为第二个最新的取消委托,依此类推。

考虑使用组合代表或堆栈与处理程序,请让我知道/纠正我以引导我走向正确的方向。