写点什么

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:004232

评论

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

越来越受欢迎的Vue想学么,90后小姐姐今儿来教你

华为云开发者联盟

算法 Vue 大前端 框架 组件

Node.js 模块化你所需要知道的事

vivo互联网技术

大前端 nodejs Node

Apache Sqoop中最重要的核心概念-导入导出

大数据技术指南

大数据 sqoop 28天写作 3月日更

干货分享丨从MPG 线程模型,探讨Go语言的并发程序

华为云开发者联盟

并发 channel goroutines MPG 线程 Go 语言

深度分析前端构建工具:Vite2 v.s Snowpack3 v.s. Webpack5

智联大前端

vite webpack 构建工具

Java8 Stream 数据流,大数据量下的性能效率怎么样?

xcbeyond

Java java8 Stream<T> 3月日更

看完张一鸣近十年微博,我总结了这些成长特质

邴越

字节跳动 张一鸣 互联网 职场 抖音

网络知识一箩筐:IP地址划分的那些知识点

华为云开发者联盟

网络 虚拟私有云 子网 IP地址

JVM笔记 -- JVM的生命周期介绍

秦怀杂货店

JVM 生命周期

盘点 HashMap 的实现原理及面试题

老王说编程

Java hashmap HashMap底层原理

BFAI量化交易系统开发|BFAI炒币机器人APP软件开发

系统开发

《谷歌是如何运营的》-读书笔记

曦语

读书笔记

如果延迟退休势在必行,区块链如何助力“养老助老”?

旺链科技

产业区块链

落袋为安——前景理论之确定性

Justin

心理学 28天写作 游戏设计

MindSpore:基于本地差分隐私的 Bandit 算法

华为云开发者联盟

算法 强化学习 mindspore Bandit 隐私

寻找被遗忘的勇气(九)

Changing Lin

3月日更

如何通过 Serverless 提高 Java 微服务治理效率?

阿里巴巴云原生

Java Serverless 容器 微服务 云原生

小鼎量化交易系统开发|小鼎炒币机器人软件APP开发

系统开发

AI辅助宫颈癌筛查技术全球居首,守护者的力量来源是?

华为云开发者联盟

AI 华为云 目标检测 宫颈癌

低代码开发平台解决方案之“金融服务行业”篇

优秀

低代码

PT100热电阻温度阻值对应表

不脱发的程序猿

数据分析 28天写作 PT100 3月日更 温度传感器

为什么我们开发 San 项目时要用 CLI?

百度开发者中心

AI不仅可以把李焕英带回2021,还能告诉你贾玲更像爸爸还是妈妈

京东科技开发者

人工智能 语音识别 语音合成

京东云新一代自研云服务器 4 月上线;COLING 2020丨面向机器阅读理解的双向认知思维网络

京东科技开发者

人工智能 开发者 云服务器

小赌怡情——激励不确定性效应

Justin

心理学 28天写作 游戏设计

Hadoop 核心-HDFS的API详解

五分钟学大数据

大数据 hadoop hdfs 28天写作 3月日更

USB2.0 扩展器(一拖四)原理图、PCB,可打样使用

不脱发的程序猿

28天写作 电路设计 USB电路 USB转TTL 3月日更

2021年最新Redis面试题汇总

架构精进之路

redis 七日更 3月日更

区块链电子合同签署平台,区块链电子存证

13530558032

区块链+版权-助力电子微版权保护

13530558032

币宽量化交易软件开发|币宽炒币机器人系统APP开发

系统开发

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