问题标签 [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.
azure-service-fabric - 找不到使用 WcfCommunicationListener 的无状态服务
我正在尝试使用IServiceProxyFactory
CreateServiceProxy
方法找到我的无状态服务。它似乎找到了服务实例,但是当我调用一个方法时它得到一个错误"Client is trying to connect to invalid address net.tcp://localhost..."
。无状态服务使用 WcfCommunicationListener。
c# - 带有自定义元素的 Service Fabric 发布配置文件
我正在尝试通过添加一个可用于我的新元素来修改发布配置文件,Deploy-FabricApplication.ps1
但是当我发布它时,我收到一条错误消息,指出 XML 文档中存在错误。看起来 XML 配置文件模式首先得到验证。是否有解决方法或者发布配置文件不是放置这个的地方。发布配置文件中的此附加元素将仅用于部署,例如用于发送消息/通知的参数。我不想在我的Deploy-FabricApplication.ps1
. 我认为发布配置文件将是一个理想的选择,因为每个目标环境都已经拥有自己的配置文件。
.net - Azure Service Fabric InvokeWithRetryAsync 巨大的开销
我目前正在开发一个需要高吞吐量的 Service Fabric 微服务。
我想知道为什么我无法在我的工作站上使用环回实现每秒超过 500 条 1KB 消息。
我删除了所有业务逻辑并附加了一个性能分析器,只是为了测量端到端的性能。
似乎大约 96% 的时间用于解决客户端问题,而只有大约 2% 的时间用于处理实际的 Http 请求。
我在一个紧密的循环中调用“发送”进行测试:
对此有什么想法吗?根据文档,我调用服务的方式似乎是 Service Fabric 最佳实践。
更新:缓存 ServicePartioningClient 确实提高了性能,但是使用分区服务,我无法缓存客户端,因为我不知道给定 PartitionKey 的分区。
更新 2:很抱歉,我在最初的问题中没有包含完整的详细信息。在最初实现基于套接字的通信时,我们注意到 InvokeWithRetry 的巨大开销。
如果您使用 http 请求,您不会注意到太多。一个 http 请求已经花费了大约 1 毫秒,因此为 InvokeWithRetry 添加 0.5 毫秒并不是那么明显。
但是如果你使用原始套接字,在我们的例子中需要 0.005 毫秒,为 InvokeWithRetry 增加 0.5 毫秒的开销是巨大的!
这是一个 http 示例,使用 InvokeAndRetry 需要 3 倍的时间:
我知道 InvokeWithRetry 添加了一些我不想从客户那里错过的好东西。但它是否需要在每次调用时解析分区?
azure-service-fabric - 产品目录(电子商务)的服务结构可靠集合?
对于数以百万计的产品,可靠的集合是否是一个不错的选择(查询性能、灵活的模型等),或者我必须看到 nosql 数据库?
谢谢
c# - 同一节点上动态创建的服务的 Service Fabric 进程隔离
我有一个由两种服务类型组成的 SF 应用程序类型——无状态 WebApi 网关服务类型和无状态 Worker 服务类型。我正在使用默认网关服务实例创建一个应用程序实例。Gateway 服务实例使用如下代码按需动态创建 Worker 服务实例(client
变量为System.Fabric.FabricClient
实例):
当 SF 将两个或多个 Worker 服务类型的实例放在一个节点上时,它们都共享同一个进程(即 Worker.exe)。这是有问题的,因为不同的 Worker 服务实例需要从不同的文件共享中动态加载不同版本的程序集。因此,我的问题是:
是否可以强制 SF 在不同进程中的一个节点上托管多个相同类型的服务实例?
(我认为来宾可执行文件就是这样工作的。)
asp.net-web-api - 在 Azure Service Fabric (API) 中从一个微服务向另一个微服务发送消息
使用 Service Fabric 来保证我需要从服务 1(主要是 API)发送到服务 2(主要是 API)的消息不会丢失(黑色箭头)的最佳架构是什么?
想法:
1
1.a. 使服务 1 和 2 有状态服务。拥有一个有状态的 Web API 是不是一个糟糕的调用?
1.b。使用 Reliable Collections 将消息从 API 代码发送到服务 2。
2
2.a. 使服务 1 和 2 无状态服务
2.b。添加第三个服务
2.c。从服务 1 通过排队系统(即:服务总线)发送消息
2.d。由第三次服务接机。注意:这第三个服务也可以访问服务 2 (API) 可以访问的数据库。不是微服务架构的理想解决方案,对吧?
3
3.a. 还有其他想法吗?
请记住,目标是永远不会丢失消息,即使服务 2 完全关闭或临时删除......所以不要直接调用。
谢谢
c# - 访问 Azure Service Fabric 有状态服务状态
我已将 WebAPI 添加到我的有状态服务中,并希望从中访问StateManager
(从StatefulService
类实现之外)。
最好的方法是什么?
目前我正在为此使用一个小班:
并将值放入 RunAsync 的方法中StatefulService
:
azure-service-fabric - 有状态服务辅助副本 RunAsync
对于有状态服务,它是否在辅助副本上运行/执行 RunAsync 中的进程?
azure-service-fabric - 具有命名侦听器的 FabricTransportServiceRemotingListener 类型的多个 StatefulService 副本侦听器
基本上我希望能够从辅助副本中读取。因此,我尝试在只读侦听器上添加另一个带有 listenerOnSecondary 参数的命名侦听器。但是 SF 在本地部署时无法创建此有状态服务的实例。
c# - Keeping State in Service Fabric Actors
I'm looking at starting to use Actors within Service Fabric but I wanted to just clarify a few things before getting started.
I have a API that accepts a request from the user to process some data and returns an ID. Multiple requests from the users don't overlap in processing and are completely isolated so I feel that actors works well for this.
However what I want to understand is that would it be good practice to store the state locally within each actor that I create from each request and then when the api queries that data?
I understand that the actors get deactivated when not "being used" (https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-actors-lifecycle) but still keep their state and are reactivated when a new call is made to the actor. So in theory there wouldn't be any problem if each actor gets assigned the same ID that gets sent back to the user, then the user can come back and query the data even if the actor has been deactivated.
Is this a good approach or should I just get the actors to do the work and offload the storage to another stateful service? Be good to get a list of pros/cons to this problem.