【服务网格架构】Envoy和类似的系统比较

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 【服务网格架构】Envoy和类似的系统比较

总的来说,我们相信Envoy为现代服务导向架构提供了独特且引人注目的功能。下面我们比较一下Envoy和其他相关的系统。尽管在任何特定的领域(边缘代理,软件负载平衡器,服务消息传递层),特使可能不像下面的一些解决方案那样具有丰富的功能,但是总体而言,没有其他解决方案将相同的整体特征提供到单个自包含的高性能套餐。


注:以下大部分项目正在积极开发中。因此有些信息可能会过时。如果是这种情况,请让我们知道,我们会解决它。


nginx

nginx是规范的现代Web服务器。它支持服务静态内容,HTTP L7反向代理负载均衡,HTTP / 2和许多其他功能。尽管我们认为大多数现代的面向服务的体系结构通常不使用它们,但nginx比Envoy更具有整体特性作为边缘反向代理。与nginx相比,Envoy提供了以下主要优势作为边缘代理:


  • 完整的HTTP / 2透明代理。Envoy支持下行和上行通信的HTTP / 2。nginx仅支持HTTP / 2用于下游连接。
  • 自由提供高级负载均衡。只有nginx plus(付费服务器)支持与Envoy类似的高级负载均衡功能。
  • 能够在边缘以及每个服务节点上运行相同的软件。许多基础设施运行nginx和haproxy的混合。从操作的角度来看,每一跳的单一代理解决方案都要简单得多。

HAProxy

haproxy是规范的现代软件负载平衡器。它也支持基本的HTTP反向代理功能。作为负载均衡器,Envoy提供了比haproxy更多的主要优势:


  • HTTP / 2支持。
  • 可插拔的架构。
  • 与远程服务发现服务集成。
  • 与远程全球限速服务集成。
  • 基本上更详细的统计。

AWS ELB

Amazon的ELB是用于EC2应用程序的服务发现和负载平衡的标准解决方案。Envoy提供了ELB作为负载平衡器和服务发现系统的以下主要优势:


  • 统计和日志记录(CloudWatch的统计数据是延迟的,并且极其缺乏细节,日志必须从S3中检索并且具有固定的格式)。
  • 稳定性(使用ELB时偶尔会出现不稳定情况,最终无法调试)。
  • 先进的负载平衡和节点之间的直接连接。Envoy网格通过可变的弹性硬件避免了额外的网络跳跃。负载平衡器可以做出更好的决策,并根据区域,金丝雀状态等收集更有趣的统计信息。负载平衡器还支持诸如重试等高级功能。
  • AWS最近发布了应用程序负载均衡器产品。本产品将HTTP / 2支持以及基本HTTP L7请求路由添加到多个后端群集。与Envoy相比,这个功能还是很小的,性能和稳定性是未知的,但显然AWS将来会继续在这个领域进行投资。


SmartStack

SmartStack是一个有趣的解决方案,它提供了额外的haproxy之上的服务发现和健康检查支持。在高层次上,SmartStack与Envoy(out of process架构,应用程序平台不可知论等)具有大部分相同的目标。作为负载平衡器和服务发现软件包,Envoy相对于SmartStack提供了以下主要优势:


  • 与haproxy相比,前面提到的所有优点。
  • 集成的服务发现和主动健康检查。Envoy在一个单一的高性能包中提供了一切。

Finagle

Finagle是Twitter的Scala / JVM服务,用于服务通信库。Twitter和许多其他公司主要使用基于JVM的体系结构。它具有许多与Envoy相同的功能,例如服务发现,负载平衡,过滤器等。与Finagle相比,Envoy作为负载平衡器和服务发现软件包提供了以下主要优势:


  • 通过分布式主动健康检查最终一致的服务发现。
  • 所有度量标准(内存消耗,CPU使用率和P99延迟属性)的性能级别都较好。
  • 超出流程和应用程序不可知的架构。特使与任何应用程序堆栈。
  • proxygen和wangle
  • proxygen是Facebook的高性能C ++ 11 HTTP代理库,写在一个叫做wangle的Finagle之类的C ++库之上。从代码角度来看,Envoy使用与proxygen大部分相同的技术来获得作为HTTP库/代理的高性能。除此之外,这两个项目并没有真正的可比性,因为Envoy是一个完整的包含大型功能的独立服务器,而不是每个项目都需要单独构建的库。


GRPC

gRPC是一种新的多平台消息传递系统。它使用IDL来描述RPC库,然后为各种不同的语言实现特定于应用程序的运行时。底层传输是HTTP / 2。尽管gRPC可能有将来实现许多类似于Envoy的特性(负载平衡等)的目标,但是到目前为止,各种运行时并不成熟,主要侧重于序列化/反序列化。我们认为gRPC是特使与竞争对手的伙伴。这里描述了Envoy如何与gRPC集成。


linkerd

