如何通过 API 管理动态发现 Service Fabric 中托管的服务?

2023-12-13

  1. 假设我在 Service Fabric 集群中托管了服务 A 和 B。它们分别在端口 7001 和 7002 上侦听(在集群内部)。
  2. 假设我将服务结构负载均衡器配置为侦听端口 8001 并将请求转发到服务 A 的端口 7001(集群内部),侦听端口 8002 并将请求转发到服务 B 的端口 7002(集群内部) 。
  3. 假设我为服务 A 和 B 配置 API 管理,并将请求路由到负载均衡器上的适当端口。
  4. 这一切都有效。
  5. 现在,我不想手动映射每个服务的 url 路由,而是希望动态发现服务结构中托管的服务(通过 API 管理)并在运行时动态路由请求。
  6. 为此,我知道我必须编写一个策略(最有可能使用 C#)来从某处查找此信息。
  7. 但我不确定到底要查询什么来查找服务结构集群中托管的负载平衡端口和服务。
  8. 我想到在同一个 Service Fabric 集群中创建另一个服务 C,并使用它(来自 API 管理)来提供集群的内部信息。
  9. 但我无法找到查找本地服务端口信息或负载平衡服务端口信息的方法。

我该怎么办?


这是发现集群中运行的服务和端点的方法。 (请记住,您还需要监视更改。)

private static void ListEndpoints()
{
    var resolver = ServicePartitionResolver.GetDefault();
    var fabricClient = new FabricClient();
    var apps = fabricClient.QueryManager.GetApplicationListAsync().Result;
    foreach (var app in apps)
    {
        Console.WriteLine($"Discovered application:'{app.ApplicationName}");

        var services = fabricClient.QueryManager.GetServiceListAsync(app.ApplicationName).Result;
        foreach (var service in services)
        {
            Console.WriteLine($"Discovered Service:'{service.ServiceName}");

            var partitions = fabricClient.QueryManager.GetPartitionListAsync(service.ServiceName).Result;
            foreach (var partition in partitions)
            {
                Console.WriteLine($"Discovered Service Partition:'{partition.PartitionInformation.Kind} {partition.PartitionInformation.Id}");


                ServicePartitionKey key;
                switch (partition.PartitionInformation.Kind)
                {
                    case ServicePartitionKind.Singleton:
                        key = ServicePartitionKey.Singleton;
                        break;
                    case ServicePartitionKind.Int64Range:
                        var longKey = (Int64RangePartitionInformation)partition.PartitionInformation;
                        key = new ServicePartitionKey(longKey.LowKey);
                        break;
                    case ServicePartitionKind.Named:
                        var namedKey = (NamedPartitionInformation)partition.PartitionInformation;
                        key = new ServicePartitionKey(namedKey.Name);
                        break;
                    default:
                        throw new ArgumentOutOfRangeException("partition.PartitionInformation.Kind");
                }
                var resolved = resolver.ResolveAsync(service.ServiceName, key, CancellationToken.None).Result;
                foreach (var endpoint in resolved.Endpoints)
                {
                    Console.WriteLine($"Discovered Service Endpoint:'{endpoint.Address}");
                }
            }
        }
    }
}

您可以使用 PowerShell 与负载均衡器通信:

Get-AzureRmLoadBalancer

最后,您需要自己想出一种将负载均衡器后端端口与服务端点相匹配的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过 API 管理动态发现 Service Fabric 中托管的服务? 的相关文章

  • 从 Service Fabric 集群中删除应用程序

    我尝试使用服务结构资源管理器从服务结构中删除应用程序 我使用 删除应用程序 操作删除了我的应用程序 然后 当我尝试取消配置应用程序类型时 我收到错误消息 错误 版本 1 0 0 的应用程序类型无法取消配置为 它仍然包含活动的应用程序 我可以
  • 部署期间 Azure 中的 Service Fabric 错误

    将集群部署到 Azure 时遇到问题 一切都在本地运行 但是当部署到 Azure 时 我在尝试调用其中一项服务时收到错误 在 Azure 中 服务结构是6 1 480 9494 并且无法升级 但我的本地版本是6 2 262 94946天前发
  • Actor 方法启动/停止日志 |添加附加信息

    对于 azure actor 服务 Actor Method Start Stop 会记录在 诊断 窗口中 如下所示 如何在每次调用方法时添加一些额外的详细信息 例如 Correlation Id Timestamp 2016 09 14T
  • Service Fabric 多租户

    我们计划将 Azure Service Fabric 用于面向数据的多租户应用程序 通常有 100 多个客户 每个客户有 5 100 个用户 查看文档 我得出的结论是 最好的方法是为每个客户使用应用程序实例 而不是尝试使用配置文件来实现多租
  • 在开发人员计算机上自动创建没有 DefaultServices 的服务

    在最近的 Service Fabric 社区问答第 24 版中 有很多关于在 Service Fabric 中使用 DefaultService 构造的讨论 ApplicationManifest xml以及它的缺点 Microsoft 建
  • 如何枚举所有分区并聚合结果

    我有一个多分区的有状态服务 我怎样才能枚举它的所有分区和聚合结果 使用服务远程处理用于客户端和服务之间的通信 您可以使用枚举分区FabricClient var serviceName new Uri fabric MyApp MyServ
  • Service Fabric 中的应用程序洞察?

    我需要在我正在开发的 Azure Service Fabric 应用程序中添加性能日志记录 我尝试遵循以下指南 该指南看起来非常简单明了 https github com Microsoft azure content blob maste
  • 在 Service Fabric 中通过 HTTPS 调用 WCF:请求已中止:无法创建 SSL/TLS 安全通道

    I m calling a WCF service over HTTPS gt The certificates are ok See screenshot 客户端证书安装在我的帐户和本地计算机下 两者均可出口 所以我有一段可以在控制台应用
  • 服务结构具有 100 万个键的可靠字典性能

    我正在使用包含约 100 万个键的可靠字典来评估 Service Fabric 的性能 我得到的结果相当令人失望 所以我想检查我的代码或我的期望是否错误 我有一本初始化的字典dict await stateManager GetOrAddA
  • Azure Service Fabric 和消息队列

    现在有了 Azure Service Fabric 是否还有使用单独的队列解决方案 例如 Windows Service Bus 的用例 缺点可能会成为新的单点故障 但有优点吗 队列可以添加一些缓冲 但另一方面 Service Fabric
  • 如何在单个服务中托管多个 Service Fabric Actor 类型?

    我读了here https azure microsoft com en gb documentation articles service fabric reliable actors platform 应该可以在同一服务中托管紧密耦合的
  • 访问 Service Fabric 中的文件系统

    当我从服务总线队列收到新消息时 我需要在 Service Fabric 服务中使用 ffmpeg 对视频进行编码 我可以从资源中提取 ffmpeg exe 并运行它 但我可以将输入 输出视频文件保存在内部文件系统中吗 我通过以下代码在本地集
  • 可靠集合缓存作为 Service Fabric 中的缓存

    我的系统使用一堆微服务来处理一个项目 我计划创建一个有状态微服务来保存该项目的最新状态 在该服务中 我计划将所有项目状态存储在可靠的字典中 并且每当访问项目时都会更新该项目的 上次访问 字段 我的要求是 我只想将最近使用的项目存储在可靠的集
  • 无法对安全 Service Fabric 群集的 FabricClient 进行身份验证

    我有一个安全的服务结构集群 相同的证书用作服务器证书和客户端身份验证 我无法创建FabricClient在控制台应用程序中 它允许我连接到该集群 我正在使用记录的代码片段here https learn microsoft com en u
  • Azure Service Fabric 节点、节点类型、实例和规模集

    在尝试了几天Azure的Service Fabric之后 我仍然对以下四个关键词感到不舒服 实例 节点 节点类型 规模设定 他们的意思是什么 有什么区别 Instance 取决于上下文 它可能意味着虚拟机 服务实例等 Node 集群内的节点
  • Service Fabric:找不到 EntryPoint Blah.exe

    我进行了一些项目重命名并更改了文件夹结构 现在我无法将服务结构应用程序部署到本地服务结构集群 Register ServiceFabricApplicationType 找不到 EntryPoint IdentityService exe
  • 访问 Azure Service Fabric 有状态服务状态

    我已将 Web API 添加到我的有状态服务并想要访问StateManager从它 从外面StatefulService类实现 最好的方法是什么 目前我正在为此使用一个小类 internal static class InstanceAcc
  • Service Fabric:删除了参与者,现在升级失败

    我正在尝试混合使用有状态和无状态参与者来升级 Service Fabric 应用程序 我做了一些重构 因此删除了一些我不再需要的演员 现在 当我尝试升级应用程序时 出现以下错误 在删除服务类型之前 必须显式删除服务 经过一番思考后 我thi
  • 应用洞察和服务结构?

    I found this https stackoverflow com questions 37348793 application insights in service fabric几个月前有关 Application Insight
  • 使用Azure Service Fabric的默认客户端时如何向请求添加消息头?

    我想知道是否可以将自定义消息头注入到传出请求中以携带附加信息 而无需反序列化有效负载来完成身份验证 验证或请求关联等功能 例如通过消息检查器提供的 wcf Update 使用 SDK v2 您现在可以 相对 轻松地修改 Reliable S

随机推荐

  • 数据库关系

    在数据库中建立正确的关系除了数据完整性之外还有其他帮助吗 它们会提高还是阻碍绩效 只要您有与外键相对应的明显索引 就不会对性能产生明显的负面影响 这是您必须使用的最简单的数据库功能之一
  • 为什么 onchange 不起作用?

    我只是在网上寻找答案 但还没有找到任何答案 我正在使用 google 的 api 翻译 但我遇到了 JS 问题 事实上 除了一项操作之外 我的代码 100 正常 我的问题是当时没有给出翻译 js 将信息发送给 google 后 不会等到给出
  • Pdfbox:在旋转页面中绘制图像

    我有一个简单的 A4 pdf 文档 其中包含一个属性 Rotate 90 我的 pdf 的原始版本是横向的 但打印的是纵向 我正在尝试在肖像文档的左下角绘制一个小图像 到目前为止 这是我的代码 File file new File rota
  • 理解 JavaScript 中的 Promise

    我编写了很多 JavaScript 代码 虽然我认为我确实了解 Promise 的工作原理 但我不确定我是否完全理解 Promise 给 JS 世界带来的优势 考虑下面的代码 简单的异步调用以及包含进一步调用的回调等等 function d
  • 最优 Java 随机种子

    关于提供long播种java util Random 如果我实例化该对象一次 似乎如果我只是将时间作为种子 这对于程序的生命周期来说是令人满意的 这对于我的目的来说意味着一系列调用的结果nextDouble 看起来随机 假设出于代码简单的原
  • RadioButton.Checked 错误:Control.Checked 不能出现在 += 或 -= 的左侧

    我遇到了最奇怪的问题 我必须遗漏一些东西 这是导致错误的我的代码 if radLot Checked true SymbolSpecification LotRenderer if radWaterMeter Checked true Sy
  • MVC3 模型类的条件验证

    我正在使用实体框架和模型类 DonationForm 由视图模型类 CreateDonationForm 包装 为了遵循 DRY 原则 我在 Model 类 不仅仅是视图模型 上添加了验证注释 以便它们可以重用 但是 并非该类的所有属性都将
  • 让调试器在下一个事件时中断

    在 Visual Basic 6 0 IDE 中 可以中断正在运行的处于空闲状态 等待 UI 线程上的事件 的程序 然后按 F8 单步 此后 任何单击 鼠标悬停或导致代码的其他事件都会导致调试器在要执行的下一行代码处中断 这将是事件处理程序
  • PHP 中的乘法函数结果

    我还是 PHP 的初学者 我有一个小问题 我想乘以该值get formatted order total 3 75 我所做的是 get formatted order total 3 75 但它没有用 这是代码 li class total
  • Web 浏览器调用脚本

    我有一个 Web 浏览器 其中一些设置是使用 javascript 更改的 我正在尝试使用这个例子here但无法获得正确的语法 脚本看起来像这样 div class DisplayInput div
  • 从 .net 4 升级到 4.5 会破坏 Javascript 中的 Html.Raw 调用

    我在 c MVC 3 razor 页面中有以下代码 我将序列化数据传递到 KnockoutJs 的 javascript 变量中 var listData new JavaScriptSerializer Serialize Model L
  • 在 AngularJS 应用程序中加载 JSON(加载谷歌电子表格)

    我正在尝试在我的应用程序中加载 Google 电子表格 但我无法使其正常工作 我尝试了不同的方法来访问树结构 通过控制器和 或通过 html 但它们都不起作用 知道可能出了什么问题吗 这是我的控制器 app controller Super
  • 日期时间修改函数跳过二月

    当添加一个月时DateTime modify方法 结果跳过二月 为什么不输出2020 02 31 如何输出2020 02 29使用日期时间 该月的最后一天 date new DateTime 2020 01 31 echo date gt
  • 尝试设置 Tortoise svn - 新手问题

    我正在尝试在我的 Windows 计算机上设置 svn 来跟踪版本 我已经下载了 tortoise svn 但我很困惑如何安装 我无法为我的问题找到一个好的简单答案 所有手册都相当复杂 所以请不要告诉我 RTFM 我的问题是我在 C svn
  • 如何在正则表达式属性上添加多行选项?

    我在用 RegularExpression a zA Z0 9 1 125 确保多行文本框的每一行正确匹配 然而 我无法弄清楚如何添加全局标志和多行标志选项 MVC 不可能吗 我还有什么其他选择 您可以添加内联选项来启用 MultiLine
  • Google 地图 API 旋转矩形

    我有一个应用程序 它使用 JavaScript API 版本 3 在 Google 地图上绘制矩形数组 这可行 但我想做的是旋转或倾斜每个矩形Rectangle基于用户输入 Is the Rectangle对象仅限于水平 垂直线 API 仅
  • 如何根据 y 值按降序绘制两个列表?

    我有两个清单 第一个是字符串列表a Agriculture Forestry Fisheries Veterinary Medicine Architectural and Town Planning Business Administra
  • 如何为 Electron / Atom Shell 应用程序设置应用程序图标

    如何为 Electron 应用程序设置应用程序图标 我在尝试BrowserWindow icon path to image png 但它不起作用 需要打包app才能看到效果吗 设置icon创建时的属性BrowserWindow仅对 Win
  • qsort 给出 [错误]:从 `int (*)(cricketer*, cricketer*)' 到 `int (*)(const void*, const void*)' 的无效转换

    这是代码 它按平均跑数对板球运动员的数据进行排序 这qsort函数显示错误 错误 C Users Encoder Documents C Free Temp Untitled3 cpp 29 错误 无效的转换int cricketer cr
  • 如何通过 API 管理动态发现 Service Fabric 中托管的服务?

    假设我在 Service Fabric 集群中托管了服务 A 和 B 它们分别在端口 7001 和 7002 上侦听 在集群内部 假设我将服务结构负载均衡器配置为侦听端口 8001 并将请求转发到服务 A 的端口 7001 集群内部 侦听端