了解我们在中国开展业务的承诺。 阅读全文

服务网格是什么?

服务网格是一种专用基础架构层,可为分布式系统中的微服务提供网络连接、安全防护和监测能力。它的工作方式是对服务间通信的复杂性(例如负载均衡、熔断、流量转移和重试机制)进行抽象化处理。

定义服务网格前,需要先定义微服务。如果您不了解微服务的工作方式,那么解释服务网格就毫无意义,这就像在和一个没有听说过飞机的人解释头等舱和经济舱的区别。服务网格是一种技术,旨在提升基于微服务的应用程序的运行效率,但也有人认为它们往往会使事情变得复杂。

了解微服务

微服务是一种现代的软件应用程序架构方法,在此架构中,应用程序被拆分为松散耦合的较小组件,即“服务”。这些微服务共同提供应用程序的整体功能。此方法与传统“单体”应用程序架构形成了鲜明对比,后者将所有功能整合到一个软件中。

Netflix 是微服务的一个著名示例。十年前,Netflix 还是一个统一、庞大的软件应用程序。它的每项功能都位于一个庞大的代码库中。这种架构带来的问题是,修改应用程序的某个部分意味着重新部署整个应用程序——对于一款业务繁忙且具有重要商业价值的软件来说,这并不是理想的情况。

在迁移到微服务架构后,Netflix 从内容管理到帐户管理、播放器等的每个领域都作为一项独立的微服务而存在。实际上,如果我们想在这里进行精细化,那么其中每个领域都可以包含多项微服务。开发人员可以独立处理每项微服务。他们可以更改、扩展或重新配置微服务,而不必担心影响到其他微服务。理论上,如果一项微服务出现故障,它不会导致应用程序的其余部分停止运行(尽管存在一些例外情况)。

服务网格是什么?

在对微服务架构有了基本了解之后,我们不妨来考虑一下:在尝试使一个基于微服务的应用程序稳定可靠地运行时,可能会出现哪些挑战?这种架构能够将应用程序拆分为一系列独立的服务,这一点确实具有革命性意义,但也带来了一系列难题。

如果没有某种机制来确保微服务知道其他微服务的位置、通信方式以及如何让管理员了解应用程序内部的动态,那么微服务之间的通信可能会出现问题。例如,Netflix 中的流媒体微服务如何知道在哪里查找有关订阅者帐户的信息?这就是服务网格的用武之地。但是,为了安抚那些不喜欢服务网格的人,有必要指出的是:实现此功能可以不使用服务网格。

服务网格是一个基础架构层,用于管理网络上微服务之间的通信。它可以控制应用程序内对服务的请求。服务网格通常还提供服务发现、故障转移和负载均衡功能以及加密等安全功能。

服务网格是如何工作的?

服务网格的作用是为基于微服务的系统增加安全性、监测能力和可靠性。它通过使用称为“sidecar”的代理来实现这一目标,这些代理会附加到每项微服务上(也存在基于 eBPF 的“非 sidecar”服务网格)。sidecar 在 OSI 堆栈的第 7 层运行。如果应用程序基于容器,则 sidecar 会附加到每个容器或虚拟机 (VM)。代理随后在“数据平面”和“控制平面”中运行。

数据平面包含在其 sidecar 代理旁边运行的服务。对于每个服务/sidecar 对,服务负责处理应用程序的业务逻辑,而代理位于服务与系统中的其他服务之间。sidecar 代理负责处理进出服务的所有流量。它还提供双向传输层安全 (mTLS) 等连接功能,使请求/响应消息流中的每项服务都能验证对方的证书。

控制平面是管理员与服务网格进行交互的地方。它负责处理代理配置和控制,执行服务网格的管理,并提供设置和协调代理的方法。管理员通过控制平面来实施访问控制策略,并为微服务之间传输的消息定义路由规则。控制平面还支持导出日志和其他与微服务监测能力相关的数据。

服务网格的数据平面和控制平面协同工作,可实现:

  • 安全性:向微服务分发身份验证和授权等安全策略,并自动加密微服务之间的通信。服务网格可以通过其控制平面管理、监控和实施安全策略。

  • 可靠性:通过控制平面中的 sidecar 代理来管理微服务之间的通信,并提高过程中服务请求的可靠性。服务网格还可以处理故障的负载均衡管理,所有这些举措都旨在提高可靠性并现实高可用性 (HA)。

  • 监测能力:向系统所有者展示微服务的性能。服务网格可以发现处于“高资源利用率”或存在故障风险的微服务。服务网格的控制平面会收集有关微服务与其他应用程序组件之间交互的遥测数据。

Kubernetes 和服务网格集成

作为广泛采用的容器编排平台,Kubernetes 在管理微服务方面发挥着关键作用。将服务网格与 Kubernetes 集成可以增强 Kubernetes 生态系统中运行的微服务的控制力、安全性和监测能力。与 Istio 和 Linkerd 等服务网格相结合时,Kubernetes 可实现自动服务发现、负载均衡和故障恢复。Kubernetes 和服务网格具有开源性质,这意味着企业可以从庞大的社区和丰富的工具中受益,这些资源会不断演进来为云原生应用程序提供支持。通过将 Kubernetes 用作容器管理的基础并与服务网格相结合,企业可以更好地监测服务到服务的通信、降低服务交互中的延迟,并提高整体系统恢复能力。

服务网格与微服务的对比

微服务与服务网格很容易被混淆。微服务是基于微服务的系统的组成部分。服务网格可以将它们连接起来。顾名思义,服务网格如同连接织物般覆盖在微服务之上。换句话说,服务网格是一种可实现的“模式”,用于管理驱动基于微服务的应用程序的互连和相关逻辑。

为什么您需要服务网格?

