| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 【Go】gRPC + Protobuf 学习笔记 -> 正文阅读 |
|
[网络协议]【Go】gRPC + Protobuf 学习笔记 |
这里写目录标题RPC什么是RPCRPC指远程过程调用(Remote Procedure Call)。允许运行于一台计算机的程序调用另一台计算机的子程序,并且调用起来像调用本地函数一样简单。 例如:服务器A上运行的应用C,想要调用服务器B上运行的应用D,就可以很方便地通过RPC进行调用,跟调用一个本地函数一样简单。 RPC的原理图片来自b站up主弯曲的一条虫给热爱gRPC的你!神奇代码在哪里Go实战#9:gRPC RPC服务的调用过程如下: 1、客户端 2、 3、然后由 4、 5、之后 6、然后通过路由找到对应的接口进行处理 7、最后将结果返回给客户端 stub,中文名为桩代码,负责为上层应用处理 IDLIDL(Interface Definition Language),接口描述语言。 IDL通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信交流。比如,一个组件用C++写成,另一个组件用Go写成,IDL可以为这两个组件提供通用的消息中间体。 在RPC中,Protobuf是一种常用的IDL。 常见的RPC框架
Protobuf介绍Protocol Buffers是一种语言无关、平台无关,可拓展的序列化结构化数据的方法,常用于通信协议,数据存储等等。 相较于JSON、XML,它更小、更快,因此也更受开发人员的青睐。 pb是Protobuf的简称。 安装Protobuf编译器1、下载protobuf并编译安装
2、通过
验证是否安装成功
Protobuf编译器插件:protocol-gen-go
单独安装
Protobuf运行时库该 该运行时库包含在 通过
Protobuf文件语法Protobuf数据结构定义的简单示例:
解释: 1、Protobuf语法版本声明
2、声明生成源代码时作为Go的包名
包名中 如果没有此声明的话,编译时会报错:
3、RPC服务定义
4、消息定义 消息中的每一个字段包含三个属性:类型、字段名称、字段编号。
以上是Protobuf语法的简单介绍,更详细的语法请见官方文档: Protocel Buffers 此外,官方还说明了Protobuf的一些规范:规范指南 数据类型
protoc命令行查看protoc命令行帮助
常用参数
更详细 gRPC介绍gRPC是一个高性能、开源和通用的RPC框架,面向移动和HTTP 2.0设计 gRPC架构概览多语言支持
特点1、基于HTTP 2.0 2、采用Protobuf进行序列化 3、客户端、服务端基于同一份IDL 4、移动网络的良好支持 5、多语言支持 安装通过
gRPC的4中通信方式Unary 一元方式说白了就是请求响应模式,一次请求一次响应。 Client-side streaming 客户端流式客户端以类似流的形式不断请求服务端,而服务端在请求结束之后,只返回一个响应回去。 Server-side streaming 服务端流式客户端只请求一次服务端,然后服务端以类似流的形式不断把响应传给服务端。 Bidirectional streaming 双向流式客户端和服务端均以流的形式互相请求和响应。 gRPC中protobuf文件的编写在gRPC中,一般protobuf文件中主要编写两部分信息,一个是message,一个是service。 代码桩生成命令使用
也可以这样,
例子:
|
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:24:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |