Envoy-istio

news2024/12/23 22:43:27

最近研究envoy-istio,发现这个博客,觉得很不错,这里记录一下

envoy-istio介绍

envoy-istio - 随笔分类 - yaowx - 博客园

envoy部分七:envoy的http流量管理基础

envoy部分六:envoy的集群管理

envoy部分五:envoy的动态配置

envoy部分四:envoy的静态配置

envoy部分三:enovy的部署

envoy部分二: envoy的配置组件

envoy部分一:enovy基础



istio中文手册

序言 | istio中文手册

envoy

envoy_v1.23.0 - 随笔分类 - 小吉猫 - 博客园

Envoy 中文实战教程

史上最全的高性能代理服务器 Envoy 中文实战教程 !(强烈建议收藏)-腾讯云开发者社区-腾讯云

Envoy 基础入门教程

https://www.51cto.com/article/771401.html

核心能力

Envoy 的诞生源于以下理念:

网络对于应用程序来说应该是透明的,当网络和应用程序出现问题时,应该很容易确定问题的源头。

当然要实现上述目标是非常困难的。Envoy 试图通过提供以下高级功能来实现这一目标:

非侵入架构: Envoy 是一个独立的进程,设计为伴随每个应用程序服务一起运行。所有 Envoy 实例形成一个透明的通信网格,每个应用程序通过 localhost 发送和接收消息,不需要知道网络拓扑。对服务的实现语言也完全无感知,这种模式也被称为 Sidecar 模式。

L3/L4 过滤器架构: Envoy 的核心是一个 L3/L4 层的网络代理。可插拔的过滤器链机制允许编写不同的 TCP/UDP 代理任务的过滤器,并将其插入到主服务器中。而且已经内置支持了各种任务的过滤器,例如原始 TCP 代理、UDP 代理、HTTP 代理、TLS 客户端证书身份验证、Redis、MongoDB、Postgres 等。

HTTP L7 过滤器架构: HTTP 是现代应用程序架构的关键组件,因此 Envoy 支持了一个额外的 HTTP L7 过滤器层。HTTP 过滤器可以被插入到 HTTP 连接管理子系统中,执行不同的任务,如缓存、速率限制、路由/转发、嗅探 Amazon 的 DynamoDB 等。

顶级的 HTTP/2 支持: 在 HTTP 模式下运行时,Envoy 同时支持 HTTP/1.1 和 HTTP/2。Envoy 可以作为透明的 HTTP/1.1 到 HTTP/2 双向代理运行。这意味着可以连接任何组合的 HTTP/1.1 和 HTTP/2 客户端与目标服务器。推荐的服务到服务配置在所有 Envoy 之间使用 HTTP/2 创建持久连接网格,请求和响应可以在该连接上进行多路复用。

HTTP/3 支持(目前处于 alpha 版): 从 Envoy 1.19.0 版本开始,Envoy 现在支持上游和下游的 HTTP/3,而且可以在任何方向上进行 HTTP/1.1、HTTP/2 和 HTTP/3 之间的转换。

HTTP L7 路由: 在 HTTP 模式下运行时,Envoy 支持路由子系统,该子系统能够根据路径、权限、内容类型、运行时值等路由和重定向请求。在使用 Envoy 作为前端/边缘代理时,此功能非常有用,但在构建服务到服务的网格时也可以利用它。

gRPC 支持: gRPC 是 Google 的一个 RPC 框架,使用 HTTP/2 或更高版本作为底层多路复用传输。Envoy 支持用作 gRPC 请求和响应的路由和负载均衡基础所需的所有 HTTP/2 功能,这两个系统非常互补。

服务发现和动态配置: Envoy 可以选择使用一组分层的动态配置 API 来进行集中管理。这些层向 Envoy 提供了关于后端集群中的主机、后端集群自身、HTTP 路由、监听套接字和加密材料的动态更新。对于更简单的部署,可以通过 DNS 解析(甚至完全跳过)来完成后端主机发现,并且进一步的层可以由静态配置文件替代。

