0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Service Mesh框架的对比:Linkerd vs. Istio

电子设计 来源:电子设计 作者:电子设计 2020-12-25 17:49 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

引言:

各个细分行业和领域的组织机构正在持续的加速采用微服务架构。随之而来的是容器的使用以及端点和服务通信的爆炸式增长。企业内部的复杂性和不确定性正在不断增加。如何在这样的情况下实现对规模化通信安全性和可见性的管理颇具挑战。因此,无论是运营者或者开发者都强烈渴望将网络层的复杂性封装为一个新的网络基础架构层。当此之时,处理此事的最流行的方式是服务网格(Service Mesh)。

因此,在本文中,我们将对比两种主流的服务网络的特性,以找出两者的异同之处,即Linkerd和Istio。文中也会提及有关服务网格使用的争论,探寻在某种特定的场景下,基于特定的用例和架构,何者比何者更具优势。

一、服务网格是什么?

服务网格是一个专有的基础设施层,这一层级的存在可以使得微服务架构内部的服务间通信更加可靠、快捷和安全。其基本的理念是在服务间插入一个代理组成的网络来实现对网络层的抽象。一言以蔽之,服务网格的设计初衷就是帮助开发者解决微服务间的交互挑战。

二、Istio是什么?

Istio是由Google、IBM和Lyft发起的开源的服务网格项目。该项目在2017年推出,并在2018年7月发布了1.0版本。Istio基于Envoy代理并以之为数据层(data plane)。可以说Istio是如今最炙手可热的服务网格,但由于仅应用于Kubernetes,其应用价值受到某种限制。

三、Linkerd是什么?

Linkerd(音似chickadee),最初是由Buoyant团队于2016年打造的一个服务网格项目。Linkerd是CNCF的官方项目,基于Twitter的Finagle项目并和后者一样,最初是由Scala语言编写,设计理念是支持基于主机(物理主机或者虚拟节点)的部署模式。由于最初版本的内存占用广受诟病,导致了Conduit项目的开发,Conduit是一个轻量级的服务网格,为Kubernetes定制,用Rust和Go语言编写。Conduit项目目前已经合并到Linkerd项目,并在2018年7月发布为Linkerd 2.0 版本。鉴于Linkerd 2.x 基于Kubernetes,而Linkerd 1.x 可以基于节点的模式部署,当面临复杂环境的场景时,人们可以有更灵活的选择。除非特指,本文的比较都是基于Linkerd 2.x。

四、特性和功能对比

架构

Istio和Linkerd都支持以主流的外挂(Sidecar)模式部署。在这种模式下,每个微服务都被分配一个单独的代理。微服务间的通信并不直接进行,而是通过自身的代理转发。代理会将请求路由到目标微服务的代理,该代理再将请求转发到目标微服务。所有这些服务代理构成了数据层。在服务网格的架构下,数据层由控制层(control plane)来进行配置和监控,控制层一般另行独立部署。

架构图示意:以Istio为例。Envoy代理以外挂形式部署。在这样的部署模型中,代理将注入每个容器单元,因此可以独立的配置。Istio控制层由很多的组件组成,用来对服务间通信进行配置、度量、控制和安全管控。

控制层

控制层的使命是通过一系列API和工具对服务网格内的代理实现控制。在控制层中,可以将整个数据层作为一个整体来指定认证策略,收集度量指标,进行配置。

Istio的控制层由三个组件构成。首先是Pilot,负责配置数据层。其次是Mixer,负责收集通信流量的度量指标,并响应数据层各种不同的查询请求,包括授权、访问控制和配额查询等。基于所启用的适配器的不同,Mixer也可与日志和监控系统进行对接。最后是Citadel,这个组件允许开发者基于服务身份认证而非网络控制建立一个零信任(零信任,zero-trust,简单讲,即假定所有通信方不可信赖并必须进行验证)机制的网络环境。Citadel负责为每个服务指定证书,如果有需要,也可以接受外部的证书授权密钥。

