gRPC初体验

news2024/10/7 14:31:36

一、gRPC简介

1、RPC是远程过程调用的简称,在分布式系统中,客户端可以像调用本地对象一样调用远程机器上服务端对象,用于系统的垂直拆分,常见的JAVA RPC框架有JAVA自带的RMI、基于Http的Hessian、阿里基于TCP的Dubbo、淘宝基于TCP的HSF、Spring Cloud等。

2、gRPC是一个基于ProtoBuf、HTTP2设计的高性能通用RPC框架,支持跨语言调用。

二、Hello World例子

1、定义服务

使用ProtoBuf接口定义语言定义方法和请求参数和返回类型。

(1)、hello.proto:请求参数和返回类型

protoc --java_out=. hello.proto

编译后生成五个文件Hello.java、HelloRequest.java、HelloRequestOrBuilder.java、HelloResponse.java、HelloResponseOrBuilder.java

(2)、helloServer.proto  服务接口

服务接口的编码依赖于protoc-gen-grpc-java插件,mac下安装protoc-gen-grpc-java,下载protoc-gen-grpc-java配置环境

编译后会生成gRPC两个文件 GreetingService.java、HelloServiceGrpc.java

2、创建Maven多模块工程

Interface:proto生成的代码copy到该模块下

clien:客户端代码

service:服务端代码

3、服务端代码

一个接口实现类,一个启动类

4、客户端代码

注:开始运行的时候报错,报下面错误,代码跟进去发现默认是启用了SSL连接,但没有配置SSL证书,为了简单跑通第一个例子,可以加上usePlaintext(true)用明文进行通讯。

Jetty ALPN/NPN has not been properly configurs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1150328.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二叉树题目:路径总和 III

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:路径总和 III 出处:437. 路径总和 III 难度 5 级 题目描述 要求 给你二叉树的根结点 root \textt…

VS2022 打包WPF安装程序最新教程(图文详解)

文章目录 前言一、安装打包Installer插件1、单独安装2、VS中在线安装二、使用步骤1、创建安装项目2、安装项目主界面3、添加项目输出4、添加快捷方式图标5、添加卸载项目a、新建项目b、添加项目输出c、创建快捷方式6、给快捷方式添加图标a、在Resource文件夹中添加图标文件b、选…

通过内网穿透实现在无公网IP下,Windows远程连接MongoDB数据库

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 前言 MongoDB是一个基于分布式文件存储的数…

shopee收货方式有哪些

Shopee 是一家电子商务平台,提供多种不同的收货方式,具体的选项可能会根据您所在的地理位置和商品的类型而有所不同。以下是一些常见的 Shopee 收货方式: 1、快递配送:这是最常见的收货方式,您可以选择让商家使用物流…

开关时的瞬态高电压突变冲击--输入滤波电容可能引起的问题

在开关控制电路中,会出现开关瞬间产生一个高的电压冲击,可能会导致外设的保护机制,甚至损坏。 很多用电装置都由适配器通过一段比较长的电源线供电,在用电装置一端有电源滤波电容。随着产品向小型化,便携化方向发展,陶瓷电容在电源…

服务器安装Pytorch深度学习环境

最近要开始准备毕设啦,决定写一篇关于如何在实验室服务器安装Pytorch深度学习环境的博客,因为我使用的基本是Pytorch所以如果是使用Tensorflow的小伙伴就可以滑走啦~ 服务器统一安装过程 创建文件夹: mkdir miniconda(文件夹名) 转入新建文…

民乐社区关工委举办敬老爱老关爱活动

2023年10月27日,由华润银行支持,民乐社区关工委组织开展的敬老爱老关爱活动走进高乐亦嘉-光明社会福利院和中国文化名人大营救纪念馆,民乐社区关工委主任孙旗开,副主任常满彦、郭娜英、刘昕带领27名中老年人参与了本次活动。 参观…

国家数据局正式揭牌,隐私计算助力数据要素流通共享

2023年10月25日,国家数据局在京正式揭牌。根据中共中央、国务院印发的《党和国家机构改革方案》,国家数据局负责协调推进数据基础制度建设,统筹数据资源整合共享和开发利用,统筹推进数字中国、数字经济、数字社会规划和建设等。 多…

