首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Envoy 中的 xDS REST 和 gRPC 协议详解

Envoy 中的 xDS REST 和 gRPC 协议详解

Envoy 是一个开源的边车代理,用于实现服务网格和微服务的功能。Envoy 使用了 xDS 协议来动态地获取配置信息。xDS 协议支持 REST 和 gRPC 两种数据传输方式。

xDS REST 协议

xDS REST 协议是基于 HTTP/1.1 的一种轻量级数据传输方式。Envoy 通过发送 HTTP 请求来获取配置信息,而配置服务器则通过 HTTP 响应返回配置数据。xDS REST 协议的主要优点是易于实现和理解,但它的性能可能不如 gRPC 协议。

以下是 xDS REST 协议的一些应用场景:

  • 获取 CDS(Cluster Discovery Service)信息:Envoy 通过发送 HTTP 请求来获取集群信息。
  • 获取 EDS(Endpoint Discovery Service)信息:Envoy 通过发送 HTTP 请求来获取端点信息。
  • 获取 LDS(Listener Discovery Service)信息:Envoy 通过发送 HTTP 请求来获取监听器信息。
  • 获取 RDS(Route Discovery Service)信息:Envoy 通过发送 HTTP 请求来获取路由信息。

xDS gRPC 协议

xDS gRPC 协议是基于 gRPC 的一种高性能数据传输方式。Envoy 通过建立 gRPC 连接来获取配置信息,而配置服务器则通过 gRPC 响应返回配置数据。xDS gRPC 协议的主要优点是性能高,但实现起来可能更加复杂。

以下是 xDS gRPC 协议的一些应用场景:

  • 获取 CDS(Cluster Discovery Service)信息:Envoy 通过建立 gRPC 连接来获取集群信息。
  • 获取 EDS(Endpoint Discovery Service)信息:Envoy 通过建立 gRPC 连接来获取端点信息。
  • 获取 LDS(Listener Discovery Service)信息:Envoy 通过建立 gRPC 连接来获取监听器信息。
  • 获取 RDS(Route Discovery Service)信息:Envoy 通过建立 gRPC 连接来获取路由信息。

总之,xDS REST 和 xDS gRPC 协议都是 Envoy 中用于动态获取配置信息的协议。它们的选择取决于具体的应用场景和性能需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Envoy和gRPC-Web:REST的鲜新替代方案

我一直很喜欢gRPC的性能、可伸缩性和服务交互的IDL驱动方法,并且渴望一种尽可能从服务路径中消除REST的方法。...REST的方式 下图展示了两种构建基于gRPC的服务体系结构的web应用程序的方法。在左侧面板中,你将看到基于REST的“传统”方式,而在右侧面板中,你将看到gRPC-Web方式。 ?...REST API与gRPC-Web中的客户机-后端交互 在左侧面板中,你将注意到REST API服务器充当web应用程序和后端之间的联系人。...这意味着不需要HTTP状态码,不需要JSON SerDe,也不需要HTTP服务器本身的部署和管理负担。 在右边的面板中,你可以看到新的gRPC-Web替代方案。...一条新的道路 gRPC- Web和Envoy提供了一种非常引人注目的web开发新方法,它提供了Protocol Buffers和gRPC的类型安全性,并规避了HTTP和REST的许多缺陷,这些缺陷我们都非常熟悉

2.7K20

Envoy 基于文件和 API 的动态配置方式

对于希望强制资源按照不同类型的顺序到达 Envoy 的用户来说,有聚合的 xDS,这是一个单独的 gRPC 服务,在一个 gRPC 流中携带所有资源类型。(ADS 只支持 gRPC)。...EDS 配置 端点发现服务 EDS 是基于 gRPC 或 REST-JSON API 服务器的 xDS 管理服务器,Envoy 使用它来获取集群成员。集群成员在 Envoy 术语中称为“端点”。...端点发现服务(EDS)是 Envoy 基于 gRPC 或者用来获取集群成员的 REST-JSON API 服务的 xDS 管理服务。...Envoy 项目在 Java 和 Golang 中都提供了 EDS 和其他服务发现的 gRPC 实现参考。...gRPC xDS 服务相比 REST-JSON xDS 服务,通常更为复杂一些,因为 gRPC 是基于 HTTP/2 的,并且使用 Protocol Buffers 作为序列化协议。

