Go+Python双语言混合开发 第三部分 Go开发学习 第4章 grpc入门 学习笔记

Go+Python双语言混合开发 第三部分 Go开发学习 第4章 grpc入门 学习笔记

第4章 grpc入门

4.1 什么是grpc和protobuf

grpc

gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHPC# 支持.

链接

protobuf

java中的dubbo dubbo/rmi/hessian messagepack 如果你懂了协议完全有能力自己去实现一个协议

  • 习惯用 Json、XML 数据存储格式的你们,相信大多都没听过Protocol Buffer
  • Protocol Buffer 其实 是 Google出品的一种轻量 & 高效的结构化数据存储格式,性能比 Json、XML 真的强!太!多!
  • protobuf经历了protobuf2和protobuf3,pb3比pb2简化了很多,目前主流的版本是pb3

4.2 python下protobuf体验

1. 安装

python -m pip install grpcio #安装grpc
python -m pip install grpcio-tools #安装grpc tools

2. 先体验protobuf3

protobuf3 是有自己专门的定义格式的 - 门槛

syntax = "proto3";

message HelloRequest {
  string name = 1;
}

3. 生成proto的python文件

python -m grpc_tools.protoc --python_out=. --grpc_python_out=. -I. helloworld.proto

4. 查看protobuf生成的代码

from grpc_test import helloworld_pb2

request = helloworld_pb2.HelloRequest()

request.name = "bobby"
req_str = request.SerializeToString()
print(req_str)

request2 = helloworld_pb2.HelloRequest()

request2.ParseFromString(req_str)
print(request2.name)

5. 对比一下protobuf生成的效果

from grpc_test import helloworld_pb2

request = helloworld_pb2.HelloRequest()

request.name = "bobby"
req_str = request.SerializeToString()
print(req_str)

import json
req_json = {
    "name":"bobby"
}
print(len(json.dumps(req_json)))
print(len(req_str))

4.3 python下的grpc开发体验

1. 官方案例

链接

2. 运行

python greeter_server.py #运行服务器端
python greeter_client.py #运行客户端

4.4 python下解决grpc import路径出错的bug

https://github.com/protocolbuffers/protobuf/issues/1491

4.5 go下grpc开发体验

1. 下载工具

链接

如果觉得下载较慢可以点击这里下载:

上一篇:Go+Python双语言混合开发 第三部分 Go开发学习 第5章 protobuf3和grpc进阶 学习笔记


下一篇:Object.create()方法的实现