gRPC四种service method介绍

简介: gRPC四种service method介绍

gRPC四种service method介绍

首先gRPC是基于HTTP2.0的

  • 最简单的RPC,客户端使用存根向服务器发送请求,然后等待响应,就像正常的函数调用。

// Obtains the feature at a given position.
rpc GetFeature(Point) returns (Feature) {}
  • 服务器端的流式RPC(server-side streaming RPC),客户端向服务端发送请求后,获得流式响应,从中读取连续的消息。客户端会一直从返回的流中获取消息,直到没有新消息。在响应类型前加上stream关键字,即可得到服务端的流式RPC。

// Obtains the Features available within the given Rectangle.  Results are
// streamed rather than returned at once (e.g. in a response message with a
// repeated field), as the rectangle may cover a large area and contain a
// huge number of features.
rpc ListFeatures(Rectangle) returns (stream Feature) {}
  • 有服务端就有客户端流式RPC(client-side streaming RPC),客户端发送连续消息给服务器,当客户端停止发送消息后,等待服务端读取所有信息后返回响应,通过在请求类型前加上stream关键字来定义一个客户端流式RPC。

// Accepts a stream of Points on a route being traversed, returning a
// RouteSummary when traversal is completed.
rpc RecordRoute(stream Point) returns (RouteSummary) {}
  • 双向流式RPC(bidirectional streaming RPC)两边同时发送(服务端返回响应也算是发送)连续消息通过读写流(read-write stream),两个流相互独立,所以客户端和服务端可以根据他们想要的顺序去读写。举个例子,服务器端可以等待所有的客户端消息都收到后,才给予响应,或者服务端可以读取一条或几条消息,开始返回响应,亦或是其他的独写组合。消息的顺序在流中是固定的。通过在请求类型和响应类型前同事加上stream关键字定义双向流式RPC.

// Accepts a stream of RouteNotes sent while a route is being traversed,
// while receiving other RouteNotes (e.g. from other users).
rpc RouteChat(stream RouteNote) returns (stream RouteNote) {}

Reference

https://grpc.io/docs/languages/go/basics/


相关文章
|
9月前
|
XML 数据库 Android开发
Service介绍
Service介绍
86 0
|
Nacos
解决:java.lang.IllegalStateException: Invalid host: lb://exam_farmer_service
解决:java.lang.IllegalStateException: Invalid host: lb://exam_farmer_service
438 0
解决:java.lang.IllegalStateException: Invalid host: lb://exam_farmer_service
|
Kubernetes 负载均衡 容器
k8s(8)Service(服务)
Service(服务)
91 0
com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method add in the service
com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method add in the service
299 0
|
Kubernetes 负载均衡 网络协议
k8s service 总结
k8s service 总结
333 0
k8s service 总结
|
Dubbo Java 应用服务中间件
实现 Application1 调用 Service1 | 学习笔记
快速学习实现 Application1 调用 Service1。
|
API 调度
从Service到WorkManager
关于Service,想必大家都太熟悉了,今天我们就再回顾下它的使用、概念、区别、变更历史等等。
531 0
从Service到WorkManager
|
Kubernetes 负载均衡 网络协议
k8s service
Kubernetes Service 定义了这样一种抽象:一个 Pod 的逻辑分组,一种可以访问它们的策略——通常称为微服务。这一组 Pod 能够被 Service 访问到,通常是通过 Label Selector 实现的。
7088 0
|
监控 关系型数据库 Unix
|
监控 Unix 关系型数据库