问题标签 [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 - 通过 URI 调用 Service Fabric Actor Service 时找不到 V2Listener
试图获取演员服务中所有演员的列表,我得到一个 AggregateException。
System.AggregateException: FabricInvalidAddressException: NamedEndpoint 'V2Listener' not found in the address '{"Endpoints":{"V2_1Listener":"LautarosMonster:30006+f87ebfe0-9f5c-435f-ac5a-a62ab13eda5d-132059632019035414-bf7ac379-8bc1-c1 -339efc840b5b"}}' 用于分区 'f87ebfe0-9f5c-435f-ac5a-a62ab13eda5d'
在这里,我得到了 UserActor:
我很确定我的 URI 命名约定是正确的。这就是我获得actorServiceProxy的方式
应用程序名称是“ECommerce”,我试图调用的服务是“UserActor”
在我调用 proxy.GetActorsAsync 的 PagedResult 行上引发异常
azure - 由于可能的阻塞,Service Fabric Actor 通知在首次调用后无法触发事件处理程序
我有 2 个可靠的演员叫GameActor
和PlayerActor
。当玩家移动时向玩家ClientApp
发送消息PlayerActor
。然后向PlayerActor
发送消息以GameActor
指示进行了移动。调用后,方法中的方法会GameActor
触发通知。此通知由ClientApp GameEventsHandler
. 然后ClientApp
调用 上的方法GameActor
来检索最新的玩家位置。
ClientApp -> PlayerActor.MoveTo() -> GameActor.NotifyPlayerMoved() -> 触发 ScoreBoardUpdated 事件
由该事件触发的 GameEventsHandler -> GameActor.GetLatestPlayerInfo()
我遇到的问题是这个。我第一次运行它时,它GameEventsHandler
被触发并尝试GameActor
按预期调用。GameActor
接收消息并返回预期的响应。但是客户端似乎没有收到消息。看起来它被阻塞了,因为它没有抛出错误或任何输出。事件处理程序根本不会处理任何后续通知。
游戏演员
PlayerActor
客户
游戏事件处理程序
但是,如果我将事件处理程序逻辑包装在 aTask.Run()
中,它似乎可以工作。
此处演示的完整源代码https://github.com/dasiths/Service-Fabric-Reliable-Actors-Demo
AFAIK 通知不会阻塞且不可靠。所以我不明白为什么我的初始实现不起作用。根据我的理解,可重入模式也不适用于此处。有人可以向我解释这里发生了什么吗?这是预期的行为还是错误?
azure-service-fabric - Service Fabric Actor 备份适用于 1 个参与者,而其他所有参与者都失败
我有一个 SF 应用程序,在一个常见项目中部署了 5 个参与者。我需要备份这些参与者的状态。
现在我在一个单节点开发集群上。我按照文档说明进行操作,1 个演员完美地工作,备份和恢复。当我尝试对其他演员做同样的事情时,备份失败。失败演员的演员服务没有附加到我的扩展演员服务,而是附加到基础服务,所以当我尝试调用我的备份逻辑时,我得到“接口未实现”异常。
如果我将调试单步调试到一个演员方法并观察 ActorService 属性,我会确认它没有附加到我的扩展类,它使用的是基类:
Microsoft.ServiceFabric.Actors.Runtime.ActorService
代替工作的演员具有我的扩展类类型的 ActorService :
ExtActorService.MyActorService
我为所有演员做完全相同的事情,为什么有些没有在我的自定义类中注册?
service-fabric-stateful - 构建 Service Fabric 应用程序需要大量时间
使用大约 3 个服务和 4 个参与者构建一个 Service Fabric 应用程序,它非常慢。它以正常速度构建,直到它到达 Service Fabric 项目,然后停留 5 分钟以上,直到它完成构建项目。包装也需要大约 5 分钟。
起初我以为是 Resharper 变慢了,所以我卸载了它,只是稍微快一点......
我的 PC 非常快(Intel Core i7、32GB RAM、三星 SSD),其他项目类型也很快。
任何想法?
c# - 服务结构参与者的静态类配置
Service Fabric Actor 用于访问数据库,所有方法都假设使用 Dapper 作为 ORM 工具。
我发现作为解决当前问题的最佳方法的一件事是在 Dapper 中使用称为 SqlMapper 的东西。这样,您可以定义处理某些数据类型的一般行为,例如:
当您使用 DateTimeHandler 等自定义处理程序声明上述静态方法 (AddTypeHandler) 时,使用 Dapper 框架完成的映射将确保任何 dateTime 类型正确通过上述处理程序。
我希望看到这种情况发生在每个 Actor 通过 Dapper 与数据库通信时。我还没有看到它在尝试使用几个不同的地方(例如 Actor constructor() 或 main 方法,如下所示)声明上述静态方法:
service-fabric-actor - Service Fabric 运行时未从 Actor 服务实例回收未使用的内存
我们的应用,一个请求在任意一个分区创建一个actor,处理一个请求在actor执行过程中内存增加200MB-250MB,执行完成后我删除了actor
分区中没有活动的参与者,我们可以通过查询结构来检查,但内存仍然被阻塞了很多分钟(5 分钟 - 超过 50 分钟)。后来的 exe 内存大小只减少了几 MB。
根据这个文档内存应该由运行时在理想超时中声明。我的设置是
我也在使用这个属性
在演员的并行处理期间,它的影响是巨大的。
state - Service Fabric Actor State:在持久模式下从哪里读取状态?
在 Persistent 模式下,Service Fabric Actor 状态持久保存在磁盘上并复制到其他节点,这在文档中很清楚。我的问题是关于演员状态的连续查询,在演员的整个生命周期中,每次调用是从磁盘读取还是在第一次调用磁盘后从内存中提取?
azure-service-fabric - 同一个 Service Fabric Actor 应用程序中是否有大量的 Actor?
我想知道在“现实生活”中,而不仅仅是在理论上,同一个应用程序中的演员数量是否有最大限制?它知道同时处理 500,000 名演员吗?假设我有物理资源(cpu 和内存)
azure-service-fabric - 如何在 Windows Docker 容器上安装 Azure Service Fabric SDK?
我们在托管在 Service Fabric 集群上的 Docker 容器中运行了 asp.net 核心应用程序。在从 asp.net 核心应用程序创建托管在同一集群中的参与者时,我们遇到了以下错误。
无法加载 DLL 'FabricCommon.dll' 或其依赖项之一:找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)
这可能是因为 docker 容器没有服务结构运行时。有人可以指出如何在 Windows Docker 容器中安装 Service Fabric SDK,或者有人可以建议其他方法来从 Docker 容器中激活 Service Fabric Actor 吗?
azure-service-fabric - 如何使用服务结构安排服务在每天和特定时间运行?
我正在尝试构建一个服务,使其每天在特定时间运行一次,以尽量减少使用服务结构对数据库的多次调用