白小白:

Linkerd的控制层由一个Web组件、一个控制组件和一个度量组件组成。Web组件提供了基于Web的管理控制面板。控制组件由多个容器部署组成。完成了控制层的多数功能(包括聚合遥测数据,提供用户界面API,为数据层提供控制数据等)。度量组件由定制化的Prometheus和Grafana组成。Prometheus负责抓取Linkerd暴露的度量指标并储存下来。Linkerd本身会生成很多外部面板,Grafana负责渲染和展现这些面板。

数据层

在一个典型的服务网格环境中,服务的部署过程将纳入一个专有的外挂代理。如前文所述,服务并不直接向网络传递消息,而是由本身的代理来进行通信。这样的机制封装了服务间通信的复杂性。服务网格内的代理之间相互连接,构成了数据层。

默认情况下,Istio使用Envoy作为数据层,Envoy原本是设计用来与其他类型的代理(比如Nginx)来进行工作的。Linkerd使用自有的代理。

平台支持

尽管声称支持大量的环境和框架,但在实践中,Istio仅能与kubernetes相处融洽,这严重限制了他的应用范畴。

Linkerd 2.x目前也需要与Kubernetes协同工作。然而Linkerd 1.x 部署广泛,并处于活跃的研发状态,可以在多种环境和框架下工作,包括与AWS ECS、DC/OS和Docker协同工作。能够支持如此广泛的环境,得益于Linkerd 1.x 可以基于主机的部署模式,这使得其可以与用户的环境进行整合而无需以外挂的形式部署。

Linkerd 1.x 主机部署模式:linkerd服务网格可以基于主机部署。基于这样的模式,同一主机的多个微服务共享一个Linkerd(1.x)实例。

主机部署模式的主要缺点在于单点代理的失败将影响多个微服务。从另一方面讲,主机部署模式相对于外挂模式对资源的消耗更低。

协议支持

基于外挂代理,Istio和Linkerd 2.x 都支持HTTP 1.1, HTTP2, gRPC和TCP协议的服务间通信。但Linkerd 1.x 不支持TCP连接。

实现语言

Istio的控制层和Linkerd 2.x 都是用Go语言编写的,Istio数据层的Envoy代理是由C++编写的,Linkerd 2.x 的数据层是用Rust编写的。Linkerd 1.x 是用Scala编写的。

安全、加密和授权

Istio的控制层组件提供了如下的安全功能:Citadel:密钥和证书管理。Pilot:认证策略和安全命名信息的分发。Mixer:授权和审计的管理。外挂:实现代理间基于TLS加密的安全通信。

本文成文时,Linkerd的自动化的TLS加密还处于实验阶段,主机间认证也还未获支持。

外挂注入

将外挂加入到部署包并且在服务网格的控制层进行注册的过程即为“外挂注入”。Istio和Linkerd都支持手动和自动的外挂注入。

高可用性

Istio支持高可性,当且仅当配置了Kubernetes的多副本模式,并且打开podAntiAffinity开关的情况下。

linkerd的高可用性目前仍处于实验阶段。

监控和跟踪

Istio原生支持Prometheus并且集成了Jaeger来进行分布式跟踪。Linkerd支持Prometheus和Grafana从外部进行监控,但目前并不支持分布式跟踪。

性能

Linkerd 2.x 在性能上的常规开销总体上比Istio要低一些。一项关于两者的性能测试表明,基于一组由HTTP请求组成的测试负载,每秒的千次查询数(kqps)基准值是30-35kqps,经由代理转发后,性能会有所下降,Linkderd降到了10-12kqps,而Istio则降到了3.2-3.9kqps。

五、什么时候应该谨慎使用服务网格?

有五个主要的原因,可能阻止你考虑使用服务网格来管理微服务架构所带来的潜在的网络复杂性挑战。

1、服务网格具有排他性

服务网格是一个平台解决方案,因此是排他性的。这意味着你将被迫在“服从他们的方式”和“基于我自己的业务和技术考量选择适合的方式”之间做出选择。根据你所处的形势,对服务网格的前期投资可能十分昂贵。

