Istio 深入理解数据平面组件 Envoy

news2024/9/23 17:21:20

ingress control承载了控制面和数据面的一个职责,在control里面有一个process,这个进程就承担了反向代理的能力,当有任何请求发过来的时候,会被nginx接收到这个请求并且被转发,基于的规则由ingress control动态配置的,所以control就是控制平面,nginx本身就是其数据面。

在谈istio的时候一样会分数据面和控制面,控制面就是istio自身,istio会有各种各样的控制平面组件,比如istiod,在里面有流量控制的控制器,它会去监听istio相关的一些对象以及k8s status这些对象,它会基于这些对象把所有的路由配置信息变更组装成envoy的配置,然后推送给envoy。

envoy就是我们在istio里面数据平面的组件,所有的请求都是发到envoy,再由envoy转发到后端的服务器的。

 

主流七层代理软件比较


http2被业界认可以及部署的范围越来越广了,http2相对于http1.x来说它有一些明显的优势,因为是连接复用的,所以对整个网络的链路需求会小很多。

然后又是连接复用的,那么传输的性能会高很多。k8s很多组件都是基于grpc的,也是基于http2的。

envoy在做技术选型的时候它有非常完整的支持,无论是upstream还是downstream,两个方向都基于http2,但是nginx是单方向的。

处理优雅终止:当你的一个应用,它接收到一些请求的时候,我们要让这个进程重启或者停止,在那一刻往往都有一些发送到服务器上面但是还没有处理完的请求,之所以要优雅终止就是要给到这些请求一些时间让他们处理完。然后再优雅退出,这样就不会让客户端感受到突然重启造成的一些error。

connection draining就是重新加载静态配置的时候,它老的进程不退出,新的进程谈过共享内存启动起来,然后将老的进程里面的socket copy到新的进程里面去。然后老的进程已经连接的connection它会继续的去处理,当所有的已连接的请求处理完成之后,它再将老的进程退出,然后平滑的过度到新的进程去。

这样在重启的过程当中,对于客户来说是没有感知到的,因为是平滑过渡去的,这个功能envoy支持的非常好。

上面就是envoy在能力层次上面有很强的优势。

Envoy的优势


性能:

在具备大量特性的同时,Envoy提供极高的吞吐量和低尾部延迟差异,而CPU和RAM消耗却相对较少。

envoy可以提供非常高的吞吐量,然后只贡献一点点延迟,对资源cpu 内存的开销相对比较少。

可扩展性:

Envoy在L4和L7都提供了丰富的可插拔过滤器能力,使用户可以轻松添加开源版本中没有的功能。

你可以写很多的插件。你可以通过c++ rust语言的代码去编写自己的插件,当任何数据包被envoy接受的时候,除了envoy内置的逻辑去处理这些数据包,你所编写的插件逻辑也可以对这些数据包进行一些额外的处理,这就使得envoy的能力变的非常的容易扩展,你可以在envoy原有逻辑的基础上加上自己对数据包的处理能力。

API可配置性:

·Envoy提供了一组可以通过控制平面服务实现的管理API。如果控制平面实现所有的API,则可以使用通用引导配置在整个基础架构上运行Envoy。所有进一步的配置更改通过管理服务器以无缝方式动态传送,因此Envoy从不需要重新启动。这使得Envoy成为通用数据平面,当它与一个足够复杂的控制平面相结合时,会极大的降低整体运维的复杂性。

在envoy出来之前,其他的代理软件都只支持静态文件的配置,让静态配置文件生效就需要重启进程。在以前低频率下这种模式是没有问题的,k8s是一个动态的环境,节点会失效,pod就会故障转移,ip就会变动。还有弹性使得pod实例的数量加加减减,这样就会去频繁的修改配置文件,那么基于静态重启进程生效那么你的应用进程会一直重启。

有没有更加优雅的方式?更加轻量级的方式,就是envoy提供的开创性的能力。就是API可配置,除了envoy可以读取本地的配置文件进行热重启,它还可以在基础配置文件里面配置,接受另外一个地址的管理,当要进行配置更新,配置加载的时候,那么我就去那个地址要一份配置清单。这样的话就可以在不重启进程的前提下静态的去远端的网络地址要一份配置清单,只要这个配置清单生成好了之后,推送到envoy这一侧,那么配置就会即使生效。

比如说有pod一直redy或者一直不redy,那么只需要在远端控制服务器里面把这个envoy配置进行一个动态的变更。这个动态的变更要推送到envoy这一侧,那么envoy这边就可以及时生效了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/713510.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年7月1日【青书学堂】考试 计算机应用基础(高起专)

2023年7月1日【青书学堂】考试 计算机应用基础(高起专) 注意:答案仅供参考 成绩:88.8 分 第1题 单选题 在Word的编辑状态,按先后顺序依次打开了d1.doC、d2.doC、d3.doC、d4.doc 4个文档,当前的活动窗口的文档名为____。 A:d1.doc B:d2.doc C:d4.doc D:d3.doc 答案:C 第…

php代码还原工具,解决goto语句混淆,php goto解密还原

在编写php代码时,使用goto语句是一种常见的加密技巧。为了解决goto解码无法阅读这个问题,今天我要向大家介绍一款强大的php goto解密工具。 这款工具的主要功能之一就是php代码的还原。通过对代码进行解析和分析,它能够轻松还原被混淆的goto…

vim多文件切换快捷键设置

