使用 Spring Boot 的 gRPC 和 REST 微服务

2023-12-20

对于一个项目,我想使用 Spring Boot 设置一个小型微服务场景,其中包含一个向客户端公开 REST 和 GraphQL 的 API 网关、一个 Eureka 服务注册表和三个服务。出于性能原因,我希望 API 网关后面的所有服务都能与 gRPC 进行通信,但同时仍公开额外的 REST API。是否有一种干净的方法可以在相同的业务逻辑之上实现两种类型的接口?网关如何将客户端的 HTTP 请求代理到 gRPC 请求?


你可以看看LogNet grpc-spring-boot-starter https://github.com/LogNet/grpc-spring-boot-starter要了解如何将 gRPC 集成到 Spring Boot 中,它还有关于 Eureka 的部分。

根据尤里卡的例子,确保你don't通过 gRPC 为每个调用创建新连接。

根据API网关的实现,它还应该与Eureka通信,并通过gRPC按逻辑名称访问下游服务。

按照第二部分,只需在 Spring 服务中实现业务逻辑,然后从与传输相关的抽象(控制器和 gRPC 服务)转发对它们的调用。

或者,您可以更进一步,仅在 Protobuf 中定义所有消息。然后注册 Spring 的 Protobuf Converter for HTTP。

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

使用 Spring Boot 的 gRPC 和 REST 微服务 的相关文章

随机推荐

  • 用于定义给定重复模式的函数的球拍宏

    这个问题很难解释 因为我需要整理思绪 所以请耐心等待 为了说明目的 我已经能够将问题简化为最小的示例 这个例子对于它的用途没有任何意义 但我离题了 假设我想扩展球拍语言来编写如下所示的内容 define something a whatev
  • re.finditer 和 re.findall 之间的不同行为

    我正在使用以下代码 CARRIS REGEX r th d th th s w th th d d th th d m th pattern re compile CARRIS REGEX re UNICODE matches patter
  • iOS。 CLLocationManager 在 didUpdateLocations 中仅接收一次位置更新

    我有以下代码来获取位置更新 iOS 7 import UIKit import CoreLocation class FirstViewController UIViewController CLLocationManagerDelegat
  • 从文档中提取数据

    我有一个文本文件 其中的数据如下 07 30 07 45PMTS09526052 Sev9 Location Due 12 23 2016 NON PC HARDWARE TROUBLESHOOT SW Complete this Job
  • C++ 中什么被视为小对象?

    我读过 现代 C 设计 中有关小对象分配的内容 Andrei Alexandrescu 认为通用运算符 new 和 delete 在分配小对象时表现不佳 在我的程序中 有很多对象在免费商店中创建和销毁 这些对象的大小超过 8000 字节 什
  • 通过Emacs在代码注释中插入图片

    我的脑海里刚刚浮现出一个想法 有没有什么方法可以在代码注释中插入图片来帮助解释我们的代码 毕竟 一张图胜过一千个字 由于我使用Emacs 到目前为止Emacs有任何实现吗 看一眼iimage mode 这是在文本缓冲区中显示图像的标准解决方
  • 如何使用表达式树调用带有引用变量的方法

    我试图弄清楚如何创建一个调用具有引用参数的方法的表达式 让我用一个简单 但人为的 例子来解释我的问题 考虑方法 public static int TwiceTheInput int x return x 2 我可以创建一个表达式来通过执行
  • 如何告知呼叫者失败原因

    我有一个应该做某事的方法 返回值是一个布尔值 成功 失败 如果该方法失败 则有多种原因导致失败 调用者 用户界面层 可以使用这些原因向用户显示适当的消息 这样用户就可以解决问题 我正在考虑用适当的消息抛出异常 但失败原因是正常执行路径的一部
  • sp::CRS(SRS_string = "EPSG:24547") 中的错误:不适用

    我遇到与在 sp 包中分配 CRS 相关的问题 如果我运行 sp CRS SRS string EPSG 4326 sp CRS init epsg 4326 我分别得到这两个错误 sp CRS SRS string EPSG 4326 中
  • 使用javascript浏览服务器目录

    是否可以使用 Javascript 列出子文件夹中包含的所有文件 我有一堆图像也需要链接 但我希望它是动态的 因为列表会发生很大的变化 谢谢你 是否可以使用 Javascript 列出子文件夹中包含的所有文件 不 您通常会设置一个简单的服务
  • 如何在javascript中使用函数(1)(2)?它是如何运作的?

    我理解调用 function 1 但不理解 function 1 2 它是如何工作的 函数 1 2 3 4 也可以吗 在本例中 您假设 function 1 返回一个函数 而不是使用参数 2 调用这个新的匿名函数 看这个例子 functio
  • 为 Performance Point 仪表板设计器创建数据源时数据库不显示

    我设置了共享点服务器 仪表板运行良好 我的数据源也很棒 我正在尝试从不同的 SSAS 计算机添加新的数据源 当我输入服务器时 它甚至不会在数据库下拉列表中列出它 使用最初的 ssas 机器进行了此操作并使其正常工作 从我所看到的一切来看 新
  • Flex 容器的子容器的滚动宽度不正确

    根据w3学校 https www w3schools com jsref prop element scrollwidth asp The 滚动宽度 and 滚动高度属性返回元素的整个高度和宽度 包括不可见的高度和宽度 由于溢出 如果是这样
  • ES6/7 中可以导出 Arrow 函数吗?

    下面的导出语句出现语法错误 export default const hello gt console log say hello why 我只能导出命名函数 export function hello console log hello
  • 使用 html2pdf 时如何摆脱 css 中的左边距和上边距

    我正在使用 html2pdf 我想使用 css 去掉顶部和左边距 但我不能 在输出缓冲边距已设置为 0 之前 它适用于 html 但是当我使用它将其转换为 pdf 时html2pdf http html2pdf fr en default上
  • * 不支持的操作数类型:“numpy.ndarray”和“numpy.float64”

    长期读者 第一次作家 我在谷歌和堆栈溢出上进行了搜索 但并没有真正找到这个问题的一般答案 我在使用 numpy 1 6 2 的 python 2 7 3 中收到 numpy ndarray 和 numpy float64 不受支持的操作数类
  • 如何将网站封装在手机应用程序中?

    我见过很多手机应用程序只是打开一个网页而没有控件 只是页面 我正在寻找指导和链接来开始这样简单的事情 如果您想在 Android 中封装一个网站 您可以使用以下代码来实现 Roskvist https roskvist wordpress
  • F# 析构函数的等效项

    我正在将一个将非托管库包装的 C 类转换为 F 我遇到了重写随后的析构函数的看似简单的问题 class Wrapper P Invoke ellided private SomeType x public Wrapper x new Som
  • Xamarin 安卓 |布局样式

    我正在尝试创建这种布局样式 但仍然不知道该怎么做 有人可以帮助我吗 我需要主布局 并且在布局中必须位于左侧图像视图的颜色 接下来是带有填充父级描述的标题 右侧必须是 img 干得好 我为您设计了左侧标志 标题和描述标签以及右侧图像视图控件
  • 使用 Spring Boot 的 gRPC 和 REST 微服务

    对于一个项目 我想使用 Spring Boot 设置一个小型微服务场景 其中包含一个向客户端公开 REST 和 GraphQL 的 API 网关 一个 Eureka 服务注册表和三个服务 出于性能原因 我希望 API 网关后面的所有服务都能