问题标签 [service-fabric-stateless]

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 投票
0 回答
193 浏览

service - 解决对服务结构无状态服务的引用的正确方法是什么?

我一直在开发一个大量使用无状态服务结构服务的系统。我以为我很清楚事情是如何运作的,但是我现在做的事情略有不同,很明显我的理解是有限的。

我有一个由 5 个节点组成的集群,为了简单起见,我所有的服务的实例数目前都是 -1。每个节点上的所有内容都意味着我可以观察单个节点的基本行为正确性。

我刚刚添加了一个需要实例计数为 1 的新服务。但是,我似乎无法正确解析此服务。相反,SF 尝试解决每台机器上的服务,该服务对所有机器都失败,但存在单个服务的机器除外。

我的假设是 SF 会自动解析对集群中任何位置的服务的引用。如果该引用失败,那么它将自动解析一个新的引用,依此类推。至少对于我目前做事的方式来说,这似乎是不正确的。

我可以使用与此类似的代码找到一个实例,但是如果该实例失败会发生什么。我如何获得另一个参考?

我可以解决这样的每个呼叫,但是当我真的只想解决 IXyzService 并将其传递时,这似乎是一个糟糕的主意。

这就是我解决服务的方式,因为我使用的是 V2 自定义序列化。

这确实有效,但它似乎只能解决同一台机器上的服务。所以 ServiceA 会在同一台机器上解析对 ServiceB 的引用。但是,如果出于正当的原因机器上不存在 ServiceB,则解析将失败。

概括:

ServiceA 使用 V2 自定义序列化ServiceProxyFactory来解析对 ServiceB 的接口引用的正确方法是什么,无论 ServiceA 和 ServiceB 在集群中的何处?

更新:

它不起作用的证据是解决的呼吁永远挂起。根据此链接,这是正确的行为,因为服务最终会出现。然而,只有 1 个节点正确解决了它,即单个实例处于活动状态的节点。我已经尝试了几件事,甚至等待 30 秒,以确保它不是初始化问题。

监听器代码

这基本上完全遵循V2 自定义序列化教程。

连接代码

0 投票
1 回答
148 浏览

c# - 从 .Net Core Stateless Service 调用 .Net 框架 Service Fabric Actor

Actor 依赖于用 .Net Framework 编写的 Nuget 包。接口项目是用 .Net 标准编写的,因此可以从 .Net 核心无状态服务中使用。

当我尝试从无状态服务调用我的演员时,我收到一个错误:

我已经尝试按照微软的监听器升级教程在演员上添加 V2Listener,但没有成功。

0 投票
1 回答
175 浏览

certificate - 使用 X509FindValueSecondary 内的证书加密的 ServiceFabric 机密

我有一个加密的应用程序机密

在我的 ApplicationManifest 中,我指定了相应的证书来解密秘密:

我的秘密实际上是用2...证书加密的,我在X509FindValueSecondary. 我认为当它没有找到证书时X509FindValue,就我而言1...,它会退回到寻找证书X509FindValueSecondary。这就是我认为“次要”的意思。但是,我的应用程序没有启动:

X509FindValue和 和有什么不一样X509FindValueSecondary

0 投票
1 回答
1145 浏览

azure-service-fabric - 从 Visual stuido 或 Service Fabric Explorer 回滚到以前版本的 Service Fabric

我已通过 Visual Studio 发布将 Service Fabric 应用程序版本 1.25.0 发布到本地集群以及 Azure 中的集群。一切正常。

Visual Studio 也为我提供了升级应用程序的选项。但是我无法找到如何回滚和发布我的应用程序的先前版本,比如说来自 Visual Studio 的 1.23.0。

如果无法从 Visual Studio 中实现,是否可以从服务结构资源管理器中实现?

我看过Azure Service Fabric Rollback之类的帖子,但它们与 PowerShell 脚本有关,我更喜欢从 Visual Studio 或 Service Fabric Explorer 回滚。

0 投票
3 回答
138 浏览

java - 本地集群中的服务结构 java 应用程序部署失败

我是服务结构的新手,并试图将 java 应用程序部署到具有 5 个节点的本地服务结构集群。我正在使用 Ubuntu VM 并按照以下步骤在 asf 集群中构建和部署它。部署时我遇到错误。我也尝试在 asf 远程集群中部署并遇到了同样的问题。你能帮我解决这个问题吗?

链接:Jav 应用程序部署到 ASF 集群

错误代码:在此处输入图像描述

0 投票
0 回答
108 浏览

azure-service-fabric - 服务结构资源管理器文件部署问题(apim.json 和 apim.parameters)

我的要求如下:

我有一个 Web API,其端口已从 ServiceManifest.xml 文件中删除。这样做是为了让我可以从 API 管理中实现多节点多调用功能。(即我想删除对端口号的依赖)

在部署 API 管理资源文件时,我在部署 apim.json 和 apim.parameters.json 文件时遇到了问题。

以下是我经常遇到的例外。“服务激活失败。请查看左侧活动日志中的详细信息。如果您要部署到 VNET,请确保遵循https://aka.ms/apiminvnet中所述的先决条件”