1、基本切换指令 vim中在打开多个文件时,会有多个文件进行切换的需求。按:bn切换到下一个文件,按:bp切换到上一个文件。 2、快捷键设置 为了便捷操作,将切换命令设置成快捷键。 进入/home/yys个人目录下,vim .vimrc进入vimrc文…

Spring Boot 中的 @EnableDiscoveryClient 注解

Spring Boot 中的 EnableDiscoveryClient 注解 Spring Boot 是一个快速开发 Spring 应用程序的框架,它提供了一些基础设施,使得我们可以快速地开发出高效、可靠的应用程序。其中,EnableDiscoveryClient 注解是 Spring Boot 中一个非常重要的…

C++刷题第四天 链表 24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 160. 链表相交 ● 142.环形链表II

24. 两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例: 原列表为:1-2-3-4-…

【Mysql】Explain深入分析(三)

Explain工具介绍 使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL 注意…

node ffmpeg jsmpeg 拉流 展示笔记

拉流参考上一篇 基础:FFmpeg安装过 拉流完成之后转换成可播放的方式 1、下载jsmpeghttps://github.com/phoboslab/jsmpeg 下载完 用vscode 打开jsmpeg-master目录 2、在根目录下安装 node-media-server npm install node-media-server 新建app.js并运行 const…

8 图像去噪 滤波 锐化 边缘检测案例(matlab程序)

1.简述 学习目标:一个图像处理的经典综合案例 一、图像锐化的原理   图像锐化的目的是凸显物体的细节轮廓,通常可以用梯度、Laplace算子和高通滤波来实现,下面一一说明: 1、梯度法 梯度计算可以参考 小白学习图像处理——cann…

数据可视化01_t-SNE

1. t-SNE的定义 t-SNE stands for t-distributed Stochastic Neighbor Embedding. 代表 t 分布随机邻域嵌入。 t-SNE 获取高维数据并将其降低到较低维空间,同时保持数据点之间的关系尽可能接近其原始排列。 它是一种无监督机器学习算法,由 Laurens va…

8年测试经验总结,性能测试流程与性能测试学习路线,卷起来...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 性能测试流程 1、…

运输层概述、端口号、复用与分用

1.运输层概述、端口号、复用与分用 笔记来源: 湖科大教书匠:运输层概述 湖科大教书匠:运输层端口号、复用与分用的概念 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 1.1 运输层概述 计算机网络体系结构中的物…

交流220v转12v给单片机供电芯片

客户的应用需求:AD220V转DC12V 体积要非常小,单片机使用,单片机设备12V 电流很小不会超过100mA? 【AD220V转DC12V体积小的问题】 问题:我需要将交流电(220V)转换为直流电(12V&…

fastadmin后台 点击开关 弹出 你没有权限访问 角色组里面添加了,除了超级管理员其他的只要用状态开关就,没权限 解决办法

首发地址:https://ask.fastadmin.net/question/22863.html 然后再对应的后台控制器里面 加入 protected $multiFields 你设计数据库的开关字段; //注意是字段,不是填写: multi 示例: protected $multiFields show_switch; 也可以多个 p…

QWebEngine应用(一)

前言 很早以前就听说过Qt也能显示网页,一直没有机会真正研究应用起来,刚好最近项目中使用到了QWebEngine内嵌浏览器打开第三方的网站,使用的Qt版本为5.15,踩了不少的坑,这里做个总结。 QWebEngine架构 Qt WebEngine…

亚马逊云科技连续12年被评为“领导者”,用实力赋能企业出海

从人类发展历史上看,无论是刳木为舟,剡木为楫,还是郑和下西洋,亦或是欧洲大航海时代,人类对于出海探索这件事就从未停止。而在如今的时代,相似的故事依旧在上演。过去的十年,是中国互联网最为繁…

多路码流RTSP传输并对每路视频图像叠加OSD信息

一、先保证多路视频码流保存到本地,并且分辨率正确 注意点: 1.VPSS分两路通道 2.VENC分两路通道 if(s32ChnNum>1) {s32Ret SAMPLE_COMM_SYS_GetPicSize(gs_enNorm, enSize[0], &stSize);if (HI_SUCCESS ! s32Ret){SAMPLE_PRT("SAMPLE_COM…

下载网页视频的软件 下载网页视频的方法

视频已然成为一种非常有力的展示方式,我们想要下载视频内容,需要用到下载网页视频的软件,如今这类软件有很多。下载网页视频的方法,也因为使用的软件不同,方法各异。下面我们就来看详细介绍吧! 一、下载网…

【DC-DC】AP9196 DC-DC升压恒流电源管理芯片 升降压3-12V输出9V LED驱动方案

1,方案;升降压3-12V输出9V LED驱动方案BOM表 ​ 2,方案;升降压3-12V输出9V LED驱动方案线路图 3,产品说明 AP9196 是一系列外围电路简洁的宽调光比升压调光恒流驱动器,适用于 3-40V 输入电压范围的 LED照明领域。AP9196 采用我…

Leveldb代码阅读笔记

整体架构 如上图,leveldb的数据存储在内存以及磁盘上,其中: memtable:存储在内存中的数据,使用skiplist实现。immutable memtable:与memtable一样,只不过这个memtable不能再进行修改&#xff0…

使用模拟电路制造CPU——从硬件到软件的设计

计算机中蕴藏的哲理 最基本的思想是:通过基本电路的接线,确立输入-输出规则,类似函数的入参和返回值,便构成一个功能电路单元。单元套单元组成新单元,如此往复。“一生二,二生三,三生万物”。这…