• 微服务学习(二)--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的简化形式。

  • 相关阅读:
    BZOJ4076 : [Wf2014]Maze Reduction
    XVII Open Cup named after E.V. Pankratiev. Eastern GP, Division 1
    BZOJ4617 : [Wf2016]Spin Doctor
    BZOJ4613 : [Wf2016]Longest Rivers
    BZOJ2587 : [Ceoi2011]Team
    BZOJ4422 : [Cerc2015]Cow Confinement
    BZOJ4437 : [Cerc2015]Looping Labyrinth
    BZOJ4432 : [Cerc2015]Greenhouse Growth
    BZOJ2670 : Almost
    寻找“最好”(4)——不等约束和KKT条件
  • 原文地址:https://www.cnblogs.com/DjanFey/p/12157652.html
Copyright © 2020-2023  润新知