Grpc&&protocol buffer结合提供grpc服务

2023-05-16

Grpc&&protocol buffer

关于下载:首先下载一个protobuf

  • 对于mac系统就brew install protobuf 就可以了。然后可以 protoc --version 看下安装的版本号,默认按最新版。
  • 如果想手动按就去官网下载https://github.com/protocolbuffers/protobuf/releases

下载go语言的proto插件

  • protoc -h 看到没有 --go_out 就没法生成go的pb.proto代码,所以需要下载 go的插件-----执行下面命令,从源端下载
  • go get -u -v github.com/golang/protobuf/protoc-gen-go

下载grpc

  • go get -u google.golang.org/grpc
  • 如果用go module的话 ,如下引入,可以改成想要的版本
require (
	google.golang.org/grpc v1.33.1
	google.golang.org/protobuf v1.25.0
)

###根据proto生成 pb.go

先展示一下目录结构

$ tree
.
├── README.md
├── client.go
├── db
│   └── mongo
│       └── pool.go
├── go.mod
├── go.sum
├── grpc
│   ├── user
│   │   └── user.pb.go
│   └── user.proto
├── server.go
└── service
    └── userservice.go

其中user.proto如下所示

syntax = "proto3";

// user 包
package user;

// 指定 go 的包路径及包名
// option go_package="github.com/isMe/grpcdemo.git/grpc/user;user";

// User 服务及服务接口的定义
service User {
  rpc UserIndex(UserIndexRequest) returns (UserIndexResponse) {}
  rpc UserId(UserIdRequest) returns (UserIdResponse){}
  rpc UserDelete(UserDeleteRequest) returns (UserDeleteResponse) {}
  rpc UserInsert(UserInsertRequest) returns (UserInsertResponse){}
}

// 枚举类型
enum EnumUserSex {
  SEX_FEMALE = 0; // 枚举类型必须以 0 起始
  SEX_MALE = 1;
}

// 用户实体模型
message UserEntity {
  string name = 1;
  int32 age = 2;
  repeated string hobby = 3;
  EnumUserSex sex = 4;
}

// User 服务的各个接口的请求/响应结构
message UserIndexRequest {
  int32 page = 1;
  int32 pageSize = 2;
}

message UserIndexResponse {
  int32 err = 1;
  string msg = 2;
  // 返回一个 UserEntity 对象的列表数据
  repeated UserEntity data = 3;
}

message UserIdRequest {
  int64 id = 1;
}

message UserIdResponse {
  int32 err = 1;
  string msg = 2;
  UserEntity data = 3;
}

message UserDeleteRequest {
  int64 id = 1;
}

message UserDeleteResponse {
  int32 err = 1;
  string msg = 2;
}

message UserInsertRequest {
  UserEntity data = 1;
}

message UserInsertResponse {
  int32 err = 1;
  string msg = 2;
}
  • 生成pb.go 在grpc目录下执行 protoc --proto_path=. --go_out=plugins=grpc:./user user.proto
  • –proto_path是proto文件所在位置
  • –go_out这个是go的输出,要加上grpc插件
  • 最后跟上要编译的proto文件

以上操作已经把API都创建好了,接下来只需要写impl实现的server端就行了,如果另一端调用只需创建该API服务的grpcClient即可。代码库如下,把server和client run一下就行了。

我把整个demo的grpc服务放到GitHub上面了,可以点击>>>> 下载源码

https://github.com/StrandingHeart/GrpcDemo

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