随着单体应用程序变得越来越大、越来越复杂,其性能会越来越差。在这种情况下,将应用程序拆分为微服务便成为顺理成章的选择。这种方法与敏捷、DevOps 和持续集成/持续部署 (CI/CD) 等现代应用程序开发方法论高度契合。软件开发团队及其测试和运营合作伙伴可以专注于为各个独立的微服务开发新代码。通常,这对于软件和整体业务都是最有利的。

然而,随着基于微服务的应用程序中服务数量的不断增加,管理所有连接会变得充满挑战性。利益相关者可能难以跟踪每项服务需要如何与其他服务建立连接和进行交互。监控服务运行状况变得困难。当需要连接和管理数十甚至数百个微服务时,可靠性也可能成为一个问题。

服务网格通过允许开发人员在基础架构的专用层中处理服务间通信来解决这些问题。开发人员可以通过控制平面中的代理管理整个应用程序,而无需逐一处理数百个连接。服务网格可提供高效的管理和监控功能。

简而言之,服务网格的核心优势包括:

  • 简化了微服务之间的通信

  • 能够更轻松地检测和了解通信错误

  • 通过加密、身份验证和授权来提高应用程序安全性

  • 通过更快地开发、测试和部署新的微服务来加快应用程序开发速度

服务网格挑战

然而,服务网格本身也会带来一些特有的难题。例如,服务网格的层级成为了系统中又一个需要基础架构、维护、支持等的部分。它们可能会消耗资源,影响整体网络和硬件性能。添加 sidecar 代理可能会让本已十分复杂的环境变得更加复杂。通过 sidecar 运行服务调用会增加一个步骤,这可能会降低应用程序的运行速度。可能存在与多个微服务架构之间的集成相关的问题。尽管存在服务网格的管理机制以及服务之间的消息传递机制,网络本身仍然需要管理。

通过自动化降低服务网格中的延迟

服务网格的主要问题之一是,由于增加了负责处理服务通信的代理层,可能会导致延迟增加。不过,Istio 和 Linkerd 等服务网格具备自动化功能,因此可以缓解这些延迟问题。通过智能流量管理和自动重试,服务网格可以简化通信路径,确保将延迟降至最低。此外,Istio 还使用 Envoy 来优化路由决策,借助自动化功能绕过潜在的网络瓶颈来提升服务间的响应速度。这可确保应用程序始终保持高性能,即使在延迟已成为重大问题的大型云原生环境中也不例外。得益于开源社区的持续更新和优化,现代服务网格能够更好地在高级流量管理与最低开销之间取得平衡。

结论

服务网格可以帮助您通过微服务取得成功。该技术提供了一个急需的基础架构层,用于处理服务间的通信与相关的管理功能。以正确方式实施的服务网格可以为基于微服务的应用程序和系统提供安全性、可靠性及监测能力。

常见问题

服务网格和传统 API 网关在管理分布式系统中的网络流量方面发挥着不同的作用。服务网格专注于微服务之间的内部通信,可以在不更改应用程序代码的情况下提供对流量管理、负载均衡和监测能力的精细控制。而 API 网关充当外部客户端的集中入口点,负责为面向客户端的 API 处理身份验证、授权和请求路由等任务。

服务网格架构通过提供一系列功能来确保实现安全通信和数据保护,从而增强微服务中的安全性。一项关键的安全功能是双向 TLS (mTLS),它能够实现服务之间的加密通信。此外,服务网格还支持精细的访问控制策略,允许管理员在服务级别定义和实施访问权限。

实施服务网格初期看起来很复杂,但从长远来看,其带来的好处超过了最初的复杂性。

选择符合您的需求和基础架构的服务网格解决方案。每个服务网格都有自己独特的功能和集成,因此需要根据您的具体需求进行评估。可以从基本设置开始:在非生产环境中或有限的微服务子集上部署服务网格。根据贵企业的要求定义访问控制策略、流量路由规则和应用程序安全配置。

当您对服务网格的稳定性和性能充满信心后,逐步将其推广到其他微服务和环境中。根据反馈、性能指标和不断变化的需求,持续迭代和改进您的服务网格设置。

在确定满足您需求的最佳服务网格时,需要考虑以下一些因素:

  • 社区支持:寻找拥有活跃社区支持并且能够提供宝贵的资源、文档和社区驱动型贡献的服务网格。

  • 易于使用:选择提供直观工具、清晰文档和用户友好界面的解决方案,以简化采用和持续维护。

  • 功能集:评估每个服务网格的功能,并评估其是否符合您的需求。寻找流量管理功能、监测能力工具和安全功能。

  • 兼容性:确保服务网格与您的现有基础架构兼容,包括容器编排平台和云环境

  • 性能和可扩展性:选择能够处理预期工作负载并随着基础架构增长而扩展的解决方案。

客户为什么选择 Akamai

Akamai 是一家致力于支持并保护在线商业活动的网络安全和云计算公司。我们卓越的安全解决方案、出色的威胁情报和全球运营团队可提供深度防御,保护各地的企业数据和应用程序。Akamai 的全栈云计算解决方案可在海外分布广泛的平台上提供高性能且经济实惠的服务。众多全球企业信赖 Akamai,凭借我们卓越的可靠性、扩展性和专业技术,企业能够从容拓展业务。

相关博文

为现代云规划路线
Akamai 宣布在全球范围内推出新站点,为商业客户提供新服务,并推出增强云计算服务性能的改进措施。
我们如何才能满足 SaaS 的云需求?
Akamai 用于交付 SaaS 应用程序的全新云原生方法可以同时满足您的成本和性能需求。
借助低延迟微服务,改善游戏玩家体验
在提供对流畅游戏体验至关重要的低延迟微服务方面,大规模分布式 Akamai Cloud 具有得天独厚的优势。