50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

Netflix 为 Envoy 开发新功能,实现零配置服务网格

作者:Claudio Masolo

  • 2023-10-06
    北京
  • 本文字数:1208 字

    阅读完需:约 4 分钟

大小:715.05K时长:04:04
Netflix为Envoy开发新功能,实现零配置服务网格

Netflix 在这篇文章中描述了他们为什么与 Envoy 社区和Kinvolk合作为 Lyft 开源的代理Envoy实现了一项新功能。这个叫作按需集群发现的新功能帮助 Netflix 实现了零配置服务网格。


进程间通信(IPC) 对于 Netflix 来说至关重要。自 Netflix 从 2010 年将所有基础设施转移到云端(AWS),就一直需要使用针对云原生环境的工具。其中一些工具是商业版的,一些是内部开发的。为了方便管理 IPC,Netflix 开发了用于服务发现的Eureka和用于 IPC 的Ribbon。Eureka 的主要目标是用虚拟 IP(VIP)抽象目标服务的名称,并且如果有必要的话还可以确保与安全虚拟 IP(VIP)的安全通信。目标服务名称和通信类型(安全或不安全)是服务连接到另一个服务所需的信息。IPC 客户端使用目标 VIP 或 SVIP 实例化,Eureka 客户端负责 VIP 或 SVIP 和端口到 IP 的转换,从 Eureka 服务器获取信息。其缺点是从负载均衡器迁移到 Eureka 存在单点故障问题。



使用Eureka的IPC


这种架构存在了很长时间,不过 Netflix 因为一些原因需要迁移到服务网格,主要的三个原因如下:


  1. 现在使用了RESTgraphQLgRPC混合的 IPC 技术。

  2. 已经从 Java 基础架构迁移到了多语言架构。

  3. 向 IPC 客户端中添加功能。


Netflix 决定使用 Envoy 集中实现 IPC 功能集,并让使用各种语言开发的客户端尽可能简单。此外,Envoy 支持发现抽象(Discovery Abstraction),因此 IPC 客户端可以继续使用它。缺点是 Envoy 需要在代理配置中指定集群,这对 Netflix 架构来说是个问题,因为一个服务可能与十几个集群进行通信。此外,Netflix 的架构是不断变化的,这意味着集群会随着时间的推移而变化。为了解决这个问题,Netflix 团队调研了一些方案:


  • 让服务所有者定义他们的服务需要通信的集群。

  • 根据服务的调用图自动生成 Envoy 配置。

  • 将所有的集群信息推送给每个应用。


但所有这些方案都存在缺点,因此他们最终的解决方案是在运行时按需获取集群信息。为了实现这个解决方案,Envoy 需要一个新特性。于是,Envoy 社区、Netflix 和 Kinvolk 合作开发了按需集群发现(ODCDS) 功能。现在,代理可以在第一次连接时查找集群信息。新的流程如下:


  1. 客户端的请求进入 Envoy;

  2. 根据主机地址提取目标集群信息。如果集群是已知的,进入步骤 7;

  3. 如果集群不存在,请求被暂停;

  4. 向控制平面上的集群发现服务(CDS)端点发出请求。控制平面根据服务的配置和 Eureka 注册信息生成自定义 CDS 响应;

  5. Envoy 拿到集群信息(CDS),通过端点发现服务(EDS)拉取端点信息,然后根据 VIP 或 SVIP 的 Eureka 状态信息返回集群的端点;

  6. 客户端的请求继续;

  7. Envoy 像往常一样处理请求:使用负载均衡算法选择一个端点并发出请求。



使用Eureka和Envoy的IPC


这个流程的执行速度为毫秒级,但在某些场景中,服务需要更低的延迟。为了解决这个问题,目前的解决方案有:


  1. 服务需在发出第一个请求之前预先定义目标集群或建立主要连接。

  2. 在代理启动时,根据历史请求模式从控制平面预推送集群信息。


Netflix 和 Envoy 社区将继续合作改进 Envoy。


原文链接

https://www.infoq.com/news/2023/09/zero-config-service-mesh-netflix/

2023-10-06 08:004523

评论

发布
暂无评论
发现更多内容

VKProxy新增CORS设置和http响应缓存

八苦-瞿昙

Proxy csharp

MyEMS能源管理系统后台配置-传感器管理

开源能源管理系统

开源 能源管理

OmniGen2重磅升级,统一图像生成再进化

智源研究院

图像生成

Product Hunt 双料榜首,开发仅用 2 周:00 后创业者的 AI 智能体实践

火山引擎开发者社区

AI DeckSpeed

企业级远程控制方案选型指南:四款主流方案深度对比

科技热闻

在AI时代,挖掘新需求比实现功能更具挑战性

qife122

开发者工具 需求分析

MCP客户端与服务端使用教程

测试人

软件测试

芯火三十年:纵横四海(2013-2021)

脑极体

AI

Spring Boot 插件化开发模式,忒香了!

Geek_e3e86e

Java 编程

如何在预算确定的情况下发挥财务规划的最大价值?

智达方通

企业管理 全面预算管理

AI测试的准确率覆盖率稳定性

测试人

软件测试

1小时搞定跨浏览器测试!零基础玩转Playwright自动化

测试人

软件测试

MyEMS能源管理系统后台配置-计量表管理

开源能源管理系统

开源 能源管理

怎么修改网站域名的DNS服务器?

国科云

国产IT运维监控系统标杆之选:Gartner推荐的嘉为蓝鲸全栈智能可观测中心——IBM Tivoli国产化替代实践

嘉为蓝鲸

AIOPS Gartner 智能运维 可观测 国产IT运维监控系统

混合开发赋能快节奏业务增长:跨端生态构建与敏捷迭代实践

xuyinyin

单卡推理吞吐2300Tokens/s,昇腾AI云服务正在改写算力法则

Alter

三角偶极子天线(下)---MIMO系统, 包络相关系数ECC和分集增益DG

思茂信息

cst仿真软件 CST软件 CST Studio Suite

抖音内容技术团队开源ContentV:有限算力下高效训练视频生成模型的新路径

字节跳动开源

开源 视频生成 ContentV

JavaScript Quine揭秘:如何让程序输出自身源代码?

不在线第一只蜗牛

JavaScript

假如你从7月开始准备Java面试,如何秋招拿下offer?

程序员高级码农

java 程序员‘

这份指南教你如何打造一款 AI 陪伴虚拟角色

火山引擎开发者社区

AI 智能体

字节跳动 ByteBrain 开源 MySQL 虚拟索引 VIDEX:让 AI+DB 也能大规模落地

火山引擎开发者社区

字节跳动

轻松上手|用 TRAE 搭建 AI 健身私教

火山引擎开发者社区

AI Trae

计算架构,行业AI竞争的下一个分水岭

极客天地

系统容量评估方法

陈一之

构架师 容量设计

分享一个 Cursor mdc 生成器,基于 Gemini 2.5,很实用!

Immerse

京东商品详情API接口(JD.item_get)

tbapi

京东商品详情接口 京东API 京东商品数据采集

CAD一键锁定坐标,图块批量插入快人N步!

在路上

cad 浩辰CAD CAD看图王

商品中心—库存分桶的一致性改造文档

电子尖叫食人鱼

C# 数据库

华为开发者空间全面升级,全新特性赋能AI智能应用开发

华为云开发者联盟

Netflix为Envoy开发新功能,实现零配置服务网格_DevOps & 平台工程_InfoQ精选文章