gRPC协议框架
TCP层:底层通信协议,基于TCP连接。
TLS层:该层是可选的,基于TLS加密通道。
HTTP2层:gRPC承载在HTTP2协议上,利用了HTTP2的双向流、流控、头部压缩、单连接上的多 路复用请求等特性。
gRPC层:远程过程调用,定义了远程过程调用的协议交互格式。
编码层:gRPC通过编码格式承载数据,包括GPB(Google Protocol Buffer)编码格式。
数据模型层:业务模块的数据。通信双方需要了解彼此的数据模型,才能正确调用信息。当前设备提 供了订阅、配置、查询业务模块。 proto文件。
gRPC网络模型
grpc会启动多个线程的epoll来处理描述符,不管异步还是同步,每个epoll都对应一个线程。
同步模型
得益于SO_REUSEPORT参数,同一个listenfd可以被放到多个epoll中进行监听 当一个链接成功建立后会生成acceptfd,这个acceptfd会被随机的分配到现有的epoll中,目前grpc 的分配策略是轮询(round-robin)
min poller, max poller, 自动根据调用的请求的频次 进行自动伸缩poller。
异步模型
异步处理的epoll方式和同步是类似的,但对于rpc函数的响应提供了更灵活的处理机制,可以将一些耗 时的处理逻辑放到外部的线程池进行处理。
总结
gRPC 是一个高性能、开源的远程过程调用(RPC)框架,由 Google 开发并基于 HTTP/2 和 Protocol Buffers(protobuf)构建。它支持多种编程语言,适用于微服务、分布式系统等场景,提供高效的通信和跨语言兼容性。
更多资料在:https://github.com/0voice查询