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

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

3天内不再提示

哪种Service Mesh最契合企业的组织需求?

jf_78858299 来源:ImportNew 作者:ImportNew 2023-03-23 14:15 次阅读

哪种Service Mesh最契合企业的组织需求?近年来,Kubernetes Service Mesh数量迅速增长,也让这方面选择变得愈发困难。本文将与大家深入探讨九大流行开源Service Mesh,了解它们如何支持微服务开发工作,并针对不同选项提出用例建议。

在进入主题之前,我们先要明确两个问题:Service Mesh是什么?这波热潮又为何发生在当下?

首先,微服务是一种便捷的开发方法。但随着分布式微服务架构的持续扩张,部署与可扩展性往往给开发者带来新的难题。

Kubernetes等容器与容器编排工具能够将各项服务与相应运行时共同打包,执行打包容器并将其映射至设备以解决上述难题。但其中负责管理服务间通信的操作逻辑仍然不可能完美契合。

Service mesh正是为此而生——它以独立于应用程序代码之外的方式,为整体堆栈带来统一的网络功能。Service Mesh扩展了Kubernetes等集群管理器的功能范畴,提供丰富的可观察指标、服务发现、负载均衡、IT运营监控以及微服务/容器故障恢复等功能选项。

Service mesh现状

如今,关于Service Mesh存在着诸多炒作甚至误解。Linkerd缔造者William Morgan强调,“Service Mesh其实就是一大堆与服务本体紧密相邻的用户空间代理。”虽然实质非常简单,但“在排除掉种种噪声与误解之后,Service Mesh确实带来了切实、具体且重要的价值。”

如今,Envoy已经成为大部分Service Mesh的核心。Envoy是一种通用开源代理,以辅助方式实现流量拦截。当然,也有一些Service Mesh会使用其他代理选项。

在Service Mesh的实际应用方面,Istio与Linkerd已经占据主流。除此之外,Consul Connect、Kuma、AWS App Mesh以及OpenShift等也都拥有自己的受众。下面来看九大service mesh产品的功能特性。

Istio

Istio是一种基于Envoy的可扩展开源Service Mesh,允许团队连接、保护、控制并观察各项服务。作为IBM与谷歌的持续合作产物,Istio于2017年正式开源,连同Lyft一道被捐赠给云原生计算基金会。

在此之后,Istio不断完善并改进自身功能集。目前Istio的核心功能包括负载均衡、流量路由、策略创建、指标跟踪以及服务到服务身份验证等。

Istio分为两个组成部分:数据平面与控制平面。Istio的数据平面使用Envoy边车代理在各服务之间实现流量与调用路由,借此实现流量管理。Istio的控制平面则可供开发人员用于配置路由并查看各项指标。

Istio提供的各项指标均提供细粒度属性,其中包含与服务行为相关的特定数据值。

与其他Service Mesh相比,Istio的平台成熟度更高,主要偏重行为洞见与操作控制,同时提供监控仪表板。但由于包含大量先进功能与密集的配置流程,Istio在易用性及开发者友好度方面往往不及其他更为简单的Service Mesh。

Linkerd

根据官方网站的说明,Linkerd是一套“面向Kubernetes的超轻量级、安全优先型Service Mesh。”它是开发者们的最爱,设置过程非常简单,据称只需要60秒左右即可安装至Kubernetes集群。不同于采用Envoy的Istio,Linkerd采用名为linkerd2-proxy的调整精简Rust代理,从名称就能看出其为Linkerd量身打造之意。

Linkerd属于社区驱动型项目,采用100% Apche许可开源代码,同时也是云原生计算基金会(CNCF)旗下的孵化项目。诞生于2016年的Linkerd一直不断发展,诸多原有问题已经在维护人员手中得到解决。

使用Linkerd Service Mesh,应用程序能够为其Kubernetes部署带来更强大的可靠性、可观察性与安全性。例如,更好的可观察性使工程师们能够高效解决不同服务之间的通信延迟问题。Linkerd无需对代码做出过多更改,也不需要耗费时间编写YAML配置文件。优秀的功能与积极的开发者社区响应态度,让Linkerd在受众当中积累起良好的口碑。

Consul Connect

HashiCorp开发的Consul Connect Service Mesh专注于路由与分段功能,可通过应用层级的边车代理提供服务到服务网络功能。Consult Connect特别强调应用程序安全性,其代理能够为应用程序提供双向传输层安全(TLS)连接以实现授权与加密。

