博客
关于我
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/

    你可能感兴趣的文章
    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
    查看>>
    NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
    查看>>
    nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
    查看>>
    NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
    查看>>
    NIFI分页获取Postgresql数据到Hbase中_实际操作---大数据之Nifi工作笔记0049
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>
    NIFI同步MySql数据源数据_到原始库hbase_同时对数据进行实时分析处理_同步到清洗库_实际操作06---大数据之Nifi工作笔记0046
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    【Flink】Flink 1.9 版本 web UI 突然没有日志
    查看>>
    NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
    查看>>
    NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_处理器介绍_处理过程说明---大数据之Nifi工作笔记0019
    查看>>
    NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_实际操作---大数据之Nifi工作笔记0020
    查看>>
    NIFI大数据进阶_Json内容转换为Hive支持的文本格式_实际操作_02---大数据之Nifi工作笔记0032
    查看>>
    NIFI大数据进阶_Json内容转换为Hive支持的文本格式_操作方法说明_01_EvaluteJsonPath处理器---大数据之Nifi工作笔记0031
    查看>>
    NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037
    查看>>