流式rpc

python3和grpc的微服务探索实践

北城以北 提交于 2020-05-05 14:03:09
对于微服务的实践,一般都是基于Java和Golang的,博主最近研究了下基于Python的微服务实践,现在通过一个简单的服务来分析Python技术栈的微服务实践 技术栈:Python3 + grpc + Zookeeper 服务API:通过学科获取相应的题型 grpc:由Google公司开源的高性能RPC框架,消息协议使用Google自家开源的Protocol Buffers协议机制,传输使用HTTP2.0标准,支持双向流和连接多路复用 Protocol Buffers部分: syntax = " proto3 " ; message Subject { string name = 1 ; } message QuestionType { string name = 1 ; } service SimpleRpcServer { // server streaming rpc // 客户端发送学科,服务端多次返回该学科包含的题型 rpc GetSubjectQuestionTypes (Subject) returns (stream QuestionType) { } } 这里定义grpc的接口类型为服务器流式RPC,即客户端发起一次请求,服务器可以返回多个响应信息,典型的例子有:客户端向服务端发送一个股票代码,服务端就把该股票的实时数据源源不断的返回给客户端:

Go gRPC教程-服务端流式RPC(三)

谁都会走 提交于 2020-04-14 10:25:04
【推荐阅读】微服务还能火多久?>>> 前言 上一篇介绍了 简单模式RPC ,当数据量大或者需要不断传输数据时候,我们应该使用流式RPC,它允许我们边处理边传输数据。本篇先介绍 服务端流式RPC 。 服务端流式RPC :客户端发送请求到服务器,拿到一个流去读取返回的消息序列。 客户端读取返回的流,直到里面没有任何消息。 情景模拟:实时获取股票走势。 1.客户端要获取某原油股的实时走势,客户端发送一个请求 2.服务端实时返回该股票的走势 新建proto文件 新建server_stream.proto文件 1.定义发送信息 // 定义发送请求信息 message SimpleRequest{ // 定义发送的参数,采用驼峰命名方式,小写加下划线,如:student_name // 请求参数 string data = 1; } 2.定义接收信息 // 定义流式响应信息 message StreamResponse{ // 流式响应数据 string stream_value = 1; } 3.定义服务方式ListValue 服务端流式rpc,只要在响应数据前添加stream即可 // 定义我们的服务(可定义多个服务,每个服务可定义多个接口) service StreamServer{ // 服务端流式rpc,在响应数据前添加stream rpc ListValue