翻译 | 宋松
原文 | https://medium.com/solo-io/linkerd-or-istio-6fcd2aad6e42

本周我开始写一篇比较Istio和Linked的帖子,并且告诉我自己:我将用一个表格来比较两者的特性,这将会很棒,人们会爱上它,这个世界将会幸福几秒钟。我向自己承诺这将是一个公平的比较,没有任何偏见。虽然比较的表格仍然存在,但我转移了文章的终点:目标不再是哪个更好,而是哪个更适合你、你的应用程序和你的组织。

在职业生涯的一段时间中,我曾担任某公司的售前架构师,记得有很多次我们被要求填写产品比较表。我经常需要运用创造力来确保产品看起来很好,几乎不惜一切代价避免表格中令人不愉快的“不支持”的框。考虑到诚信工作,但是有时候不得不这样做。

站在评价者的角度来看,我理解他们(希望)的目的是进行公平的比较,在这种程度上,对比的表格似乎是一种可靠的方式。我们知道一个项目的成功可以预测职业的发展,我们都喜欢这一点。但问题是:如果评估的最终目标是产品对比表格,而不是能让企业更有竞争力的高质量软件,那么这个评估的最后将只是一些“表格”的工作。

产品比较并不是最终目的,通过比较知道哪些对你的用例最好才是最终目的。因此让我们通过七个方面来深入研究Service Mesh,主要是以下几个方面:

  • 流量管理

  • 安全

  • 安装/配置

  • 支持的环境

  • 监测

  • 策略管理

  • 性能

对于上述七个方面中的每一个,我都将发表个人观点,希望我的观点能够帮你做出更接近于简洁的决策。

流量管理

需要强调的是,Istio和Linkerd的区别在于数据平面使用了两种不同的代理技术。

Istio使用Envoy作为其代理。Envoy是C++编写的,最初是由Lyft构建,以便以非Kubernetes方式促进微服务的流量管理。许多公司已经将Envoy扩展为Kubernetes的ingress技术。

Linkerd(v2)使用的是一种名为Linkerd-proxy的专用服务网格代理。这个代理是使用Rust编写的,与该代理一起,许多低级代理(网络客户机与服务器)功能在另一个也是由rust编写名为Tower的项目中实现。Tower依赖于Tokio,Tokio是一个由Rust编写的事件驱动非阻塞I/O库。如果你和我一样欣赏统计学,那么Rust已经连续四年(2016、2017、2018、2019)一直是Stack-overflow最受欢迎的语言。

Istio是构建与Envoy之上的因此在流量管理方面它是占据优势的,Envoy已经包含了重要的IMHO功能,比如子集路由。用户仍然可以使用Linkerd实现金丝雀/蓝绿/a-b发布,但必须依靠单独的Kubernetes服务和能够分发流量的集群ingress技术,比如Gloo(gloo.solo.io)。

Linkerd团队在最近一次社区会议上公开表示,计划在未来的版本中实现更加高级的L7流量管理功能。

安全

关于安全,我正在考虑保护通信通道的能力。Istio和Linkerd两者都提供了合理的安全保护功能。

Istio和Linkerd都依赖于外部根证书,因此两者都能保证进行安全通信。这听起来像是一个很好的周末项目,你觉得呢?

安装和配置

鉴于Istio可以安装在许多不同的平台上,安装说明可能会存在很大的不同。在写这篇文章的时候,关于Linkerd的安装,我对一些预先需要安装功能的检查印象很深刻。有很多次我在共享的Kubernetes集群中安装一些Linkerd功能时,我不清楚我是否拥有必要的权限。对于Linkerd,pre-check(或check-pre)检查你是否拥有在安装过程中创建Kubernetes所需资源的权限。

环境支持和部署模型

对于是选择kubernetes或者是非Kubernetes安装,这是一个很直接的问题,Linkerd2是用基于kubernetes方式构建的,至少目前是这样的,而Istio收到了一下其他的公司的贡献,希望istio能在非kubernetes环境中运行。

考虑多集群部署,客观来说对于它的解释可能很棘手。从技术上来讲,共享根CA证书的多个不同集群(具有不同的控制平面)上的服务之间可以有效的通信。

Istio扩展了上述概念,因为它支持不同情形下的多个集群:

  • 单个控制平面即可满足不同集群之间网络连接和pod之间IP寻址。

  • 通过使用具有单个控制平面的集群边界网关(egress和ingress)即可访问多个集群上的kubernetes API服务器。

在上述两种情况下,包含控制平面的集群将成为mesh管理的SPOF(single point of failure)。在我们这个可以在同一区域下的多个可用区域上部署单个集群的世界中,这将不再是一个问题,但仍然不能完全忽略它。

监测

可以说Istio的管理控制台是一个缺失的部分。 Kiali Observability Console确实解决了一些管理员对service mesh所需的一些需求。

Kiali(κιάλι)是一个希腊词,意思是望远镜,从Kiali的网站上可以清楚的看到它打算成为一个可监测性的控制台,而不仅仅是一个Service Mesh管理控制台。

