使用 Azure Service Fabric 部署的微服务的 API 网关/代理模式

2023-12-20

观看 Azure Service Fabric 的 BUILD 会议视频后,我一直在想象它如何适合我们当前基于微服务的架构。然而,有一件事我并不完全确定如何解决 - API 网关/代理。

考虑一个不那么简单的微服务架构,其中有 N 个服务在公开 REST 端点的 Azure Service Fabric 中运行。在许多情况下,您希望将这些碎片 API 端点打包成单条目 API 供使用者使用,以避免它们直接连接到服务结构实例。 Azure Service Fabric 解决方案在各个方面似乎都非常完整,当我在 BUILD 会谈期间没有找到一种方法来简单地解决这个问题时,我有点想知道我是否错过了一些明显的东西。

服务如Vulcan旨在通过让服务注册它们想要路由到它们的路径来解决这个问题etcd https://coreos.com/etcd/。我猜测解决这个问题的一种方法可能是创建一个单独的有状态 Web 服务,其他服务可以向其注册,提供服务名称以及它们需要路由到它们的路径。然后,有状态 Web 服务可以根据其状态将流量路由到正确的实例。不过,这似乎并不完全理想,比如在删除应用程序时删除路由以及通常保持状态与集群中部署的服务同步。有没有人考虑过这个问题,或者有任何想法如何在 Azure Service Fabric 中解决这个问题?


执行此操作所需的服务注册/可发现性实际上已经存在。有一个称为命名服务的有状态系统服务,它基本上是服务实例及其正在侦听的端点的注册器。因此,当您启动一个服务(无论是无状态还是有状态)并在其上打开一些侦听器时,该地址就会在命名服务中注册。

现在您需要填写的部分是用户与之交互的“网关”。这不必是有状态的,因为命名服务管理有状态的部分。但是您必须想出一个适合您的寻址方案,然后它会将请求转发到正确的位置。基本上是这样的:

  1. 接收请求。
  2. 使用NS查找可以接受请求的服务。
  3. 将请求转发给它,并将响应转发给用户。
  4. 如果该服务不再存在,则返回 404。

一般来说,我们不喜欢规定任何有关服务如何相互通信的内容,但我们正在考虑如何将 HTTP 作为完整的内置解决方案来解决此问题。

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

