0
点赞
收藏
分享

微信扫一扫

go语言 grpc 02 服务端原理分析

RPC 框架原理

RPC 框架的目标就是让远程服务调用更加简单、透明,RPC 框架负责屏蔽底层的传输方式(TCP 或者 UDP)、序列化方式(XML/Json/ 二进制)和通信细节。服务调用者可以像调用本地接口一样调用远程的服务提供者,而不需要关心底层通信细节和调用过程。RPC 框架的调用原理图如下所示:

go语言  grpc 02 服务端原理分析 _微服务

业界主流的 RPC 框架整体上分为三类:

1.支持多语言的 RPC 框架,比较成熟的有 Google 的 gRPC、Apache(Facebook)的 Thrift;

2.只支持特定语言的 RPC 框架,例如新浪微博的 Motan;

3.支持服务治理等服务化特性的分布式服务框架,其底层内核仍然是 RPC 框架, 例如阿里的 Dubbo

。随着微服务的发展,基于语言中立性原则构建微服务,逐渐成为一种主流模式,例如对于后端并发处理要求高的微服务,比较适合采用 Go 语言构建,而对于前端的 Web 界面,则更适合 Java 和 JavaScript。

因此,基于多语言的 RPC 框架来构建微服务,是一种比较好的技术选择。例如 Netflix,API 服务编排层和后端的微服务之间就采用 gRPC 进行通信。

gRPC 是由 Google 开发并开源的一种语言中立的 RPC 框架,当前支持 C、Java 和 Go 语言,其中 C 版本支持 C、C++、Node.js、C# 等。当前 Java 版本最新 Release 版为 1.5.0

gRPC 特点语言中立,支持多种语言

基于 IDL 文件定义服务,通过 proto3 工具生成指定语言的数据结构、服务端接口以及客户端 Stub;

通信协议基于标准的 HTTP/2 设计,支持双向流、消息头压缩、单 TCP 的多路复用、服务端推送等特性,这些特性使得 gRPC 在移动端设备上更加省电和节省网络流量;

序列化支持 PB(Protocol Buffer)和 JSON,PB 是一种语言无关的高性能序列化框架,基于 HTTP/2 + PB, 保障了 RPC 调用的高性能。

go语言  grpc 02 服务端原理分析 _java_02

gRPC服务端创建流程

go语言  grpc 02 服务端原理分析 _java_03

go语言  grpc 02 服务端原理分析 _微服务_04

go语言  grpc 02 服务端原理分析 _微服务_05

go语言  grpc 02 服务端原理分析 _服务端_06

go语言  grpc 02 服务端原理分析 _微服务_07

go语言  grpc 02 服务端原理分析 _服务端_08

go语言  grpc 02 服务端原理分析 _服务端_09

go语言  grpc 02 服务端原理分析 _微服务_10

go语言  grpc 02 服务端原理分析 _服务端_11

go语言  grpc 02 服务端原理分析 _微服务_12

go语言  grpc 02 服务端原理分析 _服务端_13

go语言  grpc 02 服务端原理分析 _微服务_14

go语言  grpc 02 服务端原理分析 _微服务_15

go语言  grpc 02 服务端原理分析 _微服务_16

go语言  grpc 02 服务端原理分析 _服务端_17

go语言  grpc 02 服务端原理分析 _java_18

go语言  grpc 02 服务端原理分析 _微服务_19

举报

相关推荐

0 条评论