Linkerd控制台还不完整,但是社区决定也要构建一个管理仪表盘的目标是一个优势。

Linkerd未能提供请求追踪。想要以非侵入方式查看请求追踪跨度必须等待Linkerd实现该功能。Istio利用了Envoy支持添加追踪headers的事实。

应该提醒用户,应用程序需要准备好转发跟踪headers,如果没有准备,代理可以生成新的跟踪IDS,这可能会无意中将单个请求分割为多个请求跨度使请求之间失去必要的关联性。大多数开发框架都有转发headers的选项,而无需用户编写大量的代码。

策略管理

Istio的爱好者,请欢欣鼓舞!Istio的策略管理能力令人印象深刻。

该项目构建了一个可扩展的策略管理机制,允许其他技术可从多个方面与Istio集成,请参阅下面的“template”列表以及一些集成的提供者。你可以认为“template”是一种集成。

为了突出其他策略类型,Istio也可适用于rating和limiting以及提供对主体身份验证的开箱即用支持。Linkerd用户依赖集群ingress控制器提供rating和limiting。

对于主体身份验证,我一直认为它应该委托给应用程序。请记住#4分布式计算的谬论:网络是安全的。对此持零信任策略。

Istio令人印象深刻的策略管理能力是需要代价的。考虑到他的广泛性,管理众多的选项增加了本已昂贵的运营成本。

Istio(Mixer)的策略管理组件也增加了显著的性能,我们将在下面详细讨论。

性能

对比表在哪里?幸运的是,就在最近,发布了两个很棒的博客,对Istio和Linkerd的性能进行了比较,我在下面引用了其中一些结论:

对于这种综合工作负载,Istio的Envoy代理使用比Linkerd多50%的CPU。Linkerd的控制平面使用了一小部分Istio,特别是在考虑“core”组件时。

