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

azure-service-fabric - 测量 Service Fabric Actor 方法的持续时间

我希望测量我的一些 Actor 方法执行所需的时间。我计划使用 OnPreActorMethodAsync 和 OnPostActorMethodAsync 来记录这些方法何时开始和完成执行。

但是,我也希望测量执行这些方法所需的时间。我最初的计划是使用 StopWatch 的实例在 OnPreActorMethodAsync 类中开始计时并在 OnPostActorMethodAsync 类中停止。但是我不确定如何在第二种方法中访问相同的 StopWatch 实例。如果有更好的方法来做到这一点,我会非常感兴趣。

如果有人能在这件事上为我指出正确的方向,那就太好了。

非常感谢

0 投票
1 回答
375 浏览

c# - 带有 .Net Core 的 Service Fabric Actor 模型 - 无法添加 Actor nuget 包

我在 .NetFramework 中有 ServiceFabric/ActorModel 项目,现在我需要将其更改为 .NetCore。我正在关注链接及其在 Github, CalculatorActor中的示例

但我没有设法将Microsoft.ServiceFabric.Actors添加到我的项目中。

包 Microsoft.ServiceFabric 5.6.220 与 netcoreapp1.0 (.NETCoreApp,Version=v1.0) 不兼容。包 Microsoft.ServiceFabric 5.6.220 支持:net45 (.NETFramework,Version=v4.5) 包 Microsoft.ServiceFabric.Data 2.6.220 与 netcoreapp1.0 (.NETCoreApp,Version=v1.0) 不兼容。包 Microsoft.ServiceFabric.Data 2.6.220 支持:net45 (.NETFramework,Version=v4.5) 包 Microsoft.ServiceFabric.Services 2.6.220 与 netcoreapp1.0 (.NETCoreApp,Version=v1.0) 不兼容。包 Microsoft.ServiceFabric.Services 2.6.220 支持:net45 (.NETFramework,Version=v4.5) 包 Microsoft.ServiceFabric.Services.Remoting 2.6.220 与 netcoreapp1.0 (.NETCoreApp,Version=v1.0) 不兼容. 包 Microsoft.ServiceFabric.Services.Remoting 2.6.220 支持:net45 (.NETFramework,Version=v4.5) 包 Microsoft。ServiceFabric.FabricTransport.Internal 2.6.220 与 netcoreapp1.0 (.NETCoreApp,Version=v1.0) 不兼容。包 Microsoft.ServiceFabric.FabricTransport.Internal 2.6.220 支持:net45 (.NETFramework,Version=v4.5) 一个或多个包与 .NETCoreApp,Version=v1.0 不兼容。包还原失败。回滚“...”的包更改。

如果 Microsoft 是否支持 SF 的 .net 核心,这有点令人困惑。有人在此迁移路径上有任何经验吗?

0 投票
2 回答
380 浏览

azure-service-fabric - Service Fabric Actor 提醒时间超过默认值(60 分钟)

这可能是一个非常微不足道的问题,但只是想问(在完成我的初步搜索之后)。持久性 SF 演员在 60 分钟(默认)空闲(未使用)后收集垃圾。ReceiveReminderAsync如果我创建了超过 60 分钟的提醒,仍然会被调用吗?

0 投票
2 回答
442 浏览

azure - 服务结构参与者状态

我们计划将 Service Fabric Actor 模型用于我们的一项用户服务。我们有成千上万的用户,他们有自己的个人资料数据。通过阅读材料,Service Fabric Actor 模型通过其 Service Fabric 集群维护其状态。我无法清楚地了解灾难恢复/计划关闭方案/离线数据访问。在这种情况下,是否需要将数据保存在这些参与者服务之外?

如果我们决定在某一天关闭所有 Service Fabric 集群,并在几天后重新激活,那么数据会发生什么情况?

0 投票
1 回答
112 浏览

c# - 如何以编程方式检索 SF 演员服务名称?

有没有办法以编程方式从其他服务中的 ServiceManifest.xml 检索 DefaultService Name 属性?示例:演员在 Web API 服务中的服务名称。我试图避免对任何东西进行硬编码。

0 投票
1 回答
207 浏览

azure - Azure Service Fabric 参与者和服务

关于服务结构应用程序,请帮助我了解我们需要选择可靠参与者而不是可靠服务的决策因素,反之亦然。如果您能提供这些示例以及我们选择其中一个而不是另一个的原因,那将非常有帮助。

谢谢

0 投票
1 回答
422 浏览

azure - Service Fabric Actors、ReceiveReminderAsync 和 CancellationTokens

我有一个使用提醒的 Azure Service Fabric 参与者。

  • 如果我在参与者处于ReceiveReminderAsync方法中间时删除或升级我的服务会发生什么?
  • 我可以向该ReceiveReminderAsync方法发送取消令牌吗?
0 投票
2 回答
1036 浏览

azure-service-fabric - Service Fabric 参与者自动删除

在 ServiceFabric 应用程序中,我有必要创建数千个有状态的 Actor,因此我需要避免在 Actor 变得无用时累积它们。

我知道我无法从 Actor 本身中删除 Actor,但我不想跟踪 Actor 并循环删除它们。

Actors 运行时使用 Garbace 集合来移除已停用的 Actor 对象(但不是它们的状态);所以,我正在考虑在 OnDeactivateAsync() 方法中删除 Actor 状态,并让 GC 在通常的 60 分钟后释放 Actor 对象。

从理论上讲,这样的事情应该相当于删除Actor,不是吗?

是否有任何剩余的东西只有显式删除才能删除?

0 投票
2 回答
526 浏览