运维监控系统PIGOSS BSM 基础版重磅发布,永久免费

中小企业运维现状 当前多数中小型企业IT运维现状基本分为两部分: 1. 依靠传统的人工运维方式,无有效的监控工具辅助,导致故障发现不及时, 无法实时掌握IT运行状态。 2. 使用开源工具:开源工具因没有专业的售后技术…

如何在 Mac 上切换用户?

如果您想与其他人共享您的 Mac,创建一个独立于您的个人帐户的新用户帐户可能会有所帮助。然而,不利的一面是,时不时地在不同的用户帐户之间切换可能是一件耗时的事情。幸运的是,我创建了本指南,解释如何在 Mac 上快速切…

Android NDK开发详解之将 NDK 与其他构建系统配合使用

Android NDK开发详解之将 NDK 与其他构建系统配合使用 概览Autoconf非 Autoconf make 项目 注意:本页介绍的内容适用于 NDK r19 及更高版本。如果您使用的是旧版 NDK,请考虑进行升级。如果无法升级,请参阅独立工具链指南。 NDK 提供对 ndk-bu…

在安装和配置DVWA渗透测试环境遇到的报错问题

安装环境 前面的安装我参考的这个博主:渗透测试漏洞平台DVWA环境安装搭建及初级SQL注入-CSDN博客 修改bug 1.首先十分感谢提供帮助的博主,搭建DVWA Web渗透测试靶场_dvwa 白屏-CSDN博客,解决了我大多数问题,报错如下&#xff1…

[毕设记录]@开题调研:CAAI资源

发现这里面有些东西还是不错的 https://www.caai.cn/index.php?s/home/article/index/id/53.html其中我主要需要用到大模型技术白皮书

Wi-Fi 6和5G 在应用场景上的区别

在工作领域,我们经常会面临两个选择,场景的解决方案是要用5G还是WiFi 6,其实判断并不困难,但我们仍然还是从理论概念上区分一下。 文章目录 什么是Wi-Fi 6什么是5GWi-Fi 6和5G 的区别区别一:覆盖范围区别二&#xff1…

【Azure】存储服务:Azure 的存储账户

文章目录 一、前提知识(建议了解)二、介绍 Azure 存储帐户三、使用 Microsoft Azure 门户创建存储帐户 一、前提知识(建议了解) 在每一个云厂商中,都有自身的云存储,也有根据不同功能进行区分的不同类型的…

IP代理被低估的作用,你知道吗?

IP说简单不简单,说复杂也不复杂,打个比方,IP就好比我们上网的一个门牌号,每家每户都会有一个门牌号,而且是唯一的地址。而代理IP(代理服务器)是一个位于中间的服务器,充当客户端和目…

springboot2.x通用异常捕获

文章目录 demo地址实现效果引入基础类准备1.通用枚举与错误状态枚举2.定义通用返回结果3.自定义业务异常 统一异常捕获测试 demo地址 demo工程地址 实现效果 当我们输入1时,正常的返回通用的响应结果当我们输入2时,抛出异常,被捕获然后返回…

解决由于找不到mfc140u.dll无法继续执行此代码问题的4个方法

mfc140u.dll是Microsoft Foundation Class(微软基础类库)中的一个动态链接库文件,它包含了许多用于实现Windows应用程序的基本功能。当我们在编写或运行基于MFC的程序时,如果系统中缺少这个文件,就会出现“找不到mfc14…

电脑端微信多开方式

方法一:电脑微信分身法 大家只需要先按住键盘上的enter键不放,然后用鼠标点击电脑上的微信即可,这里的微信分身个数不限,大家根据自己的实际需要进行点击即可,点击了几次就可以开出几个微信。 注意:前提是…

vscode debug skills

1) VSCode 调试 C/C 代码时,如何显示动态分配的指针数组。 创建一个动态分配的一维数组: int n 10; int *array (int *)malloc(n*sizeof(int)); memset(array, 1, n*sizeof(int)); 如果直接 Debug 时查看 array 指针,并不能看到数组所有的值。 查看…