健康检查: 构建 Envoy 网格的推荐方法是将服务发现视为最终一致的过程。Envoy 包含一个健康检查子系统,可以选择对上游服务集群执行主动健康检查。然后,Envoy 使用服务发现和健康检查信息的结合来确定健康的负载均衡目标。Envoy 还通过异常值检测子系统支持被动健康检查。

高级负载均衡: 分布式系统中不同组件之间的负载均衡是一个复杂的问题。由于 Envoy 是一个独立的代理而不是库,因此可以独立实现高级负载均衡以供任何应用程序访问。目前 Envoy 支持自动重试、熔断、通过外部速率限制服务进行全局速率限制、异常检测等。

前端/边缘代理支持: 在边缘使用相同的软件有很大的好处(可观察性、管理、相同的服务发现和负载均衡算法等)。Envoy 的功能集使其非常适合作为大多数现代 Web 应用程序用例的边缘代理。这包括 TLS 终止、HTTP/1.1、HTTP/2 和 HTTP/3 支持以及 HTTP L7 路由。

最佳的可观测性: 如上所述,Envoy 的主要目标是使网络透明化。但是,问题在网络层面和应用层面都可能会出现。Envoy 为所有子系统提供了强大的统计支持。目前支持的统计数据输出端是 statsd(以及兼容的提供程序),但是接入其他不同的统计数据输出端并不困难。统计数据也可以通过管理端口进行查看,Envoy 还支持通过第三方提供者进行分布式跟踪。

常用术语

在我们介绍 Envoy 架构之前,有必要先介绍一些常用的术语定义,因为这些术语贯穿整个 Envoy 的架构设计。

  • Host(主机): 能够进行网络通信的实体(手机、服务器等上的应用程序)。在 Envoy 中主机是逻辑网络应用程序。一个物理硬件可能运行多个主机,只要每个主机可以独立进行寻址。
  • Downstream(下游): 下游主机连接到 Envoy,发送请求并接收响应。
  • Upstream(上游): 上游主机接收来自 Envoy 的连接和请求并返回响应。
  • Listener(侦听器): 侦听器是一个带有名称的网络位置(例如端口、unix domain socket 等),下游客户端可以连接到该位置。Envoy 暴露一个或多个监听器,供下游主机连接。
  • Cluster(集群): 一个集群是一组逻辑上相似的上游主机,Envoy 连接到这些主机。Envoy 通过服务发现来发现集群的成员。它还可以通过主动健康检查来确定集群成员的健康状况。Envoy 根据负载均衡策略确定将请求路由到哪个集群成员。
  • Mesh(网格): 一组主机协同工作,提供一致的网络拓扑结构。在这里 Envoy Mesh 是指一组 Envoy 代理,它们构成了由多种不同服务和应用程序平台组成的分布式系统的消息传递基础。
  • Runtime configuration(运行时配置): 与 Envoy 一起部署的实时配置系统。可以更改配置设置,影响操作而无需重新启动 Envoy 或更改主要配置。

架构设计

Envoy 采用单进程多线程架构。

        一个独立的 primary 线程负责控制各种零散的协调任务,而一些 worker 线程则负责执行监听、过滤和转发任务。

        一旦侦听器接受连接,该连接就会将其生命周期绑定到一个单独的 worker 线程。这使得 Envoy 的大部分工作基本上是单线程来处理的,只有少量更复杂的代码处理工作线程之间的协调。

        通常情况下 Envoy 实现了 100% 非阻塞。对于大多数工作负载,我们建议将 worker 线程的数量配置为机器上的硬件线程数量。

Envoy 整体架构如下图所示:

Envoy 架构

        Envoy 进程中运行着一系列 Inbound/Outbound 监听器(Listener),Inbound 代理入站流量,Outbound 代理出站流量。Listener 的核心就是过滤器链(FilterChain),链中每个过滤器都能够控制流量的处理流程。

        Envoy 接收到请求后,会先走 FilterChain,通过各种 L3/L4/L7 Filter 对请求进行处理,然后再路由到指定的集群,并通过负载均衡获取一个目标地址,最后再转发出去。

        其中每一个环节可以静态配置,也可以动态服务发现,也就是所谓的 xDS,这里的 x 是一个代词,是 lds、rds、cds、eds、sds 的总称,即服务发现,后 2 个字母 ds 就是 discovery service。

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

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

