博客
关于我
gRPC&ProtoBuffers
阅读量:764 次
发布时间:2019-03-23

本文共 1487 字,大约阅读时间需要 4 分钟。

gRPC 与 ProtoBuffers 入门

gRPC(Grpc)是一款高性能、开源的通用_RPC_框架,由Google开发。它为客户端和服务器之间提供了一种高效的通信机制,遵循服务器-客户端模式。通过gRPC,应用程序可以轻松实现远程过程调用的功能。在日常开发中,我们可以通过gRPC像调用本地函数一样调用远程接口。

gRPC 的特点

  • 高性能:基于HTTP/2协议,支持流传输,速度快,具有低延迟特性。
  • 支持多语言:无论是服务器端还是客户端,都可以使用自己熟悉的编程语言。
  • 可扩展性强:内联支持身份验证、负载均衡、日志记录等功能,便于扩展和维护。
  • 易于使用:定义接口后,gRPC会自动生成必要的代码,简化开发流程。
  • 要使用gRPC,首先需要了解和学习ProtoBuffers,因为它们是gRPC的基础。


    ProtoBuffers 入门

    ProtoBuffers是一个定义消息和服务的数据传输格式,与JSON或XML类似,但具有更高的效率和更好的兼容性。通过ProtoBuffers,应用程序可以在不同环境之间高效传输数据。其核心原则是:

    • 二进制格式:数据以二进制形式传输,体积小、解析速度快。
    • 语言无关性:支持多种开发语言,代码自动生成。
    • 向前兼容性:设计使得数据格式易于向下和向上兼容。

    ProtoBuffers 的优点

  • 数据体积小:相比于XML或JSON, serialization后的数据量仅为1/10到1/3。
  • 解析效率高:解析速度比XML快20到100倍。
  • 多语言支持:可以在Java、Python、Go、C++等多种语言中使用。
  • 灵活性强:支持自定义规则,适合大规模数据传输和API升级。

  • ProtoBuffers 的语法结构

    要使用ProtoBuffers,我们需要编写.proto文件,定义消息和服务接口。这些文件可以广泛应用于十几种开发语言,支持每秒百万级别的RPC调用。

    示例代码

    以下是一个简单的ProtoBuffers定义示例:

    syntax "proto3";message Greeter {    string name = 1;    string greeting = 2;}service GreeterService {    rpc SayHello(Greeter) returns (string) {        // 消息格式定义为上面    }}
    • message:定义了消息结构,每个字段可以指定标识符和类型(如字符串、数值型等)。
    • service:定义了服务接口,rpc关键字用于标记远程接口。

    ProtoBuffers 的数据类型

    ProtoBuffers支持多种数据类型,满足不同应用场景的需求。以下是常见的数据类型及其用途:

    1. 数值型

    • double:64位浮点数,用于存储实数。
    • fixed32/fixed64:定点数值类型,用于存储固定的32位或64位整数。
    • uint32/uint64:无符号整数类型。
    • sint32/sint64:有符号整数类型。
    • float:32位浮点数。

    2. 布尔型

    • bool:表示True或False。

    3. 字符串

    • string: UTF-8编码或7位ASCII文本,最大长度为232。

    4. 字节数组

    • bytes:任意长度的二进制数据块,常用于存储图片或二进制文件。

    根据具体需求选择合适的数据类型,确保数据传输和存储效率。


    通过以上内容,我们可以清晰地了解gRPC和ProtoBuffers的基本概念、优势以及使用方法。这对理解它们在现代应用中的作用具有重要的帮助作用。

    转载地址:http://cbqzk.baihongyu.com/

    你可能感兴趣的文章
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_插入时如果目标表中已存在该数据则自动改为更新数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0058
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0_Postgresql和Mysql同时指定库_指定多表_全量同步到Mysql数据库以及Hbase数据库中---大数据之Nifi工作笔记0060
    查看>>
    NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
    查看>>
    NIFI1.21.0最新版本安装_配置使用HTTP登录_默认是用HTTPS登录的_Https登录需要输入用户名密码_HTTP不需要---大数据之Nifi工作笔记0051
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增加修改实时同步_使用JsonPath及自定义Python脚本_03---大数据之Nifi工作笔记0055
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
    查看>>
    NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现update数据实时同步_实际操作05---大数据之Nifi工作笔记0044
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
    查看>>
    NIFI从Oracle11G同步数据到Mysql_亲测可用_解决数据重复_数据跟源表不一致的问题---大数据之Nifi工作笔记0065
    查看>>