Tetrate - 使用Istio进行gRPC转码

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

内容简介:在构建新的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遇到了停机。


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

查看所有标签

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

Perl入门经典

Perl入门经典

[美]Curtis "Ovid" Poe / 朱允刚、韩雷、叶斌 / 清华大学出版社 / 2013-9-20 / 78.00

作为最有影响力的编程语言之一,Perl被广泛用在Web开发、数据处理和系统管理中。无论是Perl新手,还是想要加强自己实战技能的Perl程序员,《Perl入门经典》都提供了处理日常情况所需的各种技术。凭借十多年的Perl经验,作者Curtis“Ovid”Poe一开始先简单回顾了Perl的基础知识,然后以此为出发点,举例说明了Perl在工作场所中的各种真实用法。此外,书中还包含了一些动手练习、宝贵建......一起来看看 《Perl入门经典》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具