问题标签 [azure-service-fabric]

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 投票
3 回答
1748 浏览

azure - 如何在 azure 中扩展基于 docker 的服务

在 azure 中扩展基于 docker 的应用程序服务的最佳方式是什么?在 AWS,我知道我们可以使用容器服务。目前我在 azure 上使用云服务,它可以轻松扩展。还有看起来比云服务更好的 Service Fabric。但是当我使用 docker 时,如何将它们扩展到多个虚拟机?

0 投票
1 回答
620 浏览

c# - Azure Service Fabric - 分布式计算代码示例 Monte Carlo 模拟 - 性能问题

在收听了最近的 azure 播客(尤其是关于在 azure 上构建低延迟金融系统的播客)并阅读了有关 Service Fabric 的所有炒作后,我决定尝试更改“分布式计算代码示例 Monte Carlo 模拟”模式以满足我的需要。

我的场景是:具有给定起始状态的一个请求使用基于蒙特卡罗的简单(计算方式)模型运行 10k 完整运动比赛模拟。

我的第一次尝试是:

  • 1 * 有状态的“处理器”Actor,接收匹配的开始状态并将其转发给 10k + 任务 Actor,以及相关的聚合器 ActorId

    • 10K+ * 运行 1 次模拟并将结果传递给其聚合器 Actor 的无状态“任务”Actor。模拟时间很短(~2ms)

    • 100 * 有状态的“聚合器”Actor,聚合接收到的模拟并传递给终结器 Actor

    • 1 * 'Finaliser' 计算最终结果的 Actor

只需使用 Tasks 在我的开发机器上运行上述内容需要 < 100 毫秒,但上述设置(作为本地集群在开发机器上运行)需要 50 秒甚至更多!

在调试了一个潜在原因后,我发现处理器 Actor 发送初始任务所需的时间,所以我想知道调用 Service Fabric 有什么样的开销(我猜各种命名服务调用正在发生当我调用演员的方法时)以及缓慢是否可能是由于这个和我的任务数量造成的?

为了消除其他可能性,我做了以下事情,发现总时间只有很小的差异:

  • 使所有参与者无状态,以确保状态管理不会增加开销。
  • 在处理器中创建所有 ActorProxies 并存储它们的引用以供将来调用以确保 Actor 激活不会引起问题。

有没有人对从这里去哪里有任何建议,或者有没有人试图实现类似的东西?

谢谢,亚历克斯

0 投票
2 回答
963 浏览

actor - Azure Service Fabric 与 Project Orleans 中的参与者粒度

举个简单的例子:我有一个拥有 1,000,000 个用户的服务,每个用户都有一些个人资料信息。我想使用演员管理此配置文件信息的 CRUD 操作。

Project Orleans中,我的理解是每个用户有一个谷子,因此 1,000,000 个相同演员类型的虚拟谷子(只有在使用时才会创建),每个谷子将管理存储在其中的单个用户的个人资料信息状态。随着我的用户增长,谷物的数量也在增长。

Service Fabric中,如果我对文档的解释正确,它的工作方式会略有不同。我将有一个有状态的参与者类型来管理所有用户的 CRUD 操作,并且为了可扩展性,我将对参与者进行分区,让每个分区负责用户数据的子集。鉴于partition options,我看不到一个明显的方法来实现它与 Project Orleans 相同的细粒度方式。

我真的很喜欢 Project Orleans 中的方法。演员只是为单个用户处理数据,可扩展性是显而易见的(更多的用户等于更多的颗粒)。内存模型也很简单:单个参与者通过少量状态按需获取水分。

似乎 Service Fabric 实现会稍微复杂一些。每个参与者都在与一组用户打交道,为了可扩展性,我必须提前决定应该创建多少个分区,因为以后无法修改。至于内存模型,每个参与者管理的数据量随着用户数量的增长而增长。

所以我的问题是:我的理解是否正确,Service Fabric 中的参与者只是比 Project Orleans 更粗粒度?

更新

感谢您的回答。我的错误是认为分区包含单个参与者实例,该实例将包含和管理分区内所有参与者 ID 的状态。这是完全错误的。Michiel 指出,一个分区包含许多参与者实例,每个参与者 ID 一个。因此,演员可以以与奥尔良项目相同的方式实施。这现在更有意义了,谢谢。

0 投票
3 回答
3860 浏览

c# - FabricNotReadableException 是什么意思?以及我们应该如何应对?

我们在 Service-Fabric 上的有状态服务中使用以下方法。该服务具有分区。有时我们会从这段代码中得到 FabricNotReadableException。

这是否意味着分区已关闭并正在移动?其中我们遇到了二级分区?因为在某些情况下还会引发 FabricNotPrimaryException。