linkerd是构建在Netty和Finagle(Scala / JVM)上的独立的开源RPC路由代理。linkerd提供了许多Finagle的功能,包括延迟感知负载平衡,连接池,断路,重试预算,截止日期,跟踪,细粒度检测以及用于请求级路由的流量路由层。linkerd提供了一个可插拔的服务发现接口(标准支持Consul和ZooKeeper以及Marathon和Kubernetes API)。


linkerd的内存和CPU要求明显高于Envoy的。与Envoy相比,linkerd提供了极简主义的配置语言,并且明确地不支持热重载,而是依靠动态配置和服务抽象。linkerd支持HTTP / 1.1,Thrift,ThriftMux,HTTP / 2(实验)和gRPC(实验)。


nghttp2

nghttp2是一个包含几个不同的东西的项目。它主要包含一个实现HTTP / 2协议的库(nghttp2)。Envoy使用这个库(顶部有一个非常薄的包装)来支持HTTP / 2。该项目还包含一个非常有用的负载测试工具(h2load)以及一个反向代理(nghttpx)。从比较的角度来看,Envoy与nghttpx最为相似。nghttpx是一个透明的HTTP / 1 HTTP / 2反向代理,支持TLS终止,正确支持gRPC代理以及其他各种功能。有了这个说法,我们认为nghttpx是各种代理功能的一个很好的例子,而不是一个强大的生产就绪解决方案。特使的重点更多地集中在可观察性,一般操作敏捷性和高级负载平衡功能上。

相关文章
|
29天前
|
监控 持续交付 API
深入理解微服务架构:构建高效、可扩展的系统
【10月更文挑战第14天】深入理解微服务架构:构建高效、可扩展的系统
78 0
|
3月前
|
Ubuntu Linux
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
854 3
|
4天前
|
传感器 算法 物联网
智能停车解决方案之停车场室内导航系统(二):核心技术与系统架构构建
随着城市化进程的加速,停车难问题日益凸显。本文深入剖析智能停车系统的关键技术,包括停车场电子地图编辑绘制、物联网与传感器技术、大数据与云计算的应用、定位技术及车辆导航路径规划,为读者提供全面的技术解决方案。系统架构分为应用层、业务层、数据层和运行环境,涵盖停车场室内导航、车位占用检测、动态更新、精准导航和路径规划等方面。
31 4
|
14天前
|
前端开发 安全 关系型数据库
秒合约系统/开发模式规则/技术架构实现
秒合约系统是一种高频交易平台,支持快速交易、双向持仓和高杠杆。系统涵盖用户注册登录、合约创建与编辑、自动执行、状态记录、提醒通知、搜索筛选、安全权限管理等功能。交易规则明确,设有价格限制和强平机制,确保风险可控。技术架构采用高并发后端语言、关系型数据库和前端框架,通过智能合约实现自动化交易,确保安全性和用户体验。
|
22天前
|
存储 数据管理 调度
HarmonyOS架构理解:揭开鸿蒙系统的神秘面纱
【10月更文挑战第21天】华为的鸿蒙系统(HarmonyOS)以其独特的分布式架构备受关注。该架构包括分布式软总线、分布式数据管理和分布式任务调度。分布式软总线实现设备间的无缝连接;分布式数据管理支持跨设备数据共享;分布式任务调度则实现跨设备任务协同。这些特性为开发者提供了强大的工具,助力智能设备的未来发展。
74 1
|
1月前
|
存储 监控 负载均衡
|
1月前
|
传感器 存储 架构师
构建基于 IoT 的废物管理系统:软件架构师指南
构建基于 IoT 的废物管理系统:软件架构师指南
72 9
|
1月前
|
自然语言处理 监控 Cloud Native
探索微服务架构中的服务网格Service Mesh
【10月更文挑战第7天】服务网格(Service Mesh)是微服务架构中的关键组件,通过在每个服务实例旁部署Sidecar代理,实现服务间通信的管理、监控和安全增强。本文介绍了服务网格的基本概念、核心组件、优势及实施步骤,探讨了其在现代开发中的应用,并提供了实战技巧。
|
1月前
|
存储 安全 开发工具
百度公共IM系统的Andriod端IM SDK组件架构设计与技术实现
本文主要介绍了百度公共IM系统的Andriod端IM SDK的建设背景、IM SDK主要结构和工作流程以及建设过程遇到的问题和解决方案。
53 3
|
2月前
|
监控 Android开发 iOS开发
深入探索安卓与iOS的系统架构差异:理解两大移动平台的技术根基在移动技术日新月异的今天,安卓和iOS作为市场上最为流行的两个操作系统,各自拥有独特的技术特性和庞大的用户基础。本文将深入探讨这两个平台的系统架构差异,揭示它们如何支撑起各自的生态系统,并影响着全球数亿用户的使用体验。
本文通过对比分析安卓和iOS的系统架构,揭示了这两个平台在设计理念、安全性、用户体验和技术生态上的根本区别。不同于常规的技术综述,本文以深入浅出的方式,带领读者理解这些差异是如何影响应用开发、用户选择和市场趋势的。通过梳理历史脉络和未来展望,本文旨在为开发者、用户以及行业分析师提供有价值的见解,帮助大家更好地把握移动技术发展的脉络。
92 6