使用 Azure Service Fabric 部署的微服务的 API 网关/代理模式 的相关文章

  • 将 Application Insight 添加到现有的 Azure Service Fabric 群集

    自过去 4 个月以来 我们一直在开发 Azure Service Fabric 但现在决定拥有一个统一的日志基础设施 我们正在使用 AppInsight 我们如何将 AppInsight 密钥添加到现有的 Service Fabric 集群
  • 通过 Service Fabric 项目进行调试时未使用环境变量

    创建 ASP NET Core 应用程序时 环境变量名为ASPNETCORE ENVIRONMENT Development将为您设置 调试时您将看到IHostingEnvironment被设定为Development 问题是 当我在为 S
  • 在开发人员计算机上自动创建没有 DefaultServices 的服务

    在最近的 Service Fabric 社区问答第 24 版中 有很多关于在 Service Fabric 中使用 DefaultService 构造的讨论 ApplicationManifest xml以及它的缺点 Microsoft 建
  • Service Fabric 默认发布配置文件而不是 Local.xml

    我们公司正在使用 Service Fabric 开发新应用程序 我们遇到的一个常见问题是 多个开发人员使用远程服务器上的队列 数据库 存储 每个开发人员对此都有不同的配置 所有设置都存储在每个环境的 ApplicationParameter
  • 在 Service Fabric 应用程序中运行时 WebJob SDK 不工作

    我想在作为 Service Fabric 应用程序运行的无状态服务中使用 WebJob SDK 不幸的是我无法让它正常运行 以下是重现该问题的测试代码的一部分 ProcessMethod 永远不会被调用 触发的函数 ProcessNotif
  • 向 Service Fabric 群集中特定节点上运行的 ASP.Net Core Web API 发送请求

    我正在开发一个 Service Fabric 应用程序 在其中运行包含一堆 ASP NET Core Web API 的应用程序 现在 当我在配置了 5 个节点的本地 Service Fabric 集群上运行应用程序时 应用程序成功运行 并
  • 使用 ServicePartitionClient 对服务结构 StatelessService 进行负载平衡

    我正在 Service Fabric 集群上实现 API 网关 其中 API 网关服务是将外部 HTTP 请求路由到集群中运行的一组辅助服务的公共端点 对于网关和内部服务之间的服务间通信 我们使用 ServicePartitionClien
  • 如何在 sfproj 上使用 MSBuild?

    尝试在构建服务器上构建我的 Service Fabric 应用程序 当我构建 sln 文件时 sfproj 的 Package 目标未运行 正如预期的那样 我似乎无法让 MSBuild 运行这个目标 首先 根据 sln 文件构建时唯一可用的
  • 差异化包装

    升级应用程序时 Test ServiceFabricApplicationPackage命令会对版本号未更改的每个代码包抛出错误 这表示内容已更改 即使代码未更改 我知道有一个功能可以创建部分包 但我无法使用它 我的问题是 如何检查代码包内
  • Kubernetes + Docker + AWS = Azure + Service Fabric 吗?

    我看到了 Kubernetes 的优势 其中包括滚动部署 自动运行状况检查监控以及在现有服务器发生故障时启动新服务器来采取行动 我也明白 Kubernetes 不仅仅适用于 Docker 所以 这带来了几个问题 当 Azure 和 Serv
  • Service Fabric 容器项目可以从 Docker Hub 中提取吗?

    我在 Visual Studio 中创建了一个新的 Service Fabric 容器项目 并尝试通过发布到本地集群来测试该项目 我创建了一个 Windows 容器映像 并在 Docker 中本地运行 我将镜像推送到 Docker Hub
  • EventGrid 与 EventHub

    我正在开发一个服务结构应用程序 想要从此应用程序发布一些事件 并在另一个应用程序中订阅或处理这些发布事件 我尝试过 EventGrid 概念 并观察到发布和处理事件时存在延迟 所以 现在我正在寻找其他替代方案 例如 EventHub 或队列
  • 如何设置 IHostingEnvironment.ContentRootPath?

    在我的 Azure Service Fabric Web API 项目中 我可以使用以下代码将 appsettings json 文件添加到我的配置中 Api cs class protected override IEnumerable
  • Azure Service Fabric 节点、节点类型、实例和规模集

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

    点击下面的链接来设置和运行本地集群 https learn microsoft com en us azure service fabric service fabric create your first application in v
  • Service Fabric:找不到 EntryPoint Blah.exe

    我进行了一些项目重命名并更改了文件夹结构 现在我无法将服务结构应用程序部署到本地服务结构集群 Register ServiceFabricApplicationType 找不到 EntryPoint IdentityService exe
  • 将 C# Stateful Service Fabric 应用程序从 Visual Studio 部署到 Linux

    编辑 04 06 18 gt 更新了问题的最新状态 因此 我有一个正在运行的 Net 4 6 Stateful Service 它当前在部署在 Azure 上的 Windows Service Fabric 集群上运行 从 09 2017
  • Service Fabric:服务之间的调用有延迟?

    我们正在开发一个由多个不同服务组成的服务结构应用程序 我们的应用程序工作方式的一个关键部分是这些服务需要大量相互调用 直到最近我们增加了应用程序的负载并发现它的速度大大减慢时 我们才遇到任何问题 经过大量调查和对各种事情进行计时后 我们发现
  • 使用Azure Service Fabric的默认客户端时如何向请求添加消息头?

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

    这是我的设置 IdentityServer 4 作为无状态可靠的 ASP NET Core 服务 WebAPI 作为可靠的 ASP NET Core 服务 将它们与 JS 客户端一起使用 现在可以与 HTTP 一起使用 问题出在 HTTPS

随机推荐