首页 > 其他分享 >了解Envoy proxy

了解Envoy proxy

时间:2024-11-22 17:07:08浏览次数:1  
标签:服务 name Envoy 了解 proxy filters http 路由

前言:由于面试过程中遇到的前端服务代理的工具 Envoy proxy,借此先浅浅的学习一下
官方文档:https://www.envoyproxy.io/

Envoy is an open source edge and service proxy, designed for cloud-native applications
Envoy是一个开源边缘和服务代理,专为云原生应用而设计。最初由 Lyft 公司开发,现已成为 CNCF (Cloud Native Computing Foundation) 下的一个重要项目。
(注: “Open Source Edge” (开源边缘) 是指在边缘计算领域中使用开源软件和技术来构建和管理边缘计算基础设施和服务。)

它主要用于以下场景:
服务网格:Envoy 作为服务网格的关键组件,负责服务间的网络通信、负载均衡、熔断等功能。
API 网关:Envoy 可以作为微服务架构中的 API 网关,提供路由、认证、监控等功能。
边缘代理:Envoy 可以部署在网络边缘,负责处理入站和出站流量,提供安全、可观测性等能力。

Envoy 的主要特点包括:
高性能:基于 C++ 开发,具有出色的性能和可扩展性。
可扩展性:支持通过 xDS API 动态配置和扩展功能。
可观测性:内置丰富的监控和日志功能,方便故障定位和性能优化。
多语言支持:可与各种编程语言集成,支持 gRPC、REST 等协议。
安全性:支持 mTLS、JWT 等安全特性,保护服务间通信。

在前端开发中,Envoy 主要用于以下场景:
服务发现和负载均衡:Envoy 能够自动发现并管理后端服务实例,提供智能的负载均衡策略。
熔断与重试:Envoy 能够检测并隔离故障服务,提供断路器、重试等功能。
安全和认证:Envoy 能够提供 mTLS、JWT 等安全特性,保护前后端通信。
监控和可观测性:Envoy 内置丰富的监控指标和日志功能,方便前端团队进行故障排查和性能优化。

想要深入学习 Envoy,可以从以下几个方面着手:
1、阅读 Envoy 的官方文档,了解其基本原理和使用场景。
2、实践部署 Envoy 作为 API 网关或服务网格的一部分。
3、学习 Envoy 的配置语法和 xDS API,掌握动态配置的方法。
4、熟悉 Envoy 的监控和故障诊断功能,提高可观测性。
5、关注 Envoy 在云原生环境中的最佳实践。

两道面试题

问题一:Envoy中,哪个过滤器用于实现断路器功能? 答:Circuit Breaker。

在 Envoy 中,实现断路器功能的过滤器是 envoy.filters.network.http_connection_manager 中的 ratelimit 和 ext_authz 过滤器结合使用,最常用的功能是通过 envoy.filters.http.router 和 envoy.filters.http.ext_authz 进行故障注入和熔断。

主要概念
熔断器 (Circuit Breaker):
通过监控服务响应时间和错误率来决定是否切断请求到后端服务的流量。
如果错误率超过设定阈值,Envoy 将阻止到该服务的请求,从而减少错误传播,给后端服务恢复的时间。

以下是一个简单的配置示例,用于启用熔断器功能:

static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address: { address: 0.0.0.0, port_value: 10000 }
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        config:
          codec_type: AUTO
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: backend
              domains: 
              - "*"
              routes:
              - match: { prefix: "/" }
                route:
                  cluster: service_backend
                  timeout: 0s  // 关键配置:设置请求超时时间。
                  retry_policy: // 关键配置:定义重试策略,包括重试次数和可重试的状态码。
                    num_retries: 3
                    per_try_timeout: 2s
                    retriable_status_codes:
                    - 429
                    - 500
                    - 503
                  max_concurrent_requests: 100 // 关键配置:限制并发请求数量,有助于控制流量。
              ...
          http_filters:
          - name: envoy.filters.http.router
  clusters:
  - name: service_backend
    connect_timeout: 0.25s
    lb_policy: ROUND_ROBIN
    load_assignment:
      ...

总结:Envoy 的断路器功能通过监控服务的健康状况和响应性能来实现,确保在服务出现故障时能够及时切断请求,从而保护后端服务并提高系统的整体稳定性。

问题二:在Envoy中,用于定义动态路由配置的资源类型是什么? 答:RouteConfiguration。

在 Envoy 中,用于定义动态路由配置的资源类型是 RouteConfiguration。具体来说,它是通过 xDS API(如 RDS,即路由发现服务)进行管理的。

关键概念
1、RouteConfiguration:
RouteConfiguration 用于定义路由规则,包括如何将请求路由到后端服务。
它包含一个或多个虚拟主机(virtual hosts),每个虚拟主机可以定义多个路由规则。
2、RDS (Route Discovery Service):
RDS 是 Envoy 提供的一个 API,允许动态更新路由配置。
通过 RDS,Envoy 可以在运行时接收更新的路由配置,而无需重启或重新加载。