Consul Connect的独特之处,在于提供两种代理选项。首先是Connect的内置层代理,主要用于测试场景;此外,Connect还支持Envoy。在可观察性方面,Connect提供良好的工具集成能力,可监控Prometheus等边车代理的相关数据。Consul Connect也能够灵活满足开发人员的实际需求,提供的注册服务选项包括:通过编排器注册、使用配置文件注册、通过API注册或通过命令行界面(CLI)注册。

Kuma

由Kong打造的Kuma同样是一套强大的Service Mesh解决方案。Kuma属于基于Envoy构建的平台中立型控制平面。Kuma提供多种网络功能,用以保护、观察、路由并增强服务之间的连接性。除虚拟机之外,Kuma还支持Kubernetes。

Kuma的一大特性,在于允许企业用户通过统一的控制平面操作并控制多个隔离网格。对于需要分段并进行集中控制的高安全性用例,这项功能无疑至关重要。

Kuma也相对易于使用,其中预装有捆绑策略,全面涵盖多种通行需求,例如路由、双向TLS、故障注入、流量控制、安全保护等等。Kuma原生与Kong相兼容,因此成为已经使用Kong API的组织的首选Service Mesh方案。

Maesh

Maesh是Containous打造的原生容器Service Mesh,以轻量化设计著称,而且比市面上的其他Service Mesh更易于使用。不同于以Envoy为基础的主流选择,Maesh采用了开源反向代理与负载均衡方案Traefik。

Maesh并没有采用边车容器格式,而是为每个节点提供代理端点。这种方式使Maesh的侵入性较其他Service Mesh更低——除非明确指定,否则其不会编辑任何Kubernetes对象或者修改流量内容。Maesh支持两种配置选项:用户服务对象以及Service Mesh Interface (SMI)对象。

事实上,对SMI(一种新型标准服务网格规范格式)的支持已经成为Maesh的独特特征。如果后续SMI在行业中的采用率有所提高,Maesh将进一步增强自身可扩展性优势,并有望借此缓解供应商锁定问题。

根据Apache软件基金会的介绍,ServiceComb-mesher 是一套“以Go语言编写的高性能Service Mesh实现方案。”Mesher基于Go Chassis(一种流行的Go语言微服务开发框架),因此继承了Go Chassis提供的服务发现、负载均衡、高容错、路由管理以及分布式跟踪等功能。

Mesher采用边车设计方法;每项服务都对应专门的Mesher Sidecar代理。开发者能够与Mesher进行交互,并通过Admin API查看运行时信息。Mesher支持HTTP与gRPC,能够移植到多种不同的基础设施类型,包括Docker、Kubernetes、虚拟机以及裸机环境。

Network Service Mesh (NSM)

Network Service Mesh (NSM)属于专为电信公司及互联网服务供应商(ISP)构建的Service Mesh,可提供向Kubernetes添加底层网络功能的层。NSM目前为云原生计算基金会的沙箱孵化项目。

根据NSM说明文档的介绍,“目前,需要运营高级L2/L3用例的多层网络运营商,往往很难找到适合其下一代架构的容器网络解决方案。”

为此,NSM在构建过程中会充分考虑到不同的假设性条件,包括强调“跨域”协议与异构网络配置。凭借这种能力,NSM成为边缘计算、5G网络以及物联网设备等特定用例中的首选方案。NSM使用简单的API套件实现容器与外部端点之间的通信。

NSM与本份榜单中的其他service mesh动作在不同的层上。VMware将NSM描述为“连接中心”;从GitHub软件包来看,NSM以Envoy为代理基础。

AWS App Mesh

Amazon Web Services推出的 App Mesh 能够为所有服务提供“应用级网络”支持。App Mesh能够管理服务间的所有网络流量,并使用开源Envoy代理控制流入与流出服务容器的流量。AWS App Mesh支持HTTP/2 gRPC服务。

对于已经在容器平台内使用AWS基础设施的用户来说,AWS App Mesh应该是个理想的Service Mesh选项。目前,包括AWS Fargate、Amazon Elastic Container Service、Amazon Elastic Kubernetes Service (EKS)、Amazon Elastic Compute Cloud (EC2)以及Kubernetes on EC2在内的各类AWS平台都提供AWS App Mesh,且无需额外付费。

AWS App Mesh还与AWS生态系统内的各类监控工具相兼容,包括Amazon工具(例如CloudWatch与AWS X-Ray)以及多种第三方服务商的工具。由于AWS计算服务支持AWS Outposts,因此AWS App Mesh可以与混合云及本地部署协同运行。