而且,如果说控制应用和服务间通信对你的组织来说具有战略性的重要意义的话,那么使用一个现成的服务网格就没有意义了。这样或许可以受益于框架成长带来的收益 ,但无法对你的目标实现控制。

2、服务网格具有复杂性

服务网格的部署将向你的架构引入相当可观的复杂性。部署过程需要引入外挂代理,服务网格需要与现有的环境进行整合并在未来的时间里反复的配置,所有的加密可能需要重新设计。基于Kubernetes这样的平台建立服务网格的实例,会要求你不仅是服务网格的专家,并且是熟悉Kubernetes的专家。

3、服务网格可能运行缓慢

随着网格的扩张和路由表的膨胀,通过一系列代理进行的路由通信将慢的痛苦异常。

4、服务网格倾向于建立自治的架构蓝图

使用服务网格来追踪服务间的通信请求并不总是像最初那样看起来有价值。比如,假设你的微服务环境与其他团队的应用和服务相整合,在跨越不同的技术团队和业务单元的边界时,翻译不同的追踪记录将十分挑战,如果是企业级环境或者是云端供应商的情况下,这种挑战将更加严峻。

5、服务网格着眼于开发者层面的考量

服务网格着眼于典型的开发者视角的服务间通信问题。对于规模化且不确定的应用和服务而言,组件之间的交互会天然衍生一系列的复杂性,对这些新兴行为的管控,服务网格无能为力。

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Service
    +关注

    关注

    0

    文章

    32

    浏览量

    14371
  • 微服务架构
    +关注

    关注

    0

    文章

    26

    浏览量

    3196
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    同样是Mesh,凭什么WiFi R-Mesh就能“不掉链子”?

    做物联网这行,最让人抓狂的事故现场你一定见过:"同一个蓝牙Mesh灯光系统,有的开关延迟3秒,有的延迟30秒。""部署了WiFiMesh路由组网,视频监控还是卡成PPT
    的头像 发表于 04-08 16:17 882次阅读
    同样是<b class='flag-5'>Mesh</b>,凭什么WiFi R-<b class='flag-5'>Mesh</b>就能“不掉链子”?

    磁力耦合器与变频器应用方案比较

    的核心对比表: 磁力耦合器 vs. 变频器:核心特性对比 对比维度 磁力耦合器 变频器 工作原理 纯机械产品 通过调节导体转子与永磁转子之间的气隙大小,来改变传递的扭矩和转速,实现非接
    的头像 发表于 03-21 07:36 259次阅读
    磁力耦合器与变频器应用方案比较

    蓝牙的Mesh会不会和ble功能有冲突

    蓝牙 Mesh(BLE Mesh) 与 传统 BLE(Bluetooth Low Energy)功能 在技术上是基于同一底层物理层(2.4GHz ISM频段、GFSK调制等)构建的,但它们在协议栈
    发表于 01-30 20:11

    Istio服务网格生产环境性能调优的最佳实践

    随着微服务架构的普及,服务间通信的复杂度呈指数级增长。传统的应用层负载均衡和服务发现方案已经无法满足现代云原生应用的需求。Istio作为目前最成熟的服务网格解决方案,通过在数据平面注入Envoy代理,实现了对服务间流量的细粒度控制,而无需修改应用代码。
    的头像 发表于 01-20 15:40 366次阅读

    暴力实测!7388 vs 进口同级别芯片,3大维度碾压,价格却省一半

    标签:#7388 vs 进口芯片 #大功率功放实测 #国产芯片崛起 #车载音响对比 #电子发烧友干货
    的头像 发表于 12-15 09:54 806次阅读

    【选型建议】选Mesh还是LoRa?谁才是你的理想无线方案?

    技术,才是您项目真正需要的连接方案? 对比两者的网络架构、传输特性、功耗管理与应用适配性,一句话总结: “Mesh”适合近距互动, “LoRa”适合远距上报。 01、技术原理概述:两种“网”的不同思路 01无线 Mesh 自组网
    的头像 发表于 11-19 17:51 1308次阅读

    OSFP vs. QSFP vs. SFP:真正的区别是什么?为什么重要?

    深入解析 OSFP、QSFP 与 SFP 三大光模块封装的核心区别,包括速率、通道数、应用场景与未来扩展性,帮助企业与数据中心选择最合适的高速网络解决方案。
    的头像 发表于 11-17 11:44 1055次阅读

    何时选择光纤电缆:场景与选择指南

    光纤布线已成为现代网络的骨干,提供高带宽、低延迟和长距离传输能力。但升级总是合适的时机吗?本光纤布线选择指南可帮助您根据三个关键因素判断现在是否是购买光纤布线的最佳时机:项目阶段(新建 vs. 改造
    的头像 发表于 07-30 10:53 678次阅读

    FLASH烧写/编程白皮书

    白皮书:如何烧写Flash——不同场景不同需求下的选择认识Flash NAND vs. NOR如何烧写/编程不同方案比较
    发表于 07-28 16:05 0次下载

    如何查找 CYBT-213043-MESH 套件的 BLE 网格参考应用?

    您好,英飞凌支持团队。 我们的客户希望使用 CYBT-213043-MESH 套件评估 BLE 网格。 https://www.infineon.com/cms/jp/product
    发表于 07-02 07:44

    主流版本控制工具Git vs Perforce P4:架构模式、性能、大文件管理及分支管理对比详解

    Git vs Perforce P4,如何选型?架构模式、性能、大文件管理、分支策略四大维度对比,帮你全面了解两者的核心差异,选择更合适你团队需求的版本控制系统。
    的头像 发表于 06-13 14:52 941次阅读
    主流版本控制工具Git <b class='flag-5'>vs</b> Perforce P4:架构模式、性能、大文件管理及分支管理<b class='flag-5'>对比</b>详解

    VirtualLab 应用:薄元近似(TEA)与傅里叶模态法(FMM)的光栅建模

    光栅-效率vs. 周期 正弦光栅—选定周期的相位形态 闪耀光栅-效率vs.高度(只用TEA) 闪耀光栅-传输相位形态 闪耀光栅-衍射效率 闪耀光栅-效率vs.周期 闪耀光栅-选定周期相位形态
    发表于 05-22 08:56

    接地电阻柜vs其他接地方式对比

    接地电阻柜vs其他接地方式对比: 接地方式原理优点缺点 中性点不接地无中性点接地设备成本低,简单易引发弧光过电压 电阻接地串接电阻限制电流抑制过电压保护设备,需定期维护电阻片 消弧线圈电感补偿接地电流自动调谐,适合架空线对电缆系统效果差 直接接地中性点直接接地故障电流大,
    发表于 05-20 08:52

    芯科科技助力蓝牙Mesh设备开发

    蓝牙Mesh 1.1是蓝牙技术联盟(Bluetooth SIG)发布的最新标准版本,Silicon Labs(芯科科技)作为开发和实施蓝牙Mesh标准的主要贡献者之一,特别制作了蓝牙Mesh开发流程页面,以帮助开发人员快速了解新
    的头像 发表于 05-16 13:51 1469次阅读
    芯科科技助力蓝牙<b class='flag-5'>Mesh</b>设备开发

    艾体宝洞察 SPAN 端口VS.网络 TAP :哪种才是最佳流量监控方案?

    在网络监控和故障排除中,获取流量可见性至关重要。本文对比了两种主要的方法:SPAN 端口和网络 TAP。SPAN 端口是一种交换机镜像功能,易于配置但存在流量丢失、可见性受限等问题;而网络 TAP
    的头像 发表于 05-08 11:21 840次阅读
    艾体宝洞察 SPAN 端口<b class='flag-5'>VS.</b>网络 TAP :哪种才是最佳流量监控方案?