可视化gRPC语言堆栈
作者:互联网
这是gRPC堆栈的高级概述。gRPC支持的10种默认语言中的每一种都有多层,可让您自定义应用程序中需要的部分。
gRPC中有三个主要堆栈:C核心,Go和Java。大多数语言都是基于C语言的薄包装 gRPC核心库:
包装语言:
例如,一个Python应用程序调用生成的Python存根。这些调用通过拦截器传递,并进入包装库,在其中将调用转换为C调用。gRPC C核心将RPC编码为HTTP / 2,可以选择使用TLS加密数据,然后将其写入网络。
关于gRPC的很酷的事情之一就是您可以将这些部分交换出去。例如,您可以改用C ++,并使用进程内传输。这将使您不必一直深入到OS网络层。另一个示例是试用QUIC协议,该协议可让您快速打开新连接。能够在基于环境的各种传输上运行,使gRPC真正具有灵活性。
对于每种包装语言,默认的HTTP / 2实现内置于C-core库中,因此无需包含外部语言。但是,如您所见,可以自带(例如使用Chrome网络库Cronet)。
Go
在gRPC-Go中,由于不必支持这么多的配置,因此堆栈要简单得多。这是Go堆栈的高级概述:
这里的结构有些不同。由于只有一种语言,因此从堆栈顶部到底部的流程更加线性。与包装语言不同,gRPC Go可以使用其自己的HTTP / 2实现或Gonet/http
包。
JAVA
这是gRPC-Java的高级概述 堆栈:
同样,结构有些不同。Java支持像C核心一样的HTTP / 2,QUIC和In Process。但是,与C-Core不同,应用程序通常可以绕过生成的存根和拦截器,并直接与Java Core库对话。根据每种gRPC语言实现的需求,每种结构都略有不同。同样与包装语言不同,gRPC Java将HTTP / 2实现分离为可插入的库(例如Netty,OkHttp或Cronet)。
标签:Java,语言,gRP,gRPC,C语言,Go,可视化,堆栈,HTTP 来源: https://www.cnblogs.com/a00ium/p/14158622.html