我已经看到了 MSDN 链接(https://msdn.microsoft.com/en-us/library/azure/system.fabric.fabricnotreadableexception.aspx)。但是什么

表示当分区无法接受读取时引发的异常。

意思是?分区不能接受读取是怎么回事?

0 投票
2 回答
493 浏览

azure-service-fabric - ServiceFabric StatefulService 方法传递了 Actor 代理 DataContract 错误

我有StatefulService一个方法。该方法的第一个参数接受与我的一个 Actor 对应的接口类型。Actor 使用 调用服务方法ServiceProxy,并作为第一个参数传入this。这会编译文件。签名匹配。

但是,在运行时,我收到一个关于 IMyActorType 类型不为DataContractSerializer. 我知道这条消息意味着什么。不ServiceProxy处理ActorReferences?我知道ActorProxy工作。我可以使用ActorProxy.

或者这可能是我的配置中的一些问题StatefulService?我的ServiceReplicaListener设置有什么问题吗?

StatefulService我现在已经通过将我的方法的方法签名更改为ActorReference. 序列化很好,我可以在另一边打开它。但是,我宁愿有正确的打字。

0 投票
1 回答
301 浏览

azure-service-fabric - 多个 IActor 接口

我需要Actor实现多个接口。这可能吗?

目前,当我尝试让该Actor类型实现一个派生自另一个接口的接口时IActor,我收到一条消息,它实现了多个接口,ActorServiceAttribute需要用来区分。添加ActorServiceAttribute不会删除错误消息。

[编辑]

我相信我解决了这个问题。错误令人困惑。您需要在 Actor 类型上直接实现 BOTH 接口。构建时发现似乎没有通过接口层次结构枚举 find IActor

0 投票
2 回答
2071 浏览

azure-service-fabric - 从结构外部使用 Service Fabric CommunicationClient 和 servicePartitionClient?

我希望能够从非结构应用程序或服务调用有状态的 HTTP/WebApi 服务。我可以将发布的 url 用于有状态服务,但希望通过解析分区端点来利用故障转移到不同的主节点。

我首先尝试在桌面控制台应用程序中进行测试,但它无法执行 InvokeWithRetryAsync 内部的通信 Lambda 函数。

这是死胡同(非结构应用程序无法解析有状态服务)还是有另一种方法可以从非结构应用程序解析端点。否则,我可能会将请求包装在“中间人”无状态服务(如 Wordcount Webservice)中。

0 投票
2 回答
322 浏览

azure-service-fabric - ServiceProxy 抛出 ProtocolException,重试时通信未恢复

我们在与集群中运行的服务通信时看到了 ProtocolExceptions。消息和 InnerException 消息:

该服务在本地开发集群上运行,与该服务通信成功后抛出异常。

我们用于通信的代码是:

我们有重试逻辑(尝试之间的延迟增加)。但是这个电话永远不会成功。所以看起来服务处于故障状态并且无法从中恢复。

更新

我们还在日志中看到以下错误:

2015 年 14 月 12 日更新

如果抛出此 ProtocolException,重试将无济于事。即使经过数小时的等待,它仍然失败。

我们记录端点地址

解析的端点看起来像

此终结点与 Service Fabric Explorer 报告的相同。

从我们看到的日志来看,该服务似乎正在运行(可以通过另一种 API 方法访问),但该特定调用从未成功。

0 投票
1 回答
139 浏览

c# - 删除已停用的有状态参与者

我了解到有状态的演员在空闲一段时间(默认为 60 分钟)后会被停用。这将从托管这些参与者的节点中释放 RAM(和 CPU)。但是,如果需要重新激活它们,它们的状态将保留在集群中。

我想知道是否有可能以某种方式枚举已停用的演员(具有持久状态),以便根据某些自定义标准永久删除其中一些演员。

这样做的目的是释放集群中的磁盘空间,因为他们知道某些参与者将永远不会再次被激活(如果他们愿意,他们会表现得就像他们是全新的一样)。

作为附带的好处,如果确实可以获得“曾经激活但可能停用”的演员列表,那么我们就不必手动维护这样的列表。

0 投票
2 回答
731 浏览

azure - Service Fabric:打包代码错误:缺少必需的引用

更新 SF 后,我遇到了一个完全无法使用 SF 的问题,我将尝试用没有代码的文字来解决问题。

Service Fabric 应用程序AppName.SFAppName.SF.StatefulActor和组成AppName.SF.StatefulService。两者都引用了名为AppName.Core.

案例 1: StatefulActor不引用StatefulService- 包执行正常:

AppName.SF\pkg\Debug\AppName.SF.StatefulActor\Code has AppName.Core.dll

AppName.SF\pkg\Debug\AppName.SF.StatefulService\CodeAppName.Core.dll

每个包代码文件夹都有AppName.Core.dll. 部署成功执行。

案例 2: StatefulActor引用StatefulService- 包执行不良:

AppName.SF\pkg\Debug\AppName.SF.StatefulActor\CodeAppName.Core.dll

AppName.SF\pkg\Debug\AppName.SF.StatefulService\Code没有(!) AppName.Core.dll

因此,如果我尝试在集群中部署应用程序,则会收到缺少参考错误。SF 更新到 1.4.87-preview 后出现问题。