gRPC微服务搭建(学习阶段1:极简服务端客户端)
发布时间:2026/9/30 19:30:09 锦皓数字建站
`)
gRPC 是由 Google 开源的一款高性能、跨语言的远程过程调用RPC框架因为它是目前主流的框架因此博主准备开始学习这个框架并且基于此框架构建一套微服务安装必须的第三方库pip install grpcio文章目录服务端代码客户端代码gRPC的程序分为两个部分一个是服务端一个是客户端这里博主整理了一个简单的示例程序方便学习服务端代码importjsonfromconcurrentimportfuturesimportgrpc# 客户端的请求defsay_hello(request,_context):return{message:fHello,{request[name]}!}# 开始服务端的配置 # 创建 gRPC 服务并使用线程池处理客户端请求。servergrpc.server(futures.ThreadPoolExecutor(max_workers2))# 注册 SayHello 方法同时指定请求和响应的 JSON 转换方式。handlergrpc.unary_unary_rpc_method_handler(say_hello,request_deserializerlambdadata:json.loads(data.decode(utf-8)),response_serializerlambdaresponse:json.dumps(response).encode(utf-8),)# 注册服务名称和方法名称客户端必须使用相同的名称调用。server.add_generic_rpc_handlers((grpc.method_handlers_generic_handler(hello.Greeter,{SayHello:handler}),))# 启动 gRPC 服务监听 50051 端口。server.add_insecure_port([::]:50051)server.start()print(gRPC 服务已启动127.0.0.1:50051)# 阻塞直到主动退出server.wait_for_termination()这里就定义了一个简单的gRPC的服务它启动2个线程注册了一个hello.Greeter的服务名这个服务下有个SayHello的方法唯有方法名对外暴露如果客户端调用这个方法那么它被指引的执行函数是后面的handler客户端代码对应的客户端代码importjsonimportgrpc# 连接地址必须和 server.py 中的端口一致。withgrpc.insecure_channel(127.0.0.1:50051)aschannel:# 指定要调用的服务方法/服务名/方法名。say_hellochannel.unary_unary(/hello.Greeter/SayHello,# 发送请求前Python 字典转换为 JSON 字节。request_serializerlambdadata:json.dumps(data).encode(utf-8),# 收到响应后JSON 字节转换为 Python 字典。response_deserializerlambdadata:json.loads(data.decode(utf-8)),)# 发送名称并获取服务端返回的问候消息。responsesay_hello({name:World})print(response[message])这个客户端便是使用grcp调用之前注册的服务名/方法名的办法并且传入参数进去。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。