资源结构
在 Envoy 的配置中,RouteConfiguration 的基本结构如下:

static_resources:
  listeners:
  - name: listener_0
    ...
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        config:
          route_config:
            name: local_route
            virtual_hosts: // 主要组成部分:定义虚拟主机,支持多个域名和路由规则。
            - name: backend
              domains: ["*"]
              routes: // 主要组成部分:每个虚拟主机下可以有多个路由规则,包括匹配条件和目标集群。
              - match: { prefix: "/" }
                route:
                  cluster: service_backend

总结:通过 RouteConfiguration 和 RDS,Envoy 可以实现灵活的动态路由配置,支持微服务架构中的复杂流量管理需求。这种动态路由能力使得 Envoy 能够高效地处理流量并适应不断变化的服务环境。

标签:服务,name,Envoy,了解,proxy,filters,http,路由
From: https://www.cnblogs.com/CCxi/p/18563267

相关文章

  • 一篇文章了解何为 “大数据治理“ 理论与实践
    什么是大数据治理?大数据治理是指在大数据环境中,围绕数据的管理、控制和优化,采用系统化的策略、流程、技术和标准,以确保数据的质量、合规性、安全性和可用性。它是企业数据管理的重要组成部分,尤其在大数据应用广泛的背景下显得尤为重要。大数据治理不仅涉及技术层面的工具......
  • 一分钟带你了解FPGA
    FPGA(Field-ProgrammableGateArray)即现场可编程门阵列,是一种在PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物。1、内部结构特点   FPGA主要由可编程逻辑单元(CLB,ConfigurableLogicBlock)、输入输出单元(IOB,Input/OutputBlock)和可编程互......
  • 你对事件循环有了解吗?说说看!
    我了解事件循环(EventLoop),它是JavaScript引擎中处理异步操作的核心机制,对于前端开发至关重要。它负责协调JavaScript的单线程执行模型与浏览器或Node.js环境提供的各种异步任务(例如网络请求、定时器、用户交互等)。以下是事件循环的关键概念和运作方式:调用栈(CallStack......
  • 说说你对影子(Shadow)DOM的了解
    ShadowDOM(影子DOM)是Web组件的关键特性之一,它允许在网页上创建封装的DOM树,从而实现样式和行为的隔离。这就像在页面中创建了一个“独立的世界”,外部样式不会影响内部,内部样式也不会泄漏到外部。以下是ShadowDOM的一些关键特性和优势:封装样式:ShadowDOM中的样式是独立的......
  • Nginx服务器配置---反向代理服务时proxy_pass的转发规则
    nginx是由俄罗斯开发的一款httpweb服务器,我们经常用这款服务器做负载均衡和反向代理。今天我们就来聊聊Nginx作为反向代理时,如何进行路由配置。假设你已经部署好Nginx了,我们进入Nginx安装目录,进入nginx.conf文件。找到http节点下的server节点,值是一个json。在json中有一个locat......
  • 一起来了解hashmap核心机制
    HashMap是Java中常用的集合类,用于存储键值对(key-value)。理解其核心机制需要深入源码,了解其内部结构、哈希算法、冲突处理、扩容机制等。以下是对Java8及以后版本中HashMap核心机制的详细讲解。1.HashMap的基本结构在Java8中,HashMap主要由以下几个核心部分组成:数......
  • Nginx Proxy Manager:小白也能轻松搭建反向代理
    在现代网络环境中,越来越多的服务需要在同一个服务器上运行,如何合理地管理这些服务,并确保它们能够安全高效地互通,是许多站长和开发者面临的难题。NginxProxyManager(简称NPM)正是为了解决这个问题而生,它提供了一个简单、直观的界面来管理反向代理和SSL证书配置,使得网站、......
  • genaiscript踩坑:设置proxyman抓包、兼容qwen72b funtion-call
    genaiscript有个很棒的日志系统,但是碰到接口报错就没用了,还是得抓包来看,为了设置proxy,得修改源码。genaiscript是通过npx运行的,包的执行优先顺序是本地依赖目录npminstallgenaiscript——npm全局依赖目录npminstall-ggenaiscript——npx缓存目录从没有安装过本地包,在Mac上对......
  • 看过这里,你可能更了解指针5
    首先让我们先来看下图想想答案过后让我们来分析****在1中p表示一个指针,sizeof(p)则是要计算一个指针的大小,指针大小在32位中是4个字节大小,而在64位中是8个字节大小(要特别注意这里的p不是数组名而是指针变量)****在2中,p表示的是指针,而p指针指向的地址是常量字符中的a,如......
  • 必须了解常用的JDK版本及特性
    在一次面试的时候问到我感兴趣的技术,回答了JAVA,但被问到JDK,除了1.8,就一窍不通,感觉确实应该好好学习一下,至少常见的版本和常见的特性,可以没那么专业,没那么细致,但至少能说个一两句最喜欢的JDK版本我最喜欢JDK17,在这个版本有几点比较常见的特性,Switch语句的增强、字符块的成熟......