AWS App Mesh的缺点主要体现在开源或可扩展工具选项较少,可能导致用户遭遇严重的供应商锁定。

Red Hat的OpenShift Service Mesh

OpenShift是Red Hat打造的容器管理平台,可帮助“连接、管理并观察基于微服务架构的应用程序。”作为一套企业级混合云Kubernetes平台,OpenShift已经预装有多项功能,也已经在企业受众中得到广泛采用。

OpenShift Service Mesh以开源Istio为基础,因此能够提供多种Istio控件与数据平面功能。OpenShift同时引入两款开源工具,在跟踪能力与可见性方面对Istio予以增强。OpenShift使用Jaeger进行分布式跟踪,借此更好地跟踪不同服务之间的请求处理方式。
OpenShift还使用Kiali在微服务配置、流量监控以及分析跟踪中加入更强的可观察能力。

选择service mesh时的注意事项

本份榜单列出了多种Service Mesh选项,而且各个项目的发展态势也在不断变化。当然,每种Service Mesh的实现方式互不相同,也在具体功能上有所体现。在实际选择中,大家需要考虑到Service Mesh的侵入度、默认安全水平、平台成熟度以及其他问题。

DevOps团队也应参考以下因素,判断哪种service mesh最适合当前需求:

• 能否脱离Envoy?Envoy拥有充满活力的社区生态系统,属于开源项目而且作为多种Service Mesh的实现基础。其丰富的功能几乎找不到真正全面的替代方案。

• 用例提出哪些现实需求?Service mesh面向微服务架构。如果需要构建单体式应用,大家显然无需使用Service Mesh。另外,如果您的某些应用程序并不使用Kubernetes,最好选择具有良好平台中立性的方案。

• 您的现有容器管理工具中存在哪些依赖关系?已经在容器编排体系中引入某些供应商生态要素(例如AWS EKS、Red Hat OpenShift以及Consul)的用户不妨直接选择原生工具,借此将功能扩展至开源软件包之外。

• 您身处哪个行业?大多数Service Mesh并非针对特定行业进行设计与构建。但是,Kuma拥有强大的网格分区能力,因此特别适合需要遵循严格监管的金融平台。而底层网络电信企业与互联网服务供应商则更适合选择Network Service Mesh。

• 您需要怎样的可观察性?可观察性是Service Mesh中的一项核心指标。需要这类深层定制化功能的用户,可以优先考虑Istio与Consul。

• 您是否关心开放标准?使用开放标准,可以保证您的技术随时跟进时代发展,并通过其他工具完成持续扩展。如果您有这类诉求,不妨选择支持SMI的工具(例如Maesh)或者由基金会支持的项目(例如Linkerd)。

• 您是否关心开发者体验?在选择新工具时,很多企业都会关注运维工程师的实际体验。Linkerd在开发者群体中享有良好声誉,可能符合您的需求。

• 您的团队是否为Service Mesh做好了准备?评估组织内是否具有资源及技能,用以实施Service Mesh技术。这个问题的答案将直接决定您选择基于Envoy的Istio,或者使用OpenShift等经由供应商层进行抽象化的解决方案。

当然,以上事项并不完全,只是为大家提供一点讨论思路。希望您在审视以上列出的各项要点之后能够得到一点启发,探索出微服务网络开发的更多实现途径。

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

    关注

    1

    文章

    864

    浏览量

    74453
  • Mesh
    +关注

    关注

    5

    文章

    200

    浏览量

    29759
  • 微服务架构
    +关注

    关注

    0

    文章

    23

    浏览量

    2950
  • kubernetes
    +关注

    关注

    0

    文章

    223

    浏览量

    8686