相关文章

甘特图的绘制步骤:教你如何绘制甘特图

甘特图是项目管理中一种极为重要的可视化工具,它以直观的方式展示项目进度,包括任务的开始时间、结束时间、持续时长以及任务之间的先后顺序。在当今的项目管理领域,Excel 和专业的项目管理软件是制作甘特图的两大常用途径,它们各…

C++模拟堆

模板题目 图片来源Acwing 堆的基础知识 代码实现 #include<iostream> #include<algorithm>using namespace std;const int N 1e5 10; int a[N]; int n, m;void down(int u) {int t u;if (2 * u < n && a[2 * u] < a[u]){t 2 * u;}if (2 * u …

牛客linux

1、 统计文件的行数 # 方法 1 wc -l ./nowcoder.txt | awk {print $1} # 方法 2 &#xff0c;awk 可以打印所有行的行号, 或者只打印最后一行 awk {print NR} ./nowcoder.txt |tail -n 1 awk END{print NR} ./nowcoder.txt # 方法 3 grep -c 、-n等等 grep -c "" ./…

【unity小技巧】在 Unity 中,Application获取各种文件路径或访问不同类型的存储路径

文章目录 前言1. **Application.persistentDataPath**2. **Application.dataPath**3. **Application.streamingAssetsPath**4. **Application.temporaryCachePath**5. **Application.consoleLogPath**6. **Application.userDataPath**7. **Application.streamingAssetsPath 与 …

汇编语言学习-二

好吧&#xff0c;已经隔了两天&#xff0c;下完班看了两天&#xff0c;在电脑上装了虚拟机版的MS_DOS,主要是怕折腾坏我的电脑系统&#xff1b; 这个第二天应该是称为第二章更为合适&#xff0c;目前第二章已经看完&#xff0c;基本的命令也是敲了敲&#xff1b; 下面就进行一…

游戏引擎学习第33天

仓库: https://gitee.com/mrxiao_com/2d_game 位置表示的回顾 在之前的工作中&#xff0c;已经实现了将单位从像素空间转移到真实的空间&#xff0c;这样可以确保所有的动作和物体都按米为单位来进行。这个转变让游戏中的物体不再是基于像素的&#xff0c;而是按照真实世界的…

泷羽sec-burp(3)decodor comparer logger模块使用 学习笔记

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

vue-cli创建项目报错:command failed: npm install --loglevel error

网上解决方法有很多&#xff0c;对于我都没用。 最后用这个方法起了作用&#xff1a; 尝试将npm源设置为HTTP&#xff0c;慎用&#xff0c;可能不安全 npm config set registry http://registry.npm.taobao.org/ 改为http就顺利创建项目了。

《船舶物资与市场》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问&#xff1a;《船舶物资与市场》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的正规学术期刊。 问&#xff1a;《船舶物资与市场》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a;中国船舶集团有限公司 主办单…

超详细MacBook Pro(M1)配置GO语言环境(图文超详细版)

前提 当我第一次使用MacBook配置Go语言环境时&#xff0c;网上的资料错综复杂&#xff0c;部分资料对于第一次使用MacBook的小白们非常不友好&#xff0c;打开终端时&#xff0c;终端的位置对应的访达中的位置不是很清楚&#xff0c;因此才有了这篇文章&#xff0c;该文章通过…

单端和差分信号的接线法

内容来源&#xff1a;【单端信号 差分信号与数据采集卡的【RSE】【 NRES】【 DIFF】 模式的连接】 此篇文章仅作笔记分享。 单端输入 单端信号指的是输入信号由一个参考端和一个信号端构成&#xff0c;参考端一般是地端&#xff0c;信号就是通过计算信号端口和地端的差值所得…