azure-service-fabric - 如何防止 Service Fabric 为 Actors 生成默认服务

每次我在 Visual Studio 中构建 Service Fabric 解决方案时,都会修改 ApplicationManifest 和 ServiceManifest,并为我的解决方案中的所有 Reliable Actor 添加默认服务条目。

我怎样才能防止这种情况?

注意:默认服务不是为我所期望的可靠服务创建的。

最终,我们的目标是在每次新租户/客户通过我们的 Web 门户注册时创建一个“空的”命名应用程序实例(每个租户一个应用程序类型的实例)。

然后,租户可以通过我们的 Web 门户启用/禁用功能,这转换为在租户的应用程序实例中创建/删除 Actor/Service 类型的实例。

如果这不是在 Service Fabric 的多租户场景中实现隔离的正确方法,感谢您提供指导。

0 投票
1 回答
501 浏览

azure-service-fabric - 演员内部 GetStateAsync 上的 System.Fabric.FabricNotPrimaryException

我也在 Github 上问过这个问题 - https://github.com/Azure/service-fabric-issues/issues/379

我有 (n) 个演员每秒钟都在连续提醒执行。

这些演员在过去 4 天里一直运行良好,但每个实例在调用 StateManager.GetStateAsync 时都会收到以下异常。随后,我看到所有的演员都被停用了。

我找不到与可靠参与者遇到的此异常有关的任何信息。

一旦发生此异常并且参与者被停用,它们就不会被重新激活。

发生此错误的条件是什么?如何进一步诊断问题?

“System.Fabric.FabricNotPrimaryException:引发了‘System.Fabric.FabricNotPrimaryException’类型的异常。在 Microsoft.ServiceFabric.Actors.Runtime.ActorStateProviderHelper.d__81.MoveNext() --- 堆栈跟踪从上一个引发异常的位置结束--- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.ServiceFabric.Actors.Runtime.ActorStateManager.d__181.MoveNext() ---从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Microsoft.ServiceFabric.Actors.Runtime 的 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) .ActorStateManager.d__7`1.MoveNext()

看看集群资源管理器,我现在可以在该参与者服务的一个分区上看到以下警告:

不健康事件:SourceId='System.FM'、Property='State'、HealthState='Warning'、ConsideWarningAsError=false。分区重新配置花费的时间比预期的要长。fabric:/Ism.TvcRecognition.App/TvChannelMonitor 3 3 4dcca5ee-2297-44f9-b63e-76a60df3bc3d S/S IB _Node1_4 Up 131456742276273986 S/P RD _Node1_2 Up 131456742361691499 P/S RD _Node1_0 Down 131457861497316547 (Showing 3 out of 4 replicas.可用副本总数:1。)

在该分区的主副本中出现警告:

不健康事件:SourceId='System.RAP'、Property='IReplicator.CatchupReplicaSetDuration'、HealthState='Warning'、ConsideWarningAsError=false。

并在 ActiveSecondary 中发出警告:

不健康事件:SourceId='System.RAP'、Property='IStatefulServiceReplica.CloseDuration'、HealthState='Warning'、ConsideWarningAsError=false。开始时间(UTC):2017-08-01 04:51:39.740_Node1_0

5 个节点中有 3 个显示以下错误:

不健康事件:SourceId='FabricDCA'、Property='DataCollectionAgent.DiskSpaceAvailable'、HealthState='Warning'、ConsideWarningAsError=false。数据收集代理 (DCA) 没有足够的磁盘空间进行操作。如果这种情况继续发生,将不会收集诊断信息。

更多信息:

我的集群设置由 5 个 D1 虚拟机节点组成。

Microsoft-Service Fabric 应用程序中的事件查看器错误:

我看到很多

无法从 ETL 文件 D:\SvcFab\Log\QueryTraces\query_traces_5.6.231.9494_131460372168133038_1.etl 读取部分或全部事件。System.ComponentModel.Win32Exception (0x80004005): 句柄在 System.Fabric.Dca.Utility.PerformWithRetries[T](Action`1 worker, T context, RetriableOperationExceptionHandler exceptionHandler, Int32 initialRetryIntervalMs, Int32 maxRetryCount, Int32 maxRetryIntervalMs) at FabricDCA.EtlProcessor.ProcessActiveEtlFile(FileInfo etlFile, DateTime lastEndTime, DateTime& newEndTime, CancellationToken cancelToken)

以及一堆警告,例如:

Api IStatefulServiceReplica.Close() 在分区 {4dcca5ee-2297-44f9-b63e-76a60df3bc3d} 副本 131457861497316547 上运行缓慢,StartTimeUTC = ‎2017‎-‎08‎-‎01T04:51:39.789083900Z

最后我想我可能是这一切的根源。事件查看器应用程序日志有一大堆错误,例如:

Ism.TvcRecognition.TvChannelMonitor (3688) (4dcca5ee-2297-44f9-b63e-76a60df3bc3d:131457861497316547):尝试写入文件“D:\SvcFab_App\Ism.TvcRecognition.AppType_App1\work\P_4dcca-b6ee-2297-44e -76a60df3bc3d\R_131457861497316547\edbres00002.jrs" 在偏移量 5242880 (0x0000000000500000) 处 0 (0x00000000) 字节在 0.000 秒后失败,系统错误 112 (0x00000070):“磁盘空间不足。”。写入操作将失败,错误为 -1808 (0xfffff8f0)。如果此错误仍然存​​在,则文件可能已损坏,可能需要从以前的备份中恢复。

好的,该错误指向 D 驱动器,即临时存储。它有 549 MB 的可用空间,而不是 50 GB。服务结构真的应该坚持到临时存储吗?