Envoy-istio

最近研究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.rhkb.cn/news/484480.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ETCD】ETCD用户密码认证

目录 概述 特殊用户和角色 root用户 root角色 用户操作 角色操作 启用身份验证 使用etcdctl进行身份验证 使用TLS通用名称 概述 etcd 2.1中增加了身份验证功能。etcd v3 API对身份验证功能的API和用户界面进行了轻微修改,以更好地适应新的数据模型。本指南…

蓝牙定位的MATLAB程序,四个锚点、三维空间

这段代码通过RSSI信号强度实现了在三维空间中的蓝牙定位,展示了如何使用锚点位置和测量的信号强度来估计未知点的位置。代码涉及信号衰减模型、距离计算和最小二乘法估计等基本概念,并通过三维可视化展示了真实位置与估计位置的关系。 目录 程序描述 运…

【计算机网络】实验4:生成树协议STP的功能以及虚拟局域网VLAN

实验 4:生成树协议STP的功能以及虚拟局域网VLAN 一、 实验目的 加深对生成树协议STP的功能的理解。 了解虚拟局域网VLAN。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、验证交换机生成树协议STP的功能 (1) 第一步:构建网络拓…

VMware官网下载

访问官网 https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion 跳转到broadcom 注册 -> 登录 拉到下面 选择版本 然后填写地址信息, 随便写写, 再回去点下载按钮, 就可以下载了

智慧地图聚合(LockMap)标注系统开发说明文档

智慧地图聚合(LockMap)标注系统开发说明文档 1. 系统概述 智慧地图聚合(LockMap)标注系统是一个专为处理大规模地理信息数据而设计的综合解决方案。通过后端高效的数据管理和前端直观的地图展示,该系统能够实现对海量地理位置点的有效可视化。本项目旨在提供一个用…

【大数据学习 | Spark-SQL】定义UDF和DUAF,UDTF函数

1. UDF函数(用户自定义函数) 一般指的是用户自己定义的单行函数。一进一出,函数接受的是一行中的一个或者多个字段值,返回一个值。比如MySQL中的,日期相关的dateDiff函数,字符串相关的substring函数。 先…

linux 服务器 一次性查看 CPU、内存和磁盘使用情况

创建 vi check_usage.sh #!/bin/bashecho " CPU 使用率 " mpstat -P ALL 1 1echo -e "\n 内存使用情况 " free -hecho -e "\n 磁盘使用率 " df -h执行授权 chmod x check_usage.sh执行查看 ./check_usage.sh这样可以快速获取系统资源的概览。…

一文理解多模态大语言模型——下

作者:Sebastian Raschka 博士, 翻译:张晶,Linux Fundation APAC Open Source Evangelist 编者按:本文并不是逐字逐句翻译,而是以更有利于中文读者理解的目标,做了删减、重构和意译&#xff0c…

数据结构---链表(2)---双向链表

链表(1)中讲过了在OJ题中出现很多并且能作为一些复杂数据结构子结构的不带头单向不循环链表,下面讲解应用很广很实用的带头双向循环链表。 三、双向链表---DoublyLinkedList 演示带头双向循环链表(实用)。 带头--->不需要对空链表继续单独判断;循环…

PH热榜 | 2024-12-04

1. Stackfix 标语:几秒钟内就能对比软件。 介绍:立刻就能对比不同软件的价格和功能。不用再费力看各种评测或接推销电话了。我们提供实时价格、并排对比,还有专家的推荐建议。 产品网站: 立即访问 Product Hunt: V…

分布式光伏电站如何实现监控及集中运维管理?

安科瑞戴婷 Acrel-Fanny 前言 今年以来,在政策利好推动下光伏、风力发电、电化学储能及抽水蓄能等新能源行业发展迅速,装机容量均大幅度增长,新能源发电已经成为新型电力系统重要的组成部分,同时这也导致新型电力系统比传统的电…

AD学习笔记·空白工程的创建

编写不易,禁止搬运,仅供学习,感谢理解 序言 本文参考B站,凡亿教育,连接放在最后。 创建工程文件 在使用AD这个软件的电路板设计中,有很多的地方跟嘉立创eda还是有不一样的地方,其中一个地方就…

基于Java Springboot生鲜食品订购微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 微信…

【阅读笔记】Android广播的处理流程

关于Android的解析,有很多优质内容,看了后记录一下阅读笔记,也是一种有意义的事情, 今天就看看“那个写代码的”这位大佬关于广播的梳理, https://blog.csdn.net/a572423926/category_11509429.html https://blog.c…

第十三章 Linux计划任务

注意:进公司和有公司成员离职,一定要问计划任务,防止别人搞破坏背锅 13.1 一次性计划任务(atd服务) 1 安装 atd 服务 yum install -y at systemctl enable atd systemctl start atd ## 启动atd服务 systemctl status atd ## 查看atd服务…

Kali Linux使用Netdiscover工具的详细教程

Kali Linux使用Netdiscover工具的详细教程 引言 在网络安全和渗透测试的过程中,网络发现是一个至关重要的步骤。Netdiscover是Kali Linux中一个非常实用的网络发现工具,它可以帮助用户快速识别局域网中的活动设备。本文将详细介绍如何使用Netdiscover工…

EasyNVR中HTTP-FLV协议无法播放怎么解决?

在科技日新月异的今天,摄像头作为公共安全领域的重要一环,其技术的不断提升正显著地改变着社会的安全格局。从最初的简单监控到如今的高清智能分析,我们可以对特定区域进行实时监控和记录,为社会的安全稳定提供了强有力的保障。 问…

VINS_MONO视觉导航算法【一】基础知识介绍

文章目录 VINS-Mono其他文章说明简介单目相机存在的尺度不确定问题缺乏深度信息尺度等价性对极几何和三角化平移和深度的关系解决尺度不确定问题的方法视觉惯性里程计(VIO)初始尺度估计持续尺度校正 摄像头数据处理直接法(Direct Method&…

「Mac畅玩鸿蒙与硬件42」UI互动应用篇19 - 数字键盘应用

本篇将带你实现一个数字键盘应用,支持用户通过点击数字键输入数字并实时更新显示内容。我们将展示如何使用按钮组件和状态管理来实现一个简洁且实用的数字键盘。 关键词 UI互动应用数字键盘按钮组件状态管理用户交互 一、功能说明 数字键盘应用将实现以下功能&…

AI PC处理器ARM架构-引入NPU和大模型

AI PC处理器架构变化:ARM低功耗、引入NPU和大模型 AI进化加速端侧落地,新一轮浪潮蓄势待发(2024)”。ARM(Advanced RISC Machine)架构和x86架构是两种主要的处理器架构,它们在设计理念、应用场景和性能特点等方面有显著的差异。 ARM架构是一…