94882
  • 深度解读服务治理 & ServiceMesh、xDS

    4.2 xDS 基于 xDS[3] 协议提供了标准的控制面规范,并以此向数据面传递服务信息和治理规则。 xDS是由Envoy贡献给istio,现在已经作为sidecar的标准协议。...传统的REST-JSON API, 现在已经是ProtoBufffer和 REST/gRPC api v2 xDS API. 21年初停用 xDS 是一组发现服务的总称,包含LDS,RDS,CDS,EDS...xDS协议是基于gRPC实现的传输协议,即Envoy通过gRPC streaming订阅Pilot的资源配置。...利用XDS协议,Envoy可以实现配置的完全动态化,配置实时更新而无需重启Envoy或者影响业务,此外,利用其L3/L4/L7 Filter机制,Envoy可以完全无侵入的扩展各种强大的功能。...xDS协议分析 在实际使用和性能考量中:设计者延伸出两种设计角度: 角度 --- --- ---后者-->前者带来了什么?

    1.8K10

    Envoy之代码架构

    笔者会按照下面的思路来介绍这部分内容: 对于Envoy来说,几乎所有配置都可以通过订阅来动态获取,如监控指定路径下的文件、启动gRPC流或轮询REST接口,对应的发现服务以及各种各样的API统称为...XDS处理流程:Envoy通过xDS协议与控制面实现配置数据的交换。...同时, Envoy也提供了强大的日志过滤能力,在数据量较大时,可以以此过滤掉非关键数据。借助 xDS 协议,无论是日志格式还是过滤规则,都可以在运行时动态的变化和修改。...每个Sidecar通过xDS协议和控制面交互,获取集群中其他服务的相关信息以及各种服务治理相关(鉴权、分流、流量复制等等)的配置。...gRPC流将相关的配置推送到Envoy。

    83030

    后Kubernetes时代的微服务

    Service)、LDS(Listener Discovery Service)和RDS(Route Discovery Service),后来在Envoy v3版本中xDS协议又发展出了Scoped...轮询REST-JSON轮询订阅:单个xDS API可以对REST端点进行同步(长)轮询。 Istio使用gRPC流式订阅的方式配置所有的数据平面的Sidecar Proxy。...06 Envoy Envoy是Istio服务网格中默认的Sidecar,Istio在Envoy的基础上按照 Envoy的xDS协议扩展了其控制平面。...在讲解Envoy xDS协议之前还需要先熟悉下Envoy的基本术语。下面列举了Envoy中的基本术语及其数据结构解析。...xDS协议是由Envoy提出的,目前是Istio中默认的Sidecar 代理。但是,只要实现了xDS协议,理论上就可以作为Istio中的Sidecar 代理,例如,蚂蚁集团开源的MOSN。

    79830

    Mesh3# Envoy代理转发与xDS映射关系

    引言 Envoy作为Istio默认数据面代理,它的工作流程是怎么样的?本文通过示例运行,走查其运行流程,以及xDS协议映射。...一、xDS xDS 协议是“X Discovery Service”的简写,这里的“X”表示它不是指具体的某个协议,是一组基于不同数据源的服务发现协议的总称,包括 CDS、LDS、EDS、RDS等。...在Istio架构中,基于xDS协议提供了标准的控制面规范,并以此向数据面传递服务信息和治理规则。...在Envoy中,xDS被称为数据平面 API,并且担任控制平面Pilot和数据平面Envoy的通信协议。...当 RDS 和 EDS、CDS 共同使用时,可以帮助构建一个复杂的路由拓扑蓝绿发布等。 ADS EDS,CDS 等每个独立的服务都对应了不同的 gRPC 服务名称。

    83710

    Istio Pilot代码深度解析

    首先我们来看一下Pilot在Istio中的功能定位,Pilot将服务信息和配置数据转换为xDS接口的标准数据结构,通过GRPC下发到数据面的Envoy。...Pilot的输出为符合xDS接口的数据面配置数据,并通过GRPC Streaming接口将配置数据推送到数据面的Envoy中。...创建GRPC Server并接收Envoy的连接请求 Pilot Server创建了一个GRPC Server,用于监听和接收来自Envoy的xDS请求。...主动发起的xDS请求 Pilot和Envoy之间建立的是一个双向的Streaming GRPC服务调用,因此Pilot可以在配置变化时向Envoy推送,Envoy也可以主动发起xDS调用请求获取配置。...代码中主要包含以下业务逻辑: 从GRPC连接中接收来自Envoy的xDS 请求,并放到一个channel reqChannel中 从reqChannel中接收xDS请求,根据xDS请求的类型构造响应并发送给

    1.2K11

    Mesh8# Envoy原理提点与常用命令

    引言 本文就Envoy的基本概念、原理和常用命令进行整理汇总。...一、基本概念 Istio的核心组件,作为sideCar与应用部署在一个Pod中,作为代理流量的进出均需经过Envoy所在的容器,除了代理外还可根据规则进行流量治理、监控等功能。...HTTP1.1和HTTP/2,同时支持基于HTTP/2的gRPC 线程模型 一个Envoy进程包括一个Server主线程和一个GuardDog守护线程 Server主线程:负责管理Access Log以及解析上游主机的...一旦某个客户端连接进入Envoy中的某个线程,则连接断开之前的逻辑都在该线程内处理。例如:处理Client请求对应的TCP filter,解析协议和重新编码,与上游主机建立连接并处理返回数据等。...内存管理 内存管理分为变量管理和Buffer管理: 变量管理:C++运行过程中创建的实例 Buffer管理:数据接收、编解码等过程中临时存储数据的Buffer,通过malloc分配 流量控制 如果上游主机处理过慢会在

    84720

    史上最全的高性能代理服务器 Envoy 中文实战教程 !(强烈建议收藏)

    Envoy 自己使用 HTTP/2 链接管理器实现了 gRPC 协议,将原来官方的 Google gRPC 内置的很多功能,比如重试、超时、Endpoint 发现、负载均衡、负载报告、健康检查等功能都实现了...V2 的 API 提供了两种方式的访问,一种是 HTTP Rest 的方式访问,还有一种 GRPC 的访问方式。关于 GRPC 的介绍可以参考官方文档,在后面的文章中只实现了 GRPC 的 API。...Envoy 的启动配置文件分为两种方式:静态配置和动态配置。 静态配置是将所有信息都放在配置文件中,启动的时候直接加载。...ADS 不是一个实际意义上的 XDS,它提供了一个汇聚的功能,以实现需要多个同步 XDS 访问的时候可以在一个 Stream 中完成的作用。...动态的配置文件在前面的内容中已经有过介绍,最重要的是需要提供一个发现服务,对外提供 XDS 服务,下面以其中的一个 LDS 作为介绍,其他 XDS 实现类似。

    27K119

    Envoy Ingress:Contour基本原理和源码分析

    ,secret等k8s原生资源,和httpproxy这个CRD contour 缓存k8s的资源信息,并最终转换为 Envoy 需要的 XDS 信息。...,总结如下: 数据流转原理 contour 通过 informer 机制监听 k8s 资源 将k8s资源转换为 envoy 需要的 xds 资源 通过grpc将xds配置下发到envoy节点 流量流转原理...变更,会通知一序列 Observer,依次调用 OnChange方法,传入DAG,每个 Observer对应一个 XDS协议,将DAG中需要的资源转换为XDS配置,保存在Cache中 GRPC读取Cache...中的数据,通过Stream将XDS下发到Envoy。...Observer的OnChange接口:将 DAG 转换为 Envoy xds 配置保存在 values 中 Resource的接口:提供查询 values 的方法,即可得到 envoy 的xds配置

    1.4K20

    Envoy Ingress:Contour基本原理和源码分析

    ,secret等k8s原生资源,和httpproxy这个CRD contour 缓存k8s的资源信息,并最终转换为 Envoy 需要的 XDS 信息。...,总结如下: 数据流转原理 contour 通过 informer 机制监听 k8s 资源 将k8s资源转换为 envoy 需要的 xds 资源 通过grpc将xds配置下发到envoy节点 流量流转原理...,依次调用 OnChange方法,传入DAG,每个 Observer对应一个 XDS协议,将DAG中需要的资源转换为XDS配置,保存在Cache中 GRPC读取Cache中的数据,通过Stream将XDS...Observer的OnChange接口:将 DAG 转换为 Envoy xds 配置保存在 values 中 Resource的接口:提供查询 values 的方法,即可得到 envoy 的xds配置...启动命令中还指定了 envoy 连接的 grpc server 地址,即 contour的地址,这里配置的是 k8s svc 名称 initContainers: - args: - bootstrap

    2.1K10

    精彩分享 | 欢乐游戏 Istio 云原生服务网格三年实践思考

    关于最后这一点,我们观测了业务主进程中的 grpc thread,它也需要做 http2 的解析和编解码,但它的 cpu 开销显然低得多。...图示:业务进程中的 grpc 线程 %cpu * 2 后依然比 envoy 小很多 将业务进程中的 grpc 线程(红框部分)%cpu 乘 2 后再与 envoy(蓝框部分)做对比,是因为 envoy...采用私有协议,基于 envoy 自己写 filter,解析私有协议头,然后结合 envoy xds 相关的能力来提供服务(可以参考腾讯开源的解决方案 https://github.com/aeraki-mesh...cpu 和内存开销,前文已有较多讨论。 proxyless mesh 实际上就是 sdk + 网状拓扑的方案,gRPC 现在也在持续完善对 xDS 的支持,所以也有可能借助 gRPC 的能力来实现。...参考资料 让 istio 支持私有协议: 【https://github.com/aeraki-mesh/aeraki】 grpc 对 xDS 的支持: 【https://grpc.github.io/

    76330
    领券