收藏 人收藏

    评论

    相关推荐

    什么是Service MeshService Mesh的演化形态

    Service Mesh作为下一代微服务技术的代名词,初出茅庐却深得人心一鸣惊人,大有一统微服务时代的趋势。
    发表于 03-04 11:01 1592次阅读
    什么是<b class='flag-5'>Service</b> <b class='flag-5'>Mesh</b>?<b class='flag-5'>Service</b> <b class='flag-5'>Mesh</b>的演化形态

    赛思互动:企业开展CRM系统需求调研步骤

    基础进行需求调研  在进行CRM系统需求调研的时候,首要的工作就是让企业整理现有的跟CRM有关的流程。在这个环节中,要注意的内容主要有如下几个: 1、流程操作整理:梳理现有的流程中操作繁复、花费时间多
    发表于 07-29 10:00

    浅谈Service Mesh体系中的Envoy

    摘要: 提到Envoy就不得不提Service Mesh,说到Service Mesh就一定要谈及微服务了,那么我们就先放下Envoy,简单了解下微服务、
    发表于 07-12 17:25

    如何开发蓝牙mesh项目?

    需使用网络中的中枢设备(Hub),从而实现了更大的通信范围、灵活性和可靠性,并且是实现局域网络(LAN)物联网(IoT)无线技术的先决条件。蓝牙mesh网络的主要应用包括企业照明设施、托管式信标后端,以及
    发表于 12-29 06:18

    如何在Arm上利用Istio搭建一个基于Kubernetes的Service Mesh平台

    应用拆分成多个微服务,实现各个微服务之间的松耦合,高内聚,如何实现各个微服务的通信,同步等。Service Mesh技术很好的解决了这些问题,Service Mesh通过代理技术,使各
    发表于 03-30 10:59

    基于Web Service构建分销管理系统

    阐述了Web Service的技术要点和体系架构。针对企业分销管理中存在的问题和需求,并提出采用Web Service技术构建一个分销管理系统。首先描述了系统的体系结构,然后详细阐述了
    发表于 08-24 11:04 10次下载

    什么是Universal Service

    什么是Universal Service  英文缩写: Universal Service 中文译名: 普遍服务 分  类: IP与多媒体 解  释: 指电信
    发表于 02-23 09:43 763次阅读

    Service Mesh服务网格新生代

    服务网格 Service Mesh,服务网格,也有人翻译为服务啮合层。这貌似是今年才出来的新名词?在2017年之前没有听过,虽然类似的产品已经存在挺长时间。 什么是Service Mesh
    发表于 09-27 11:15 0次下载
    <b class='flag-5'>Service</b> <b class='flag-5'>Mesh</b>服务网格新生代

    Mesh、桥接还是高端路由 哪种更好更划算

    方式,或者直接购买那些更贵的穿墙王路由器,哪种更好更划算呢? 其实Mesh的普及并不奇怪,看看现在的入门级路由器,在处理器、天线等方面的配置和之前的中高端能差到哪儿去?一些当年的高端技术进入入门级市场还是很常见的。那么,作为高
    发表于 08-13 11:47 1.1w次阅读

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

    各个细分行业和领域的组织机构正在持续的加速采用微服务架构。随之而来的是容器的使用以及端点和服务通信的爆炸式增长。企业内部的复杂性和不确定性正在不断增加。
    的头像 发表于 12-25 17:49 997次阅读

    Service Mesh和API网关正在逐步融合

    1 原本清晰的界限:定位和职责 2 哲学问题:网关访问内部服务,算东西向还是南北向? 3 Sidecar:真正的重合点 4 BFF:把融合进行到底 5 总结 关于 Service Mesh
    的头像 发表于 10-10 16:39 1171次阅读

    Service Mesh是什么?

    在了解Service Mesh之前,我们先来讨论下这样一个问题:“微服务架构的核心技术问题是什么?“。 我们知道在将整个软件系统架构升级为微服务模式以后,服务(这里是指独立对外提供服务的进程
    的头像 发表于 03-23 14:07 724次阅读
    <b class='flag-5'>Service</b> <b class='flag-5'>Mesh</b>是什么?

    Service进阶详解

    上节我们学习了Service的生命周期,以及两种启动Service的两种方法,本节继续来深入了解Service中的IntentService,Service的使用实例:前台服务与轮询的
    的头像 发表于 04-06 09:29 624次阅读
    <b class='flag-5'>Service</b>进阶详解

    什么是MeshMesh组网拓扑结构浅析

    什么是MeshMesh组网拓扑结构浅析  Mesh(网状结构)是一种网络拓扑结构,它由多个节点相互连接而成,每个节点都可以直接与其他节点通信。与其他拓扑结构如星型拓扑结构和总线拓扑结构相比
    的头像 发表于 02-04 14:07 2625次阅读

    Mesh组网的主要特点 mesh组网需要接网线吗 怎么进行有线mesh组网?

    依赖中心节点控制整个网络。这种去中心化结构使得Mesh网络在大规模部署时更加灵活和可靠。 2. 自组织性:Mesh网络可以自动发现和加入新的节点,形成网络拓扑结构,无需人为干预。当一个节点加入或离开网络时,其他节点会相应地重新配
    的头像 发表于 02-04 14:07 2799次阅读