如何查找服务结构应用程序服务与节点的关联?(How to find association of Service Fabric application services to nodes?)

编程入门 行业动态 更新时间:2024-10-21 06:46:12
如何查找服务结构应用程序服务与节点的关联?(How to find association of Service Fabric application services to nodes?)

使用System.Fabric.FabricClient.QueryClient方法从远程服务结构集群中获取信息,如何将应用程序服务与托管这些服务的节点相关联?

我在ListEndPoints答案中利用了答案以获取有关我的服务和分区的更多详细信息,但我没有看到将服务映射到节点所需的属性。

var fabricClient = new FabricClient(credentials, connectionString); var nodes = fabricClient.QueryManager.GetNodeListAsync().Result; var apps = fabricClient.QueryManager.GetApplicationListAsync().Result; var services = fabricClient.QueryManager.GetServiceListAsync(app.ApplicationName).Result; var partitions = fabricClient.QueryManager.GetPartitionListAsync(service.ServiceName).Result;

例如

APPA ServiceA_A NodeFe0 NodeFe1 ServiceA_B NodeBe0 NodeBe1 NodeBe2 APPB ServiceB_A NodeFe0 NodeFe1

Using the System.Fabric.FabricClient.QueryClient methods to pull information from a remote service fabric cluster, how can I associate the application services with the nodes hosting those services?

I've leveraged the answer at the ListEndPoints answer to get more details about my services and partitions but I do not see the properties I need for mapping services to nodes.

var fabricClient = new FabricClient(credentials, connectionString); var nodes = fabricClient.QueryManager.GetNodeListAsync().Result; var apps = fabricClient.QueryManager.GetApplicationListAsync().Result; var services = fabricClient.QueryManager.GetServiceListAsync(app.ApplicationName).Result; var partitions = fabricClient.QueryManager.GetPartitionListAsync(service.ServiceName).Result;

e.g.

AppA ServiceA_A NodeFe0 NodeFe1 ServiceA_B NodeBe0 NodeBe1 NodeBe2 AppB ServiceB_A NodeFe0 NodeFe1

最满意答案

此代码可帮助您了解哪些服务分区正在哪些节点上运行

var fabricClient = new FabricClient(); var nodes = await fabricClient.QueryManager.GetNodeListAsync(""); var apps = fabricClient.QueryManager.GetApplicationListAsync().Result; foreach (var app in apps) { Console.WriteLine($"Discovered application:'{app.ApplicationName}"); var deployedPartitions = new Dictionary<Guid, List<string>>(); foreach (var node in nodes) { //get deployed partitions per node var deployed = await fabricClient.QueryManager.GetDeployedReplicaListAsync(node.NodeName, app.ApplicationName); foreach (var dep in deployed) { List<string> list; if (!deployedPartitions.TryGetValue(dep.Partitionid, out list)) { list = new List<string>(); deployedPartitions.Add(dep.Partitionid, list); } list.Add(node.NodeName); } } var services = await fabricClient.QueryManager.GetServiceListAsync(app.ApplicationName); foreach (var service in services) { Console.WriteLine($"Discovered Service:'{service.ServiceName}"); var partitions = await fabricClient.QueryManager.GetPartitionListAsync(service.ServiceName); foreach (var partition in partitions) { var partitionId = partition.PartitionInformation.Id; if (deployedPartitions.TryGetValue(partitionId, out var nodeNames)) { Console.WriteLine($"Discovered {service.ServiceKind} Service:'{service.ServiceName} PartitionId: '{partitionId}' running on nodes {string.Join(", ", nodeNames)}"); } } } }

This code helps you get an overview of which service partition is running on which nodes

var fabricClient = new FabricClient(); var nodes = await fabricClient.QueryManager.GetNodeListAsync(""); var apps = fabricClient.QueryManager.GetApplicationListAsync().Result; foreach (var app in apps) { Console.WriteLine($"Discovered application:'{app.ApplicationName}"); var deployedPartitions = new Dictionary<Guid, List<string>>(); foreach (var node in nodes) { //get deployed partitions per node var deployed = await fabricClient.QueryManager.GetDeployedReplicaListAsync(node.NodeName, app.ApplicationName); foreach (var dep in deployed) { List<string> list; if (!deployedPartitions.TryGetValue(dep.Partitionid, out list)) { list = new List<string>(); deployedPartitions.Add(dep.Partitionid, list); } list.Add(node.NodeName); } } var services = await fabricClient.QueryManager.GetServiceListAsync(app.ApplicationName); foreach (var service in services) { Console.WriteLine($"Discovered Service:'{service.ServiceName}"); var partitions = await fabricClient.QueryManager.GetPartitionListAsync(service.ServiceName); foreach (var partition in partitions) { var partitionId = partition.PartitionInformation.Id; if (deployedPartitions.TryGetValue(partitionId, out var nodeNames)) { Console.WriteLine($"Discovered {service.ServiceKind} Service:'{service.ServiceName} PartitionId: '{partitionId}' running on nodes {string.Join(", ", nodeNames)}"); } } } }

更多推荐

本文发布于:2023-08-05 05:09:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1428570.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:节点   应用程序   结构   find   association

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!