——Michael Kipper — Benchmarking Istio & Linkerd CPU(https://medium.com/@ihcsim/linkerd-2-0-and-istio-performance-benchmark-df290101c2bb)

And…

在本实验中,与基线设置相比,Linkerd2-meshed设置和Istio-meshed设置都经历了更高的延迟和更低的吞吐量。在Istio-meshed设置中产生的延迟高于在Linkerd2-meshed设置中观察到的延迟。Linkerd2-Meshed设置能够处理比Istio-Meshed设置更高的HTTP和GRPC ping吞吐量。

——Ivan Sim — Linkerd 2.0 and Istio Performance Benchmark(https://medium.com/@ihcsim/linkerd-2-0-and-istio-performance-benchmark-df290101c2bb)

意识到Mixer所增加的处理时间,Istio团队目前正致力于重写Mixer组件:“Mixer将用c++重新并直接嵌入到Envoy中。将不再有任何独立的Mixer服务。这将提高性能并降低运营复杂性。”

—Source Mixer V2 Design Document(https://docs.google.com/document/d/1QKmtem5jU_2F3Lh5SqLp0IuPb80_70J7aJEYu4_gS-s/edit)

总结

是的,Istio比Linkerd2.3有多的特性。这是很好的,更多的特性意味着处理更复杂和边缘用例的能力增强。这没什么神奇的,更多的特性通常意味着更多的配置,潜在的资源利用率和运营成本的增加,所有这里有三条建议:

  • 如果你不知道80%最常见的工作负载是什么样子的,那么你将很难选择服务网格。如果你不知道这些数字,你的企业可能还没有准备好进行服务网格的使用。如果你只是在探索,那就另当别论了。

  • 如果你想计划解决所有可能的当前和未来的cases(通常叫做comparison spreadsheet),那么你将会有一段糟糕的时间。你很可能会过度获取,这对你购买的任何软件都是如此。

  • 盲目的选择一种技术或另一种会让你过的很糟糕。炒作可能很厉害,但请记住,你并不是在炒作业务(除非真的在炒作)。

试试Istio和Linkerd! Solo SuperGloo是最简单的方式。

我使用SuperGloo是因为它非常简单,可以快速启动两个服务网格,而我几乎不需要做任何努力。我们并没有在生产中使用它,但是它非常适合这样的任务。每个网格实际上是两个命令。

——Michael Kipper — Benchmarking Istio & Linkerd CPU — Shopify(https://medium.com/@michael_87395/benchmarking-istio-linkerd-cpu-c36287e32781)。

在Solo.io(https://www.solo.io/),我们希望为你的服务网格采用之旅提供便利。 Solo SuperGloo我们的服务Mesh orchestrator可以通过直观简单的命令安装和管理流行的服务网格技术。 正如Michael上面所指出的那样,安装Istio或Linkerd会成为一个单行活动。 SuperGloo并不止于此,它在不同的服务网格技术之上提供了一个抽象,允许对多个网格进行一致且可重复的操作。 SuperGloo是完全开源的,you can try it right now(https://supergloo.solo.io/)。

本文由博云研究院原创翻译发表,转载请注明出处。

转载于:https://blog.51cto.com/11976981/2387201

Linkerd or Istio?哪个Service Mesh框架更适合你?相关推荐

  1. 构建基于Spring Cloud向Service Mesh框架迁移的解决方案及思路

    作为新一代微服务架构体系,Service Mesh 技术有效地解决了 Spring Cloud 微服务架构和服务治理过程中的痛点问题,一经推出便引起了很大的反响.近一年来,伴随着云原生的热火朝天,Se ...

  2. Kubernetes生产实践系列之二十三:Service Mesh之在Kubernetes部署Istio进行service mesh

    一.前言 演进到今天,Istio已经明确了作为ServiceMesh基础设施,它的主要服务能力包括: 在之前的文章<kubernetes系列之十八:使用helm安装istio>中,基于Is ...

  3. 基于Service Mesh构建更现代的服务架构

    点击上方蓝色字体,选择"设为星标" 优质文章,及时送达 前言 传统业务模型中,客户端和服务端之间放置一个负载均衡器,比如nginx.我们的客户端可以是移动程序或者web系统. 当服 ...

  4. Keras与PyTorch全方位比较 哪一个深度学习框架更适合初学者?

    Keras或PyTorch作为您的第一个深度学习框架 你想学习深度学习吗?无论您是想开始将其应用于您的业务,建立您的下一个项目,还是仅仅获得当下热门的技能 – 选择合适的深度学习框架来学习是实现目标的 ...

  5. Service Mesh对比:Istio与Linkerd

    根据CNCF的最新年度调查,很多组织对Service Mesh表现出很高的兴趣,并且有一部分已经在生产环境中使用它们.你可能不知道Linkerd是市场上第一个Service Mesh,但是Istio使 ...

  6. 微服务之旅:从 Netflix OSS 到 Istio Service Mesh

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 来源:锅外的大佬 微服务是具有边界上下文的松散耦合服务,使您能够独立开发,部署和扩展服务.它 ...

  7. QCon北京2018关键词:Kubernetes、Service Mesh、Istio和微服务

    Kubernetes已然是容器编排系统的事实标准,像京东这样的大厂也从OpenStack切换到了Kubernetes.也有不少公司围绕Kubernetes搭建自己的私有云等基础设施,运维体系也随之产生 ...

  8. 测试Istio 1.6 Service Mesh引入虚拟机Workload (笔记与感悟)

    序: 五月底Istio官方发布了1.6的正式版, 简化了部署以及对其组件进行了整合. 引起我注意的是Istio正式增强了对非容器形态加入网格的支持, 并声明会做为重要的战略持续优化. 做为VMware ...

  9. 下一代 Service Mesh -- istio 架构分析

    前面的分享中,我们讲到,出于性能和稳定的考虑,我们没有采用以 istio 为代表的第二代 service mesh技术,而是直接使用了 Envoy 搭配自己的 xDS 服务. 然而我们还是有必要去了解 ...

最新文章

  1. 对外合作对话国际农民丰收节贸易会 农业农村部谋定稳求进
  2. 利用Azure DevOps建设ExcelBDD的持续集成
  3. js小学生图区_推荐12个最好的 JavaScript 图形绘制库
  4. 各种池化操作(包括组合池化)
  5. SAP License:ERP顾问们,为何你会面试失败?
  6. JavaScript 数组常见操作 (二)
  7. STL 容器迭代器失效总结(超级详细)
  8. 推荐系统(十九)Gate网络(二):百度GemNN(Gating-Enhanced Multi-Task Neural Networks)
  9. linux 创建gpt分区,parted创建GPT分区
  10. leetcode之随心刷
  11. 2021-2027全球与中国自动卡车装卸系统市场现状及未来发展趋势
  12. LAN9252采用外部阻容复位的时候,RESET引脚一直为低的原因以及对应解决办法。
  13. centos网卡启动故障报错
  14. pytest之Monkeypatching(猴子补丁)
  15. 指南:使用 Trickle 限制应用程序带宽占用
  16. 使用 KubeKey 快速安装 Kubernetes 集群
  17. ansible主机清单配置详解
  18. 【photoshop】笔记之图层详解
  19. 【Jmeter】安装配置:Jmeter 自定义创建桌面快捷方式
  20. JavaScript 设计模式之发布-订阅模式(下)

热门文章

  1. 河大计算机学院足球队,我校第二十九届“河大杯”足球赛落幕
  2. android获取各运营商信号,一篇关于 Android 获取运营商的全面笔记
  3. 不驰于空想,不骛于虚声
  4. 企业级服务器固态硬盘,普通SSD与企业SSD的区别_Intel服务器CPU_企业存储技术与评测-中关村在线...
  5. bim的二次开发需要什么语言_BIM软件的二次开发是什么?都需要做哪些准备?
  6. 64. Minimum Path Sum 路径最小总和
  7. 深入实践 Spring Boot PDF 百度云盘下载
  8. ai人工智能课程百度云_云AI就像核电
  9. Android AlarmManagerService TIME_TICK 广播发送流程
  10. PAT日志 1028