gRPC-Java 实现提供的扩展工具有助于根据域逻辑和服务器存根生成用户需要实现的服务接口 , 客户端将使用这些存根调用已部署的服务 。
标准服务器和客户端gRPC-Java 库提供了一个响应式服务器实现(基于 Netty)来部署您的服务和一个阻塞/非阻塞客户端实现来连接您的服务和其他服务 。
您需要注册您的服务实现并以编程方式启动服务器 。
在此处找到 GitHub 参考 。
要连接到部署在基于 Netty 的 gRPC 服务器上的服务 , 您需要创建一个消息通道并将其与生成的服务器存根连接以进行调用 。
在此处找到 GitHub 参考 。
网络客户端还有一个 gRPC Web 模块 , 允许 Web 客户端无缝访问您的 gRPC 服务 。 他们的早期版本支持通过反向代理连接 Web 客户端 , 但现在可以在没有中间代理的情况下进行 。
另一种方法是使用 REST/GraphQL 协议将包装服务层暴露给面向外部的世界 , 并通过 gRPC 客户端连接 。
数据映射和持久性我们可能需要在其之上添加另一层 , 以使用 Hibernate 等数据访问库创建功能齐全的域服务 。 与 Hibernate 或任何数据库一样 , 需要以某种方式修饰所需的实体 , 而这对于 protobuf 模型生成的模型可能不可行 。 因此 , 我们可能需要一些映射逻辑来将模型类转换为实体类 。 一个这样好的库是 MapStruct , 它基于 bean 约定进行自动映射 。 我们只需要提供映射接口:
第三方支持为了进一步简化整个构建和运行环境 , 有一些流行的第三方 Maven 插件和库也有帮助 。
1. 运行与 Build 集成的 Proto Tool协议缓冲区 Maven 插件(由 Xolstice 提供)运行 proto 工具及其扩展 , 以及从*.proto文件构建和生成源代码 。 它还附加了 .proto*文件作为项目的资源 。 请参阅示例配置以生成 Java 代码 。
参考可以在这里找到 。
2. 生成映射器类MapStruct 库支持生成消息类型的映射器类 , 这些映射器类可以将消息从/到类的实体 。 它提供了一个注解处理器 , 通过在构建时分析指定的注解来生成一个映射器类 。 Maven编译插件参考下面的配置 。
3.自动启动gRPC服务器并注册服务实现默认情况下 , gRPC 服务器不会与 web 服务器(在本例中为 Netty)一起启动 。 此外 , 它需要在服务器启动之前注册所有 gRPC 服务 。 LogNet 的 gRPC Spring Boot 会自动扫描所有带有@GRpcService注解的类 , 并向服务器构建器注册服务定义 。 构建服务器后 , 它会在 Spring 应用程序属性中配置的端口上自动启动 gRPC 服务器 。
除了注册服务和启动服务器外 , 它还支持自动配置的安全、健康检查和服务发现 。 有关详细信息 , 请参阅此处 。
GitHub 上提供了上述方法的完整示例实现 。
差异化
- 谷歌构建 gRPC 是出于从零开始构建大规模微服务的学习需求 。 大多数流行的微服务框架仍然缺乏对性能和跨平台支持的要求 , 因为没有大型系统可以在单个堆栈和单个编码中构建 。
- 最受欢迎的是对 HTTP/2 的支持 , 它仍然是许多提供商的路线图 。 它为在单个 TCP 连接上使用多路复用非阻塞数据流的二进制线路传输提供了优势 。 进一步支持标头压缩 , 它提供了额外的性能优势 。
- 客户端|红米K50电竞版和小米11Pro价格差不多,买哪款更合适?
- 脑机接口|将虚拟现实用于基于运动想象的脑机接口,引起了科学家极大的兴趣
- 搜索引擎|Magi 搜索已暂停服务,提供基于知识图谱的结构化搜索体验
- 客户端|冬奥会把智能床送上风口,天猫销售暴增300%,催生万亿市场
- 本文转自:青年河北长城网?冀云客户端讯(记者 信贺宁 张荣鹏 张晨光 赵晓慧)“去年9月...|长城播报 直通冬奥|揭开塞外山城另一面:大数据产业
- 本文转自:新民网图说:基于北斗的精准时空雪上运动智慧服务系统 来源/采访对象提供2022...|地上运动“参北斗”高精度“导航”冬奥会
- 大众CEO|大众 CEO:甲壳虫车型有望回归,基于 MEB 纯电平台
- 本文转自:周到客户端记者从市交通委获悉|本市网约车平台投诉最新排名出炉,投诉主要反映司机服务态度差、不规范驾驶等
- 2月8日|雷军“把小米改改吧员工”,曾经的万物基于miui
- 团购|江西新闻客户端|石城县召开2022年春季学期开学工作会议