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

简介: 【服务网格架构】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是各种代理功能的一个很好的例子,而不是一个强大的生产就绪解决方案。特使的重点更多地集中在可观察性,一般操作敏捷性和高级负载平衡功能上。

相关文章
|
16小时前
|
存储 SQL 网络协议
C语言C/S架构PACS影像归档和通信系统源码 医院PACS系统源码
医院影像科PACS系统,意为影像归档和通信系统。它是应用在医院影像科室的系统,主要的任务是把日常产生的各种医学影像(包括核磁、CT、超声、各种X光机、各种红外仪、显微仪等设备产生的图像)通过各种接口(模拟、DICOM、网络)以数字化的方式海量保存起来,并在需要的时候在一定授权下能够快速地调回使用。同时,PACS系统还增加了一些辅助诊断管理功能。
40 11
|
15小时前
|
传感器 存储 数据采集
04 深度解析物联网架构与技术应用于农业大棚系统
本文将深入探讨物联网架构在农业大棚系统中的应用,从设备接入、边缘网关、数据传输到云平台和应用平台,逐层解析其技术应用与通信协议,为读者全面呈现物联网在农业领域的实际运用场景。
|
15小时前
|
存储
嵌入式微处理器的系统架构中指令系统
嵌入式微处理器的系统架构中指令系统
19 0
|
15小时前
|
安全 数据管理 中间件
云LIS系统源码JavaScript+B/S架构MVC+SQLSugar医院版检验科云LIS系统源码 可提供演示
检验科云LIS系统源码是医疗机构信息化发展的重要趋势。通过云计算技术实现数据的集中管理和共享可以提高数据利用效率和安全性;通过高效灵活的系统设计和可扩展性可以满足不同医疗机构的需求;通过移动性和智能化可以提高医疗服务的精准度和效率;通过集成性可以实现医疗服务的协同性和效率。因此,多医院版检验科云LIS系统源码将成为未来医疗机构信息化发展的重要方向之一。
27 2
|
15小时前
|
人工智能 运维 监控
构建高性能微服务架构:现代后端开发的挑战与策略构建高效自动化运维系统的关键策略
【2月更文挑战第30天】 随着企业应用的复杂性增加,传统的单体应用架构已经难以满足快速迭代和高可用性的需求。微服务架构作为解决方案,以其服务的细粒度、独立性和弹性而受到青睐。本文将深入探讨如何构建一个高性能的微服务系统,包括关键的设计原则、常用的技术栈选择以及性能优化的最佳实践。我们将分析微服务在处理分布式事务、数据一致性以及服务发现等方面的挑战,并提出相应的解决策略。通过实例分析和案例研究,我们的目标是为后端开发人员提供一套实用的指南,帮助他们构建出既能快速响应市场变化,又能保持高效率和稳定性的微服务系统。 【2月更文挑战第30天】随着信息技术的飞速发展,企业对于信息系统的稳定性和效率要求
|
15小时前
|
前端开发 Java 关系型数据库
Java医院绩效考核系统源码B/S架构+springboot三级公立医院绩效考核系统源码 医院综合绩效核算系统源码
作为医院用综合绩效核算系统,系统需要和his系统进行对接,按照设定周期,从his系统获取医院科室和医生、护士、其他人员工作量,对没有录入信息化系统的工作量,绩效考核系统设有手工录入功能(可以批量导入),对获取的数据系统按照设定的公式进行汇算,且设置审核机制,可以退回修正,系统功能强大,完全模拟医院实际绩效核算过程,且每步核算都可以进行调整和参数设置,能适应医院多种绩效核算方式。
30 2
|
15小时前
|
监控 负载均衡 数据安全/隐私保护
探索微服务架构下的服务网格(Service Mesh)实践
【5月更文挑战第6天】 在现代软件工程的复杂多变的开发环境中,微服务架构已成为构建、部署和扩展应用的一种流行方式。随着微服务架构的普及,服务网格(Service Mesh)作为一种新兴技术范式,旨在提供一种透明且高效的方式来管理微服务间的通讯。本文将深入探讨服务网格的核心概念、它在微服务架构中的作用以及如何在实际项目中落地实施服务网格。通过剖析服务网格的关键组件及其与现有系统的协同工作方式,我们揭示了服务网格提高系统可观察性、安全性和可操作性的内在机制。此外,文章还将分享一些实践中的挑战和应对策略,为开发者和企业决策者提供实用的参考。
|
15小时前
|
运维 监控 负载均衡
探索微服务架构下的服务网格(Service Mesh)实践之路
【4月更文挑战第30天】 在现代云计算的大背景下,微服务架构以其灵活性和可扩展性成为众多企业转型的首选。然而,随着服务的激增和网络交互的复杂化,传统的服务通信模式已无法满足需求,服务网格(Service Mesh)应运而生。本文通过分析服务网格的核心组件、运作机制以及在企业中的实际应用案例,探讨了服务网格在微服务架构中的关键作用及其带来的变革,同时提出了实施过程中面临的挑战和解决策略。
|
16小时前
|
API 开发者 UED
构建高效微服务架构:后端开发的新趋势移动应用与系统:开发与优化的艺术
【4月更文挑战第30天】 随着现代软件系统对可伸缩性、灵活性和敏捷性的日益需求,传统的单体应用架构正逐渐向微服务架构转变。本文将探讨微服务架构的核心概念,分析其优势,并着重讨论如何利用最新的后端技术栈实现一个高效的微服务系统。我们将涵盖设计模式、服务划分、数据一致性、服务发现与注册、API网关以及容器化等关键技术点,为后端开发者提供一份实操指南。 【4月更文挑战第30天】 在数字化时代的浪潮中,移动应用和操作系统的紧密交织已成为日常生活和商业活动的基石。本文将深入探讨移动应用开发的关键技术、跨平台开发工具的选择以及移动操作系统的架构和性能优化策略。通过分析当前移动应用开发的挑战与机遇,我们将
|
15小时前
|
运维 监控 负载均衡
探索微服务架构下的服务网格(Service Mesh)实践
【4月更文挑战第28天】 在现代云原生应用的后端开发领域,微服务架构已成为一种广泛采用的设计模式。随着分布式系统的复杂性增加,服务之间的通信变得愈加关键。本文将深入探讨服务网格这一创新技术,它旨在提供一种透明且高效的方式来管理、监控和保护微服务间的交互。我们将从服务网格的基本概念出发,分析其在实际应用中的优势与挑战,并通过一个案例研究来展示如何在现有的后端系统中集成服务网格。