上传时日志文件中没有任何内容。

我正在使用以下链接进行部署和测试。https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-tutorial-deploy-api-management

我在运行 powershell 脚本时遇到异常

New-AzureRmResourceGroupDeployment -ResourceGroupName $groupname -TemplateFile "$templatepath\apim.json" -TemplateParameterFile "$templatepath\apim.parameters.json" -Verbose

0 投票
1 回答
983 浏览

azure - 具有 5 个节点的 Service Fabric 本地开发集群运行的实例和分区少于预期

我在本地开发集群上运行 Service Fabric 应用程序,在我的 PC 上“模拟”了 5 个节点。

该应用程序有一个公共 API 无状态服务,实例计数设置为 -1。

我希望在 Service Fabric Explorer 中看到 5 个无状态服务实例,但我只看到 1 个。

该应用程序还有一个参与者服务,其分区计数设置为 10(由 Visual Studio 自动生成的配置)。

当应用程序部署到我的 PC 上的开发集群时,Service Fabric Explorer 中只能看到一个分区。在我模拟“大”负载并且我的 PC 的 CPU 和内存使用率在 90% 左右或以上之后,仍然只有一个演员服务分区。我创建了一个有状态服务,将分区计数设置为 5,以检查我的环境是否有问题,但它按预期运行。

这对于无状态服务是正常的还是我的配置有问题。此行为是否特定于开发集群,设置为避免端口冲突之类的事情。

演员服务怎么样。根据文档动态分区缩放是可能的,但是即使在高负载期间,actor服务的分区数量也不会增加。此外,Actor 文档中没有提到动态分区缩放。

有关的

提前致谢!

编辑:经过一些不同配置的测试后,我得到了它的工作。

ApplicaitonManifest.xml 中的原始配置:

有效的配置:

请注意,唯一的区别是参数名称:

HttpAPI_InstanceCount

变成

HttpAPIInstanceCount

SystemStatusConsumerActorService_PartitionCount

变成

SystemStatusConsumerActorServicePartitionCount

0 投票
1 回答
25 浏览

azure-service-fabric - 为没有 Service Fabric 的应用程序分配名称

我在服务结构中有一个应用程序,我将上传另一个应用程序。我想知道是否可以为每个应用程序分配不同的名称。通过应用程序,我使用以下地址访问:

您可以配置访问权限,如下所示:?

http://application1.sf-spartan.eastus.cloudapp.azure.com

或者

http://sf-spartan.eastus.cloudapp.azure.com/application1

0 投票
1 回答
394 浏览

http - 与本地主机上的内部反向代理的内部 ServiceFabric 通信

我有一个带有两个应用程序的 ServiceFabric。On 应用程序从 ServiceFabric 外部调用,然后向 ServiceFabric 内的其他应用程序发出 HTTP 获取请求。

我的第一次尝试是使用 ServiceFabric 的反向代理 IP 寻址第二个应用程序,与第一个应用程序的寻址相同:

http://10.0.0.1:19081/App2/App2.Service/

这导致 ServiceFabric 内部的通信不可靠,第一个请求总是失败,而第二个请求大部分成功。

然后我在https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reverseproxy阅读了有关内部 ServiceFabric 通信的信息。现在我使用 localhost 处理我的第二个应用程序,它似乎按预期工作:

http://localhost:19081/App2/App2.Service/

唯一悬而未决的问题是:使用 localhost 寻址 ServiceFabric 内的应用程序是否仅因为应用程序也在同一节点上运行而起作用?还是因为存在真正的反向代理行为而起作用,即使应用程序不在同一个节点上运行,请求也会到达它?

0 投票
1 回答
41 浏览

azure-service-fabric - 有没有办法为不同的无状态服务实例分配一个 int 号?

我正在构建一个解决方案,我们将在其中将(服务结构)无状态服务部署到 K 个实例。该服务的任务是处理一些工作负载(如查询),我想尽可能平均地分配它们之间的工作负载 - 我想让它成为一个动态解决方案,这意味着如果我决定明天从 K 个实例转到 N 个实例,我希望工作负载拆分以一种现在自动将负载分配到 N 个实例的方式进行。我没有为此服务指定任何分区。

举个例子 -

假设我想查询数据库以检索特定的记录块。我有 5 个节点。我希望这 5 个节点检索不同 1/5 的记录集。这可以通过一些查询逻辑来实现,例如 (row_id % N == K) 其中 N 是实例总数, K 是唯一的instance_number

我希望利用FabricRuntime.GetNodeContext().NodeId- 但这会返回一个不太有用的 guid。

我正在寻找一种方法,我可以确定地说它是 N 中的实例编号 M(我需要能够通过 1..N 命名实例) - 所以我可以根据这个设置我的查询逻辑。其中一个要求是,如果该实例出现故障/崩溃等...当 SF 自动重新启动它时,它仍应标识为相同的实例 ID - 以便 2 个或更多节点不会查询同一组结果。

解决这个问题的最佳方法是什么?ApplicationManifest.xml有没有通过or涉及纯配置的解决方案ServiceManifest.xml