grpc python java_微服务跨语言 gRPC 之 Java & Python

本文旨在说明 spring-boot-starter-grpc 框架与 Python 之间跨语言 RPC 调用的友好实现。阅读本文前,请详细阅读 wiki文档,以便了解 spring-boot-starter-grpc 的工作原理。

Java Server & Client

模块说明:

samples-interface 定义了不同的接口,接口的定义中指明了序列化方式,具体包含 Sofa-Hessian、ProtoStuff、FastJSON

samples-server 依赖 samples-interface 模块,并实现了该模块中定义的所有接口

samples-client 依赖 samples-interface,远程调用 samples-server 的实现类,并提供了 HTTP 接口从外部调用 RPC,方便测试

grpc-python 准备工作

0、序列化方式选择

使用 JSON 文本

1、安装 Python 相关库

pip install grpcio

pip install protobuf

pip install grpcio-tools

2、Python 工程相关目录结构说明

com/anoyi/grpc/facade/service/UserServiceByFastJSON.py

对应 Java 模块 samples-facade 中定义的接口 UserServiceByFastJSON

client.py

python grpc 客户端,用于远程调用服务端的方法

server.py

python grpc 服务端,用于提供方法实现,供客户端调用

service.proto

通用的 proto 文件,与 spring-boot-starter-grpc 中定义的一致

service_pb2.py 和 service_pb2_grpc.py

由工具 grpcio-tools 根据 service.proto 生成,生成方式如下:

python -m grpc_tools.protoc -I./ --python_out=. --grpc_python_out=. ./service.proto

Python Server & Java Client

跨语言框架级对接中,使用了通用的 service.proto,所以服务端使用反射机制来将请求体映射到对应的具体实现方法,server.py 具体实现示例:

#!/usr/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值