Grpc&&protocol buffer结合提供grpc服务 的相关文章

  • 命令行查看android手机wi-fi密码

    两招帮你查看wifi密码 xff08 抱歉 xff1a 由于无法传第三张图片 xff0c 第三个图片内容请参照参考网址获得 xff09 第一 xff0c 手机必须root 第二 xff0c 用es文件浏览器或RE管理器进入date misc
  • android网络时间同步总结

    本文转自 xff1a http www cnblogs com hoji real archive 2011 11 14 2247984 html 最近看了下网络时间同步 xff0c 总结一下 整体描述 xff1a android网络时间同
  • win7删除ubuntu系统

    win7 43 ubuntu双系统 xff0c ubuntu开机的时候 xff0c 电脑会响 xff0c ubuntu系统进不去 进入win7系统后 xff0c F盘是通过磁盘管理压缩剩余空间安装ubuntu系统的 xff0c QQ安装在F
  • 手机电池和taskId的寻找

    刷机的时候启动手机时间比较久 xff0c 拔掉电池给手机断电 xff0c 启动的比较快一点 一直这样干 xff0c 一段时间以后 xff0c 手机充电的时候 xff0c 会显示bad battery 提示电池坏掉 电池坏掉后 xff0c 刷
  • 如何使用Proteus进行电路设计仿真?

    Proteus是一款功能非常强大的软件 xff0c 是英国著名的EDA工具 仿真软件 xff0c 从原理图布图 代码调试到单片机与外围电路协同仿真 xff0c 一键切换到PCB设计 xff0c 真正实现了从概念到产品的完整设计 支持和Kei
  • OKHttpUtils使用介绍

    一 xff0c 概述 在上一篇blog的末尾讲到了OKHttp使用时的缺点 xff0c 和对OKHttp封装的必要性 在github上有很多对OKHttp封装的优秀框架 xff0c 其首推的就是hongyang大神的OKHttpUtils
  • Ubuntu18.04LTS系统盘制作

    记录一下制作系统盘的过程 xff0c 参考资料如下网址 xff0c 谢谢 win10下安装Ubuntu16 04双系统 xff0c 用软碟通制作系统盘 gt 点击此处网址 xff1b 安装win7 Ubuntu16 04双系统 xff0c
  • vmware12-15中ubuntu15.10-18.10的vmwaretools失效,不能拖动复制粘贴以及自动适应窗口分辨率

    新安装或异常关机或重新划分分区导致的vmware tools失效 xff0c 不能拖动复制粘贴文件文本以及自动适应窗口分辨率 xff0c 无论怎样重装vmware tools或open vm tools均无效 最后发现有效的方法如下 xff
  • 【环境搭建】Docker镜像相关操作(切换镜像源、查询、获取、查看、创建、上传、保存、删除等)

    目录 1 镜像源查看及设置2 镜像相关操作2 1 获取镜像列表2 2 镜像下载2 3 查看本地的镜像2 4 从镜像创建容器2 5 将容器抽象为镜像 commit2 6 将容器抽象为镜像 Dockerfile2 7 将镜像保存为压缩包2 8
  • 【废了-准备删除02】信息收集——基于WAMP的drupal7.x管理系统

    目录 1 概述2 域名 子域名 IP信息收集3 端口扫描3 1 扫描过程3 2 小结 4 网站目录扫描4 1 目的4 2 dirbuster 扫描4 3 御剑后台扫描4 4 小结 5 指纹识别5 1 目的5 2 指纹识别5 3 指纹利用5
  • Spring boot App启动报错 missing ServletWebServerFactory bean

    将一个普通Java App应用改写为Java Web App xff0c 添加了spring boot starter parent之后 xff0c Run as Spring App一致报如下错 org springframework c
  • 开源项目|RT-Thread 软件包应用作品:水墨屏桌面台历

    简介 平时经常会有一些事情忘记 xff0c 比如今天几号 xff0c 星期几 xff0c 哪天有什么事情要做 有时候写在本子上 xff0c 有时候记在微信里 xff0c 但有时候连记在哪里都忘记了 为了应对这个情况 xff0c 我制作了一款
  • 【嵌入式AI入门日记】将 AI 模型移植到 RT-Thread 上(1)

    本期我们分享主题是如何将 AI 模型部署到嵌入式系统中 xff0c 下一期将介绍如何在 RT Thread 操作系统上运行 Mnist Demo xff08 手写数字识别 xff09 嵌入式关联 AI AI落地一直是一个很红火的前景和朝阳行
  • uc/os-ii任务调度的锁定与解锁

    调度器上锁函数OSSchedlock 的功能是用于禁止任务调度 xff0c 使任务保持对CPU的控制权 调度器开锁函数OSSchedUnlock 的功能是解除对任务调度的禁止 调度器上锁和开锁的实现原理是 xff1a 对全局变量锁定嵌套计数
  • uc/os-ii信号量集

    在实际应用中 xff0c 任务常常需要与多个事件同步 xff0c 即要根据多个信号量组合作用的结果来决定任务的运行方式 C OS II为了实现多个信号量组合的功能定义了一种特殊的数据结构 信号量集 信号量集所能管理的信号量都是一些二值信号
  • 【OK6410裸机程序】点亮LED

    globl start start 硬件相关的设置 Peri port setup ldr r0 61 0x70000000 orr r0 r0 0x13 mcr p15 0 r0 c15 c2 4 64 256M 0x70000000 0
  • 通过串口实现printf和scanf函数

    转自 草根老师博客 xff08 程姚根 xff09 在做裸板开发时 xff0c 常常需要通过输出或者通过串口输入一些信息 在有操作系统机器上 xff0c 我们很少关心输入和输出的问题 因为有很多现成的库函数供我们调用 在做裸板开发时 xff
  • DDR协议解析

    DRAM内部分割成多个L Bank xff0c 每个L Bank形状相同 xff0c 彼此独立 xff0c 可以独立工作 早期的DRAM芯片内部分为2个L Bank xff0c 后来是4个 xff0c DDR3内存芯片为8个 在进行寻址时需
  • apt-get安装指定版本&查询版本

    一 通过apt get安装指定版本 apt get install lt lt package name gt gt 61 lt lt version gt gt 二 查询指定软件有多少个版本 说明 xff1a 在Linux用这个查询并不能
  • 使用apt-get install时有时候一堆依赖要安装,一个一个安装特别烦人,可以直接用suggest全部安装,具体命令如下

    使用apt get install时有时候一堆依赖要安装 xff0c 一个一个安装特别烦人 xff0c 可以直接用suggest全部安装 xff0c 具体命令如下 apt get install install suggests packa