前端开发 之 15个页面加载特效中【附完整源码】

前端开发 之 15个页面加载特效中【附完整源码】 文章目录 前端开发 之 15个页面加载特效中【附完整源码】八&#xff1a;圆环百分比加载特效1.效果展示2.HTML完整代码 九&#xff1a;毒药罐加载特效1.效果展示2.HTML完整代码 十&#xff1a;无限圆环加载特效1.效果展示2.HTML完…

【H2O2|全栈】Node.js与MySQL连接

目录 前言 开篇语 准备工作 初始配置 创建连接池 操作数据库 封装方法 结束语 前言 开篇语 本节讲解如何使用Node.js实现与MySQL数据库的连接&#xff0c;并将该过程进行函数封装。 与基础部分的语法相比&#xff0c;ES6的语法进行了一些更加严谨的约束和优化&#…

spark-sql配置教程

1.前期准备 &#xff08;1&#xff09;首先要把hadoop集群&#xff0c;hive和spark等配置好 hadoop集群&#xff0c;hive的配置可以看看这个博主写的博客 大数据_蓝净云的博客-CSDN博客 或者看看黑马程序员的视频 黑马程序员大数据入门到实战教程&#xff0c;大数据开发必…

【网络安全】网站常见安全漏洞 - 网站基本组成及漏洞定义

文章目录 引言1. 一个网站的基本构成2. 一些我们经常听到的安全事件3. 网站攻击者及其意图3.1 网站攻击者的类型3.2 攻击者的意图 4. 漏洞的分类4.1 按来源分类4.2 按危害分类4.3 常见漏洞与OWASP Top 10 引言 在当今的数字化时代&#xff0c;安全问题已成为技术领域不可忽视的…

【最新免费PPT制作并下载】Kimi PPT助手:智能化演示文稿生成,职场效率的革命性提升

最新免费PPT制作方法在这里&#xff01;下面我想向大家介绍一款能够极大提升我们工作效率的工具——Kimi PPT助手。 Kimi PPT助手&#xff1a;智能化演示文稿生成 Kimi PPT助手是由Moonshot AI推出的一款革命性产品&#xff0c;它通过人工智能技术&#xff0c;实现了PPT的一键…

黑马微服务开发与实战学习笔记_MybatisPlus_P1介绍与快速入门

系列博客目录 文章目录 系列博客目录MybatisPlus介绍快速入门Part1:入门案例Part1.1:MyBatis项目Part1.2:实现MP Part2:常见注解Part2.1:约定Part2.2:常见注解 Part3:常见配置MyBatisPlus使用的基本流程是什么? MybatisPlus介绍 在Mybatis上加了Plus&#xff0c;表示对Mybati…

多模态大语言模型的对比

简介 文章主要对比了包括 VideoLLaMA 2 、CogVLM2-video 、MiniCPM-V等模型 目前主流的多模态视觉问答大模型&#xff0c;大部分采用视觉编码器、大语言模型、图像到文本特征的投影模块 目录 简介1. VideoLLaMA 21.1 网络结构1.2 STC connector具体的架构 2. MiniCPM-V 2.62.…

Docker Compose 和 Kubernetes 之间的区别?

一、简介&#x1f380; 1.1 Docker Compose Docker Compose 是 Docker 官方的开源项目&#xff0c;负责实现对 Docker 容器集群的快速编排&#xff0c;可以管理多个 Docker 容器组成一个应用。你只需定义一个 YAML 格式的配置文件 docker-compose.yml &#xff0c;即可创建并…

小迪安全笔记 第四十四天 sql盲注 实战利用sql盲注 进行漏洞的利用

sql盲注的分类 什么是盲注 就是我们什么也不知道的情况下进行的注入 前边的注入 都是简单的注入 我们猜测 数据类型 之后 可以直接 union 去查 这种情况多用于 数据库增删查改中的 查 bool盲注也用于查 这个的情况的就是我们前边都试了 没有用 就需要…