eShopOnContainers中gRPC服务间通信,是?

摘要:# 引言 最近翻看最新3.0 eShopOncontainers源码,发现其在架构选型中补充了 gRPC 进行服务间通信。那就索性也写一
引言 最近翻看最新3.0eShopOncontainers源码,发现其在架构选型中补充了gRPC进行服务间通信。那就索性也写一篇,作为系列的补充。 gRPC 老规矩,先来理一下gRPC的基本概念。gRPC是Google开源的RPC框架,比肩dubbo、thrift、brpc。其优势在于: 1.基于protobuffer:二进制协议,具有高性能的序列化机制。相较于JSON(文本协议)而言,首先从数据包上就有60%-80%的减小,其次其解包速度仅需要简单的数学运算完成,无需复杂的词法语法分析,具有8倍以上的性能提升。 2.支持数据流。 3.基于proto文件:可以更方便的在客户端和服务端之间进行交互。 4.gRPC语言无关性:所有服务都是使用原型文件定义的。这些文件基于protobuffer语言,并定义服务的接口。基于原型文件,可以为每种语言生成用于创建服务端和客户端的代码。其中protoc编译工具就支持将其生成C#代码。从.NETCore3中,gRPC在工具和框架中深度集成,开发者会有更好的开发体验。 gRPC在 eShopOncontainers的应用 首先来理一下eShopOncontainers中服务间同步通信的技术选型,主要还是是基于HTTP/REST,gRPC作为补充。 在eShopOncontainers中OrderingAPI、CatalogAPI、BasketAPI微服务通过gRPC端点暴露服务。其中MobileShopping、WebShoppingBFFs使用gRPC客户端访问服务。以下以Ordering API gRPC 服务举例说明。 订单微服务中定义了一个gRPC服务,用于从购物车创建订单。
阅读全文