随机推荐

  • linux-Centos 7下tftp-server服务的安装与配置

    转自 http www cnblogs com 5201351 p 4934625 html TFTP xff08 Trivial File Transfer Protocol 简单文件传输协议 xff09 是TCP IP协议族中的一个用来
  • Linux启动打印信息

    U Boot 1 1 6 Oct 5 2016 16 45 02 for SMDK6410 u boot 1 1 6 Updated for OK6410 TE6410 Board Version 2012 09 23 OEM Forlin
  • 对比S3C6410外部中断STM32外部中断

    转自 xff1a http comm chinaaet com adi blogdetail aspx id 61 40071 amp currentpage 61 2 a S3C6410外部中断 中断在嵌入式里面是很常见的一个功能了 通过
  • shell脚本记录

    1 find name o 找出当前目录下所有的 o文件 使用在makefile中如下 clean rm f liblog so 96 find name o 96
  • makefile中的patsubst

    1 wildcard 扩展通配符 2 notdir xff1a 去除路径 3 patsubst xff1a 替换通配符 例子 xff1a 建立一个测试目录 xff0c 在测试目录下建立一个名为sub的子目录 mkdir test cd te
  • ElasticSearch学习&&理解

    注 xff1a 本篇的es基于7 5 1版本 目录 Elasticsearch是什么 xff1f ElasticSearch的环境搭建 ElasticSearch的名词 ElasticSearch查询出的数据格式 ElasticSearch
  • Kibana学习&理解

    注 xff1a 本篇的kibana基于7 5 1版本 Kibana是什么 xff1f kibana是一个数据可视化平台 展示与分析 将es里面的东西通过各种图表展示出来 xff0c 还可以执行es的各种搜索 amp 监控 Kibana环境搭
  • filebeat学习

    注 xff1a 本篇基于filebeat7 5 2 filebeat是什么 xff1f Filebeat 是用于转发和集中日志数据的轻量级传送程序 作为服务器上的代理安装 xff0c Filebeat 监视您指定的日志文件或位置 xff0c
  • Git Flow 用法

    git flow 工作流程 如下图所示 master 分支 master 分支主要方稳定 随时可上线的版本 这个分支只能从别的分支上合并过来 xff0c 一般来讲 xff0c 从develop 上合并 xff0c 或者从hotfix分支上合
  • Qt父窗口与子窗口间的焦点传递问题的完美解决

    使用activateWindow 或者raise 参考文章 xff1a https blog csdn net Hoarce article details 107215868 http www manongjc com detail 19
  • Git 工作中的一些命令操作

    本篇为工作中 git 使用过程中的一些操作记载 xff0c 不定期更新 目录 1 git 推本地代码到远程 2 git 放弃修改 commit 撤销远程提交记录 3 git pull push fetch 4 git关联本地与远程分支 5
  • php如何使用S3

    本篇是新手使用PHP调aws的s3服务的一些心得 一 关于AWS S3 s3是一个文件存储服务 xff0c 当需要做成服务来进行微服务调用 xff0c 或者终端服务端文件交流使用s3是一个非常不错的选择 aws各种常见的语言例如 xff1a
  • MySQL相关面试题

    1 MySQL text长度 mysql的text是65535的字节限制 xff0c 而pg是不限制的 2 覆盖索引 聚簇索引 xff08 https blog csdn net alexdamiao article details 519
  • Redis相关面试题

    1 缓存是什么 xff1f 缓存分为本地缓存和分布式缓存 以Java为例 xff0c guava实现的就是本地缓存 xff0c 生命周期随JVM销毁而结束 起多个服务实例 xff0c 就有多份缓存 xff0c 不具有一致性 redis和me
  • 如何断网安装docker

    docker rpm安装 不能联网情况 生产环境可能是不能联网的 xff0c 当我们需要用到docker 或其他组件 的时候 xff0c 就需要借助能联网的环境下载好rpm包 xff0c 然后去操作系统服务器装下载好的docker RPM包
  • docker相关

    优势 xff1a 1 启动快 传统的虚拟机技术启动应用服务往往需要数分钟 xff0c 而 Docker 容器应用 xff0c 由于直接运行于宿主内核 xff0c 无需启动完整的操作系统 xff0c 因此可以做到秒级 甚至毫秒级的启动时间 大
  • Liunx下源代码安装&&make&&makefile

    Linux下安装软件的方式分为源代码安装和二进制安装 源代码安装 xff0c 即使用应用程序源代码进行编译安装二进制安装 xff0c 例如red hat发行的 rpm包 debian发行的 deb包 源代码安装 用c语言为例 include
  • Linux下rpm&yum&apt-get

    RPM简介 RPM命名 RedHat Package Manager xff0c 简称则为RPM 属于Red Hat阵营的 xff0c 与其并列的则是debian centos中大部分我们安装都是使用yum install xff0c 而d
  • Java面试题复习整理(多线程)

    文章目录 1 aio nio bio epoll select2 reactor模式介绍Reactor软件工程java代码总结 3 Java中的cas乐观锁4 自旋锁是什么 xff1f 自旋锁 amp amp 自适应自旋锁 amp amp
  • Grpc&&protocol buffer结合提供grpc服务

    Grpc amp amp protocol buffer 关于下载 xff1a 首先下载一个protobuf 对于mac系统就brew install protobuf 就可以了 然后可以 protoc version 看下安装的版本号 x