Tanzu Service Mesh为何而来
微服务带来的挑战
为了应用程序实现灵活的架构选择、改进的规模的灵活缩放和可用性、更快的发布节奏以及更轻松的维护,越来越多的企业正在从单体应用程序转向分布式微服务架构。
然而,迁移到微服务架构会带来两组挑战。
- 分布式系统的挑战
将单体应用程序分解为微服务会产生分布式系统。应用程序和平台团队现在需要管理许多离散服务之间通信的不同方面,包括以下活动:
-
建立和维护对服务状态的操作可见性。
-
跨分布式微服务连接、路由、负载平衡和保护通信。
-
减少服务链中服务之间的延迟,这会影响整个应用程序并影响用户体验。
-
在由用不同编程语言编写的许多不同服务组成的应用程序中进行故障排除和确定问题的根本原因。
- 多云挑战
企业越来越多地将他们的应用程序迁移到云中,并且通常选择在多个平台或云上部署应用程序。多平台和多云应用程序部署会造成运营孤岛。此外,他们经常使用不同的 API,这增加了复杂性。
企业必须花费大量资源来满足管理服务的不同要求,具体取决于工作负载的运行位置。这大大削弱了微服务的价值。
服务网格 Service Mesh的应对
服务网格是微服务应用程序之上的抽象层,提供以下功能:
• 服务到服务通信(包括服务发现和加密)
• 可观察性(监测和追踪)
• 弹性(断路和重试)
• 流量管理(路由、负载平衡)
• 安全(授权、加密)
在服务网格出现之前,客户端库和应用程序编程接口 (API) 网关被用来解决微服务架构引入的一些问题。然而,这些解决方案也有其自身的挑战。
-
服务网格通过将必要的功能(服务发现、连接加密、错误和故障处理以及延迟检测和响应)抽象到一个称为代理的单独实体来解决分布式微服务带来的一些挑战。
-
代理位于每个微服务的前面,所有入站和出站通信都流经它。代理提供上述功能和用于可观察性的指标。
基本服务网格无法解决的挑战
尽管大多数服务网格实现在连接服务和保护服务到服务通信方面证明是有效的,但由于固有的局限性,它们并没有解决这些挑战:
-
范围有限。服务网格只关注服务。它们没有将范围从服务到服务的通信扩展到用户到服务到数据的通信。然而,应用程序流不限于服务间通信。基本服务网格不处理完整的端到端请求,因为它们从最终用户通过服务流向数据。
-
与高度分布式异构平台相关的挑战。在多云、多平台环境中,每个云或平台都有自己的服务网格技术,并使用不同的操作和安全模型。基本服务网格不提供跨部署在多个云或平台中的应用程序的相同功能(流量管理、安全性和可观察性)。
-
联邦挑战。基本服务网格不提供跨不同管理边界、技术和服务网格的安全性、控制和可观察性。基本服务网格不提供服务网格之外的连接、控制、可观察性和安全性。
-
自动缩放。基本服务网格不提供基于资源使用情况或系统测量指标的服务自动扩展。
-
衡量性能质量。基本服务网格没有提供一种有效的方法来衡量应用程序的运行情况。而行业实践现在将服务水平目标作为应用程序性能质量的基本衡量标准。
Tanzu Service Mesh简介
Tanzu Service Mesh 是什么
Tanzu Service Mesh是一种企业级服务网格,通过将服务网格服务扩展到 Kubernetes 集群之外并提供跨异构平台和技术(包括虚拟机和其他服务网格)的统一操作层,解决了与分布式微服务应用程序相关的挑战。
大多数服务网格实现只关注服务而忽略了用户和数据。用户使用服务来访问数据,如果应用程序运行在多集群或多云环境中,除了服务本身,仍然需要集中管理用户、服务和数据之间的通信和访问,当然,这些都无需管理底层物理基础设施。
Tanzu Service Mesh 将服务网格从单个集群和单个云的物理边界和限制中提升。借助 Tanzu Service Mesh,可以控制、测量、保护、扩展和操作应用程序,无论其组件部署在何处、在多个集群或多个公共云中。
Tanzu Service Mesh 通过将这些对象排列在称为全局命名空间的逻辑组中,为分布式应用程序中的资源提供服务网格功能。全局命名空间不绑定到单个集群,而是连接两个或多个集群之间的资源。每个全局命名空间都为其对象管理服务发现、可观察性、加密、策略和服务级别目标 (SLO),而不管它们驻留在何处:在多个集群、站点或云中。
VMware Tanzu™ Service Mesh™ 基于 VMware NSX® 构建,是一种企业级服务网格解决方案,可为要求最苛刻的多集群和多云环境中的所有集群和云中的微服务、最终用户和数据提供可靠的控制和安全性。
Tanzu Service Mesh的主要亮点
借助 Tanzu Service Mesh,应用程序和运维平台团队可以获得企业级服务网格,他们可以使用它来完成以下任务:
• 跨多个集群和云扩展服务网格功能(发现、连接、安全和可观察性)。
• 支持跨多个集群、多个云以及具有全局命名空间的混合云环境中的分布式微服务应用程序的开发和管理。
• 控制和观察服务之间的流量和 API 调用。
• 跨集群和云实施一致的应用层安全策略。
• 为应用程序提供一致的管理模型(连接性、安全性、可观察性)。
• 通过基于服务网格指标跟踪服务级别目标 (SLO) 来衡量应用程序性能。有关更多信息,请参阅 Tanzu Service Mesh 文档中的服务级别目标。
• 提供管理应用程序部署、升级、A/B 和金丝雀测试以及安全补丁的功能。
• 与自动化管道和工作流集成。
• 支持第三方 Kubernetes 平台(如 Amazon EKS)。
• 与 VMware Tanzu™ Mission Control™、VMware® Enterprise PKS 和 VMware Tanzu™ Kubernetes Grid™ 集成以提供无缝的用户体验。
• 包括 Tanzu Service Mesh Service Autoscaler,这是一个基于服务网格的自动缩放器。
Tanzu Service Mesh对不同企业团队的好处
Tanzu Service Mesh 帮助运维平台和应用程序团队跨多个集群和云高效连接和保护他们的微服务。
-
Tanzu Service Mesh 帮助 DevOps 工程师、站点可靠性工程师 (SRE)、平台可靠性工程师 (PRE) 和平台运营商实现跨多个应用平台和公共云的一致的运营控制、策略、应用性能和可见性。
-
安全工程师、SecOps 工程师和合规所有者可以使用该产品配置灵活的业务相关安全和合规策略,以保护和监控应用程序和数据并默认启用合规性。
-
应用开发者和服务所有者可以使用 Tanzu Service Mesh 更快地部署应用,更轻松地添加功能,为应用用户提供更多价值和更好的体验。
Tanzu Service Mesh的架构
Tanzu Service Mesh 提供了一个全局控制器和观察器,平台团队可以使用它来连接和保护最复杂的企业架构中所有集群和云中的微服务。从高层次来看,Tanzu Service Mesh 具有以下架构:
• 全局控制者和观察者。一组在 VMware SaaS 中运行并提供差异化控制、安全性、可见性和自动扩展功能的微服务。
• 本地控制器。本地控制平面组件在本地或公共云中的每个客户集群中运行,并在集群与全局控制器断开连接时提供容错能力。
• 边车Sidecars。 数据平面组件在本地或公共云中的每个客户集群中运行,并处理服务网格内的东西向流量。
• 入口和出口网关。 数据平面组件在本地或公共云中的每个客户集群中运行,并处理进出服务网格的南北流量。
Tanzu Service Mesh关键概念
VMware Tanzu Service Mesh Concepts 文档提供了有关基于 VMware NSX® 构建的 VMware Tanzu™ Service Mesh™ 的概念信息。
- 全局命名空间Global Namespaces
全局命名空间是 Tanzu Service Mesh 中的一个独特概念,它定义了一个应用程序边界。全局命名空间将构成应用程序的资源和工作负载连接到一个虚拟单元中,为跨多个集群和云的应用程序提供一致的流量路由、连接、弹性和安全性。每个全局命名空间都是一个隔离域,提供自动服务发现并管理该全局命名空间内的服务标识。 - 资源组Resource Groups
资源组是共享特定特征的特定类型集群资源的集合。资源组有助于在单个全局命名空间或整个组织中实施策略并监控资源的性能。 - 集群Clusters
Tanzu Service Mesh 支持 Kubernetes 集群。在 Kubernetes 中,集群是一组物理或虚拟机,称为节点,用于运行容器化应用程序。 Tanzu Service Mesh 为跨多个集群的资源提供可靠的控制和安全性。 - 节点Nodes
节点是在服务网格内的集群上运行一个或多个服务实例(特定版本服务代码的实例)的物理或虚拟机。 - 服务Services
服务是一个抽象概念,它封装了可以在分布式应用程序中运行的业务逻辑。服务构造由服务版本和服务实例组成。每个服务映射到多个服务版本,每个服务版本映射到多个服务实例。 - 公共服务Public Services
公共服务是一种在其全局命名空间之外公开服务以使外部最终用户能够访问该服务的方式。
遗憾的是,Tanzu Service Mesh现在暂时还是以SaaS的方式提供,且并不能支持大中华地区。