问题标签 [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.
azure - Azure Service Fabric Windows 容器 - 容器间通信
我使用“Windows 2016 DataCenter with Containers”操作系统创建了一个 Azure Service Fabric 集群,并在集群的 80 端口上启用了反向代理侦听。我们打算在此集群上部署我们的旧版 ASP.NET MVC 和 WCF 应用程序。
在我们现有的部署模型中,由于聊天通信和低延迟要求,我们有位于同一主机上的服务相互通信。windows 容器中托管的应用程序是否可以与同一节点上的其他 windows 容器应用程序通信?基本上,我希望在同一个 Service Fabric 节点上的两个 Windows 容器应用程序之间具有节点关联性。
我用一个示例应用程序进行了尝试,看起来唯一的选择是使用动态分配的容器的私有 IP。在 Service Fabric 群集上实例化容器时是否可以传递 --ip-address 参数?
[更新:2017 年 4 月 5 日]
Service Fabric 群集版本:5.5.219.0
总节点类型:1
节点总数:3
两个容器都部署在所有三个节点上。Azure Internet 负载均衡器用于公开 Service Fabric 反向代理。所有服务都通过反向代理在内部和外部访问。
高拉夫
azure - 从服务中返回演员的代理是否正常
我有一些服务接受一些数据,然后我认为应该返回一个用一些值初始化的演员。
另一个服务会这样做:
那么,以这种方式返回演员是否可以,或者我应该返回演员的 ID 并在呼叫视线上请求代理?
UPD: 根据@LoekD 的回答,我做了一个包装器来保证类型安全。
azure-service-fabric - 恢复 Actor 备份时出错 - 找不到方法:'Void System.Fabric.RestoreSettings..ctor(Boolean, Boolean)'
尝试恢复 ActorService 的备份并收到以下错误:Method not found: 'Void System.Fabric.RestoreSettings..ctor(Boolean, Boolean)'
没有内部异常。
它是一个自定义的参与者服务,它扩展ActorService
并实现了一个扩展的接口IActorService
我检查了传入的备份文件夹,它是有效的,并且里面有备份。鉴于它已恢复,我认为它无关紧要,但这是从 Azure blob 存储中检索到的备份
这是引发异常的行:
await restoreCtx.RestoreAsync(restoreRescription, cancellationToken);
这是它所在的方法:
azure-service-fabric - Service Fabric - 通过 ActorProxy 的“对象已关闭”异常
当演员通过 ActorProxy 调用另一个演员时,我在集群上随机捕获了以下异常:
System.Fabric.FabricObjectClosedException:对象已关闭。---> System.Runtime.InteropServices.COMException:来自 HRESULT 的异常:System.Fabric.Interop.NativeRuntime.IFabricKeyValueStoreReplica6.CreateTransaction() 的 System.Fabric.KeyValueStoreReplica.CreateTransactionHelper(KeyValueStoreTransactionSettings 设置) 的 System.Fabric.Interop 的 0x80071BFE。 Utility.WrapNativeSyncInvoke[TResult](Func 1 func, String functionTag, String functionArgs)
--- End of inner exception stack trace ---
at System.Fabric.Interop.Utility.WrapNativeSyncInvoke[TResult](Func
1 func, String functionTag, String functionArgs) 在 Microsoft.ServiceFabric.Actors.Runtime.KvsActorStateProvider.<>c__DisplayClass14.b__13() 在 Microsoft.ServiceFabric.Actors.Runtime.ActorStateProviderHelper.d__61.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.ServiceFabric.Actors.Runtime.ActorStateManager.<ContainsStateAsync>d__17.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at PosteItaliane.Sin.StateManagement.ObservableState.SingleValueWrapper
C:\Users\maurosag\Source\Repos\Equitalia3\SIN\PI.Sin.StateManagement\ObservableState\SingleValueWrapper.cs:line 21 中的 1.d__2.MoveNext() --- 堆栈跟踪从上一个异常位置结束抛出---在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 PosteItaliane.Sin.Utility.ServiceFabric.StatefulActor`1.get_State() .. ... _
在网上搜索,我不知道如何解决它;唯一与 Powershell exec 相关的讨论:
“这意味着这个副本从主要副本降级为次要副本。如果您让异常冒泡,客户端将重新解析并重新连接到新的主节点。现有处理将耗尽主节点。我正在以“按设计”解决问题。如果您仍有疑问,请随时重新打开。”</p>
任何人都可以帮助我吗?
提前致谢。
c# - Azure:演员调用时“服务不存在”
我有一个IActor
我想调用它来做一些简单的基于提醒的计算。它是这样调用的:
但是,每当SetupReminderAsync
调用该方法时,都会出现HRESULT: 0x80071BCD: Service does not exist
异常。我不确定这意味着什么,因为我可以清楚地看到 Actor 的服务在调试模式下启动。我真的可以对正在发生的事情使用一些指导。谢谢!
.net - 用于处理传感器数据的 Service Fabric Actor
我们目前正在构建一个应该能够处理大量传感器事件的系统。
由于需要处理数百万个不同的传感器实例,我认为 Service Fabric Actor 模型将是一个完美的选择。所以想法是让一个 Actor 负责处理一个传感器的事件 (SensorId=ActorId)。
映射很简单,因为我们只需要通过特定的 SensorId 来查询数据,所以我们将所有这些都放在了一个地方,这样可以实现非常快速的查找。
现在的问题是(一些)传感器正在以单个参与者无法处理的速率发送数据。
这就是我们现在被卡住的情况,我们无法提示系统并告诉它为特定传感器(如 Sensor123 和 Sensor567)分配负载到更多 Actor。
是否有可能使用 Service Fabric 提供的虚拟 Actor System 来解决这个问题?
更新 1:
我认为我们对单个演员进行缩放没有问题。我们为一位独特的演员获得大约 5k 条消息/秒。但有些传感器需要 50-100k/s 的目标吞吐量。因此,按照设计(单线程执行),单个参与者将无法完成此操作。
因此,为了澄清最初的问题:我们或多或少地在寻找一种自动划分“某些”参与者的方法。
(当然,我们可以为每个传感器创建 10 个参与者来划分负载。但这会使查找效率低下,另外我们需要 10 倍以上的 RAM。这似乎不合理,因为 0.5-1% 的传感器需要更多吞吐量)
c# - 相同类型的服务结构参与者可以使用不同版本的相同 dll 吗?
使用 Assembly.Load 加载的 dll 有一个返回大型数据集的长时间运行方法,我正在考虑创建 AppDomain 来运行此 dll 的不同版本。但是,我没有使用过 AppDomain,因此我不确定跨 AppDomain 边界的编组/序列化的复杂性和性能。
因此,在探索 AppDomain 之前,我想知道是否可以通过利用 Service Fabric 中的微服务架构来绕过 AppDomain。
谢谢!
azure-service-fabric - Microsoft.ServiceFabric.Actors.Runtime.ActorService 线程安全吗?
关于 Microsoft.ServiceFabric.Actors.Runtime.Actor,我从文档“Actor is an isolated, Independent unit of compute and state with single-threaded execution.”中知道它是单线程执行。
Microsoft.ServiceFabric.Actors.Runtime.ActorService 线程安全吗?关于它的文档很少。我们在应用程序中使用它,在多节点和多实例中似乎不是线程安全的。有人知道吗?
c# - 如何使用“演员提醒”机制在服务结构中安排任务?
我想每天、每周和每月生成发票,并希望定期发送发票。每个客户都有不同的发票设置。
azure - 如何使用多个参与者在 Fabric 服务中安排任务?
使用此代码时出现错误,无法使用开关盒。有没有使用两个或更多演员的替代方法
我的演员班
}
}