zoukankan      html  css  js  c++  java
  • 微服务学习(二)--protobuf

    一、语法:

      syntax = "proto3";

      // 熊猫 发送消息
      message PandaRequest{
        // 姓名
        string name=1;
        // 身高
        int32 shengao=2;
        // 体重
        repeated int32 tizhong=3;
      }

      message PandaResponse{
        // 错误码
        int32 error=1;
        // 错误信息
        string message=2;
      }
    二、数据类型

      A、double(float64)、float(float32)、int32、uint32、uint64、sint32(int32,使用变长编码,这些编码在负值时比int32高效的多)、sint64(int64,使用变长编码,编码时比通常的int64高效)、fixed32(uint32,总是4个字节,如果数值总是比228大的话,这个类型会比uint32高效)、fixed64(uint64,总是8个字节,如果数值总是比256大的话,会比uint64高效)、sfixed32(int32,总是4字节)、sfixed64(uint64,总是8字节)、bool、string、bytes([]byte,可能包含任意顺序的字节数据)

      B、使用其它消息类型

        message PersonInfo {

          repeated Person info=1;

        }

        message Person{

          string name=1;

          int32 shengao=2;

          repeated int32 tizhong=3;

        }

      C、嵌套类型

        1. message PersonInfo {

          message Person{

            string name=1;

            int32 shengao=2;

            repeated int32 tizhong=3

          }

          repeated Person info=1;

        }

        2. 在父消息外部重用

          message PersonMessage{

            PersonInfo.Person info=1;

          }

        3. 消息可以嵌套任意多层

    三、定义服务(service)

      A、如果想要将消息类型用在RPC(远程方法调用)系统中,可以在.proto文件中定义一个RPC服务接口,protocol buffer编译器将会根据所选则的语言的不同生成服务代码及存根。如:

        service SearchService{

          // rpc 服务的函数名(传入参数)返回 (返回参数)

          rpc Search (SearchRequest) returns (SearchResponse)

        }

    四、编译

      A、protoc --proto_path=IMPORT_PATH --cpp_out=DST_DIR --python_out=DST_DIR --go_out=DST_DIR path/to/file.proto

        IMPORT_PATH声明了一个.proto文件所在的解析import具体目录。如果忽略该值,则使用当前目录。如果有多个目录则可以多次调用--proto_path,它们将会顺序的被访问并导入。-I=IMPORT_PATH是--proto_path的简化形式。

  • 相关阅读:
    C#随笔
    C# 程序间通信的各种途径及解析
    C#控件根据窗体改变大小
    c# SqlHelper Class
    初始Java
    函数基础
    基本数据类型的高级特性:
    python基础
    C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现。
    Oracle使用dblink导入数据
  • 原文地址:https://www.cnblogs.com/DjanFey/p/12157652.html
Copyright © 2011-2022 走看看