Tetrate - 使用Istio进行gRPC转码

栏目: 后端 · 发布时间: 6年前

内容简介:在构建新的API(如HTTP/2,流,跨语言支持,服务器推送等)时使用gRPC而不是HTTP/JSON有很多优点。最难的部分往往是如何处理HTTP/ JSON的遗留服务。这就是为什么gRPC-JSON转码非常有吸引力的原因:我们可以实现基于gRPC的服务器,但是使用HTTP/JSON接口暴露给其他传统服务。因此通常,我们会使用gRPC网关或Google Cloud Endpoints等产品 来为我们处理gRPC-JSON转码,但Envoy也实现了转码!Envoy将gRPC转码作为过滤器实现。在Tetrat

在构建新的API(如HTTP/2,流,跨语言支持,服务器推送等)时使用gRPC而不是HTTP/JSON有很多优点。最难的部分往往是如何处理HTTP/ JSON的遗留服务。这就是为什么gRPC-JSON转码非常有吸引力的原因:我们可以实现基于gRPC的服务器,但是使用HTTP/JSON接口暴露给其他传统服务。因此通常,我们会使用gRPC网关或Google Cloud Endpoints等产品 来为我们处理gRPC-JSON转码,但Envoy也实现了转码!

Envoy将gRPC转码作为过滤器实现。在Tetrate,我们使用Istio作为我们的Envoy边车的控制平面,Istio允许通过其EnvoyFilterCRD 进行自定义Envoy配置。为了利用这一点,我们创建了一个小工具gen-transcoder,它扫描gRPC原型描述符以自动生成准确的Envoy过滤器配置。它还支持过滤Envoy公开为HTTP/JSON的描述符中的服务或包等功能。 gen-transcoder是为了与CI / CD工作流程保持友好。在Tetrate,我们使用它来自动交付gRPC-JSON转码器配置,作为我们正常服务部署的一部分。

使用gen-transcoder是一个简单的两步过程:

第1步:在原型编译期间生成原型描述符:

$ protoc \
    -I path/to/google/protobufs \
    -I path/to/your/protos \
    --descriptor_set_out=path/to/output/dir/YOUR_SERVICE_NAME.proto-descriptor \
    --include_imports \
    --go_out=plugins=grpc:. \
    path/to/your/protos/service.proto

第2步:gen-transcoder用于生成Istio Envoy代理配置

$ gen-transcoder \
    --port 9080 \
    --service foo \
    --<b>package</b>s proto.<b>package</b>.name \
    --services='Service.*' \
    --descriptor=path/to/output/dir/YOUR_SERVICE_NAME.proto-descriptor

作为其中的一部分,我们已经包含了一些示例proto服务,这些服务被编译为单个proto描述符,您可以通过以下方式使用它。

$ gen-transcoder \
    --port 9080 \
    --service echo \
    --packages proto \
    --services 'Echo.*' \
    --descriptor \
    proto/onebig.proto-descriptor

这将EnvoyFilter专门针对服务proto.EchoService打包proto。

我们很乐意亲自尝试这个工具。您可以在 此处 下载 源代码 。有关详细信息,请参阅 README.md

作为警告,EnvoyFilter必须谨慎使用Istio !如果推送了错误的过滤器配置,Envoy将拒绝配置更新并停止服务 - 在编写此 工具 之前,我们在Tetrate遇到了停机。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

TCP/IP网络编程

TCP/IP网络编程

[韩] 尹圣雨 / 金国哲 / 人民邮电出版社 / 2014-7 / 79.00元

第一部分主要介绍网络编程基础知识。此部分主要论述Windows和Linux平台网络编程必备基础知识,未过多涉及不同操作系统特性。 第二部分和第三部分与操作系统有关。第二部分主要是Linux相关内容,而第三部分主要是Windows相关内容。从事Windows编程的朋友浏览第二部分内容后,同样可以提高技艺。 第四部分对全书内容进行总结,包含了作者在自身经验基础上总结的学习建议,还介绍了网络......一起来看看 《TCP/IP网络编程》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具