问题标签 [service-fabric-stateful]

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

azure-service-fabric - Azure 服务结构中的参与者

如何使用不同语言(python 或 Go)的 Azure Service Fabric Actors 来构建有状态的微服务?还是仅限于 Java/C#?

0 投票
1 回答
738 浏览

.net - 服务升级后服务结构可靠集合数据丢失

为什么微服务升级后可靠集合为空,不调用事件 OnDataLossAsync 从外部备份恢复状态?

我们有基于有状态服务的大规模系统

HasPersistedState 设置为 true,并且数据跨副本复制,以防 VM 故障数据仍然有效并使用 OnDataLossAsync 进行恢复,但升级后集合为空。

我已经尝试了所有升级选项(删除、保留、自动升级)应用程序,结果相同 - 集合为空。

目前我们决定将数据复制到 blob 存储并在服务更新后恢复它,这不是完美的解决方案,数据恢复需要几分钟,并且在此期间会导致某些服务不可用/不一致。

因此,我们正在寻找允许在升级后保存数据的解决方案。

0 投票
3 回答
1822 浏览

c# - Service Fabric - 存储列表在 StateManager 中寻找可靠的演员

我的一个用例需要存储来自单个事件生产者的“开始”和“停止”事件之间的所有事件。我们将使用可靠的参与者来处理这些数据并在收到“停止”事件后进行汇总。在开始和停止之间存储所有事件的直接方法是使用 List 类型。

据我了解,每次获取现有列表时,添加一个新项目并存储新的更新列表,StateManager 将序列化/反序列化整个数组。我的理解正确吗?

什么是这个解决方案的好选择?

0 投票
1 回答
152 浏览

azure-service-fabric - ServiceFabric Stateless/StatefulServices 不会重新生成所需的 ServiceManifest.xml

在执行了相当突兀的重构(重命名项目、移动服务等)之后 - 我发现没有为无状态和有状态服务生成 ServiceManifest.xml 和 ApplicationManifest.xml 中的适当配置。

复现步骤:

  1. 右键单击现有服务结构应用程序项目 (.sfproj)
  2. 添加 > 新建 Service Fabric 服务...
  3. 选择无状态服务
  4. 查看 ServiceManifest.xml,您将看到:

    /li>
  5. 现在删除 ServiceManifest.xml

  6. 重建

我期望在构建时重新创建 ServiceManifest.xml。如果您对 StatefulService 执行上述步骤,您会得到相同的结果。但是,如果您为 ActorService 执行此操作 - ServiceManifest.xml 将完美地重新生成。

如果没有在 ServiceManifest 和 ApplicationManifest 中定义 StatelessService,则不会部署该服务。

这似乎可能是一个错误,有没有人遇到过这个并有解决方案?

0 投票
4 回答
2402 浏览

azure - Sharing Azure Service Fabric Reliable Queues Between Services

I'm diving into Service Fabric (from the Cloud Services world) and am hitting a few speed bumps with how ReliableQueues work.

Let's say I have 2 stateful services StatefulService1 and StatefulService2.

If I need to have StatefulService1 send a message in a queue that StatefulService2 will pick up and read am I able to use ReliableQueues or are ReliableQueues isolated within the service they are created in?

If that is the case then what is the purpose of having ReliableQueues? The usual pattern behind them is for another process to act on the messages. I understand why isolating a Dictionary to a service would make sense, but not a queue...

Is my best option to rely on a traditional approach to send this message such as a Storage Queue or does ServiceFabric offer a solution for passing message queues between services?

UPDATE

Just want to clarify that I did attempt to dequeue a message created in StatefulService1 from within StatefulService2 and it came up empty. Dequeing from within StatefulService1 worked fine as expected.

0 投票
1 回答
106 浏览

azure - Service Fabric - DeleteServiceAsync 超时

我正在生成几个 ASF 微服务来运行一些进程。完成该过程后,我将DeleteServiceAsync使用以下代码删除这些服务。几乎 98% 的时间,一切正常。但是,有 2% 的情况下,我遇到了超时问题,并且微服务卡在了具有空闲辅助副本的删除状态。提前感谢您提供解决此问题的任何建议。

0 投票
0 回答
215 浏览

azure-service-fabric - ServiceProxy.Create 要求主要返回次要副本

我正在从不同的参与者类型访问具有远程处理的服务。他们通过基类中的共享代码调用 ServiceProxy.Create 方法来做到这一点。

我有用于访问主副本和辅助副本的用例,并使用指定 TargetReplicaSelector 的方法重载。这通常工作得很好。

在对服务进行升级之后(无需更改代码,只是测试在运行时进行升级如何影响通信),一些参与者(总是相同的类型!)在调用 ServiceProxy.Create 时获得对辅助副本的引用,甚至虽然我特别要求使用 TargetReplicaSelector.PrimaryReplica 参数的主副本。其他演员类型继续获得应有的主要地位。

这怎么可能?

编辑1:我知道在升级过程中,主要将成为次要,并且任何次要都将成为主要。我可以在升级期间在资源管理器中看到这一点。

所以看起来 ServiceProxy.Create - 当从某些参与者类型调用时 - 保留了一些关于哪个副本是主要的过时信息?我虽然那个 ServiceProxy 会自动检测这些变化?这是一个错误还是我做错了什么?

Edit2:我发现此服务远程处理文档页面的评论:

Yongjun Dec 7, 2016 如何处理/断开远程服务,

在我们的产品中,在有状态服务 A 中,它会通过 ServiceProxy.Create 连接到另一个有状态服务 B

但是在服务A切换后,通过“netstat -ano”它仍然有到服务B的连接,如果服务A再次切换到主服务器,它将有两个连接到服务B

似乎是同样的问题。

问题:如何避免这个问题?

0 投票
1 回答
2025 浏览

azure - 如何选择正确的 Service Fabric 可靠性层?

我正在阅读有关Service Fabric 群集容量、可靠性层和持久性层的文章。这篇文章(在撰写本文时)列出了以下层次:

  • 白金 - 以 9 的目标副本集计数运行系统服务
  • 金牌 - 以 7 的目标副本集计数运行系统服务
  • Silver - 运行目标副本集计数为 5 的系统服务
  • 青铜 - 运行目标副本集计数为 3 的系统服务

使用高可靠性层(如白金)是否有任何缺点/性能影响?我正在创建几个集群,这些集群将跨越至少 50-100 个虚拟机,并结合了无状态和有状态服务。

0 投票
2 回答
405 浏览

azure-service-fabric - 在初始化期间将 Service Fabric 状态管理器资源注入 ICommunicationListener 的正确方法是什么?

对于 ServiceFabric 有状态的 ReliableService:

我想将 IReliableQueue 注入到 ICommunicationListener(服务总线主题监听器)中,以便将长时间运行的任务排队以便在后台处理。

我最好在工厂方法重载中这样做:

鉴于 StateManager 仅通过 GetOrAddAsync 方法提供对 IReliableQueue 的异步访问,而工厂方法是同步的,因此这种方法说得委婉些。

在 RunAsync 方法之外访问 StateManager 状态的正确方法是什么?

0 投票
0 回答
58 浏览

azure-service-fabric - 获得类似功能的原子/sql时间戳的最佳方法

我需要一些功能来将数据移动到其他系统,并且想知道是否存在某种原子增量。对于可靠的集合复制,我确实看到了类似的东西,但它似乎没有暴露出来。

有任何想法吗 ?我可以构建自己的,但拥有一个单一值的整个集合并在两者上运行事务似乎超过了 kill 。

我看到 transactionId 但我认为这不会在重新启动后持续存在?