- Madman
- ·
Go微服务实战|第5章:gRPC Bidirectio...
gRPC Bidirectional Streaming RPC 是指客户端和服务端都可以同时发送或接收 Streaming 数据流,而且 Requests 和 Responses 的数量不要求一致,即它们是异步的,也许客户端发送了 3 个请求 messages,而服务端响应了 5 个响应 messages。它非常适合当客户端和服务端需要异步发送很多数据时,或者聊天场景,或者客户端和服务端的长时间连接情形等
gRPC Bidirectional Streaming RPC 是指客户端和服务端都可以同时发送或接收 Streaming 数据流,而且 Requests 和 Responses 的数量不要求一致,即它们是异步的,也许客户端发送了 3 个请求 messages,而服务端响应了 5 个响应 messages。它非常适合当客户端和服务端需要异步发送很多数据时,或者聊天场景,或者客户端和服务端的长时间连接情形等
gRPC Client-side Streaming RPC 是指客户端发送多个请求 messages,客户端发送 Streaming 数据流,而从服务端接收一个响应 message
由于 gRPC 支持 HTTP/2,所以可以使用 HTTP/2 的 Stream 特性,Server-side Streaming RPC 是指客户端发送一个请求 message 后,将会从服务端接收多个响应 messages,服务端返回 Streaming 数据流。它非常适合要传输的结构化数据比较大的场景,或者服务端需要主动 Push...
gRPC Unary RPC 就是我们所熟悉的客户端发起一次 Request、服务端响应一次 Response,即客户端发送一个请求 message 给服务端,然后再从服务端接收到一个响应 message。Unary RPC 调用将成为你的 API 中最通用的 RPC 调用,它非常适合要传输的结构化数据很小的场景,我们构建 API 时应当首先实现为 Unary...
gRPC 是谷歌开源的高性能、轻量级 RPC 通信框架,基于 Protocol Buffers 序列化协议进行开发,支持多种语言(C++、Golang、Python、Java 等),本篇只介绍 Golang 的 gRPC 使用。同时,由于 gRPC 支持 HTTP/2 协议,使用二进制帧进行数据传输,还可以为通信双方建立持续的双向数据流,使其在 Android、iOS...
并发(concurrency)不是并行(parallelism),并行是让不同的代码片段同时在不同的 CPU 核上执行。并行的关键是同时执行多个任务,而并发是指同时管理很多任务,这些任务可能只做了一半就被暂停去做别的任务了。在很多情况下,并发的效果比并行好,因为操作系统和硬件的总资源一般很少,但能支持系统同时处理很多任务。这种 [使用较少的资源做更多的事情] 的哲学, 也是指导 Go...
接口是用来定义行为的类型,这些被定义的行为不由接口直接实现,而是通过方法由用户定义的类型实现。在 Go 语言中,只有当有两个或两个以上的具体类型必须以相同的方式进行处理时才需要接口。当新的类型出现时,更简单方法的、更小的接口更容易满足需求,对于接口设计的一个好的标准就是 ask only for what you need
方法能给用户定义的类型添加新的行为,它有两种类型的接收者:值接收者(value receiver) 和指针接收者(pointer receiver),本文将介绍在 Go 中和方法相关的各种概念
Go 语言里用映射用来处理具有键值对结构的数据,可以使用 map literal 或 make 函数来初始化映射。注意映射的零值为 nil,不能给它添加键值对,否则会报编译错误