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/


相关文章
|
Java
Invalid or corrupt jarfile坑爹问题解决
打包一个可以直接利用java -jar ***就可以运行的jar包步骤:jar cvfm lottery.jar MANIFEST.MF jdbc.properties com如果出现:java.io.
37754 0
|
Ubuntu Linux 内存技术
Linux下使用alsamixer配置系统默认的声卡设备(默认音频输出设备、输入设备、系统音量)
Linux下使用alsamixer配置系统默认的声卡设备(默认音频输出设备、输入设备、系统音量)
5375 0
Linux下使用alsamixer配置系统默认的声卡设备(默认音频输出设备、输入设备、系统音量)
|
5月前
|
JavaScript 数据可视化 Docker
简易制作MCP服务器并测试
本文介绍了如何简易制作并测试MCP服务器,包括环境搭建、代码实现及Docker部署。首先通过uv包创建项目,在main.py中定义MCP服务器及其工具和资源函数。接着详细说明了在Windows上安装uv、配置Docker镜像加速、生成requirements.txt文件以及编写Dockerfile的过程。最后,通过构建和运行Docker容器部署MCP服务器,并使用Node.js工具测试其功能,确保服务器正常工作。此教程适合初学者快速上手MCP服务器的开发与部署。
2311 63
|
Ubuntu Linux
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
2415 4
|
消息中间件 算法 Linux
【Linux】详解如何利用共享内存实现进程间通信
【Linux】详解如何利用共享内存实现进程间通信
880 1
|
10月前
|
Arthas 监控 安全
arthas如何跟踪某个方法?并查看方法的入参和出参?
arthas如何跟踪某个方法?并查看方法的入参和出参?
1701 6
|
11月前
|
运维 jenkins 持续交付
自动化运维之路:构建高效CI/CD流水线
在软件开发的快节奏中,持续集成和持续部署(CI/CD)流水线是提升效率、保障质量的关键。本文将引导你理解CI/CD流水线的重要性,并手把手教你如何搭建一个高效的自动化运维系统。通过实际代码示例,我们将一步步实现从代码提交到自动测试、部署的全流程自动化,确保软件交付过程既快速又可靠。
|
12月前
|
数据采集 数据库
在EXCEL中VBA编程检验身份证号码有效性
在EXCEL中VBA编程检验身份证号码有效性
|
存储 开发框架 网络协议
一文搞懂:【.NET与树莓派】用MPD制作数字音乐播放器
一文搞懂:【.NET与树莓派】用MPD制作数字音乐播放器
418 0
|
Oracle 关系型数据库 MySQL
入职必会-开发环境搭建17-IDEA连接数据库
IntelliJ IDEA集成了众多插件,方便开发者使用,使用IDEA自带的Database模块就可以很方便的配置、连接数据库,在 IntelliJ IDEA 中连接数据库,可以按照以下步骤进行操作。
601 0