云原生架构:服务网格、无服务器计算及消息服务解析
立即解锁
发布时间: 2025-08-24 02:00:55 阅读量: 1 订阅数: 2 

### 云原生架构:服务网格、无服务器计算及消息服务解析
#### 1. 服务网格的安全与可观测性
证书管理在微服务架构中带来了额外的开销,并且需要构建更多的能力。其需求不仅是保障系统内微服务之间的通信安全,还包括处理边缘认证。不同的挑战往往需要不同的解决方案。
服务网格通过其安全管理器组件解决了这些问题。安全管理器全面处理安全事务,在大多数服务网格中,它会为边车(Sidecar)配置证书,还包含证书颁发和分发实体,用于创建新证书并分发给边车。所有微服务通过边车进行通信,而非直接通信,这样服务网格就能使用证书保障所有内部通信的安全。此外,大多数服务网格具备边缘认证能力,可以验证传入的请求。这种认证功能通常通过被动验证安全令牌和声明,或者主动与身份提供者(IdP)通信来实现。在被动验证中,传入的服务调用需要提供认证和授权令牌(如嵌入在 REST HTTP 请求中的 JWT),验证可以是隐式的(通过检查内容)或显式的(通过与颁发者验证令牌);在主动验证中,客户端凭证会与中央 IdP 进行检查,以确定访问权限或声明。
在可观测性方面,在微服务世界中,由于调用深度可能涉及数十个服务,很难了解顶级服务调用中各个微服务的性能和精度。因此,拥有分布式跟踪功能,能够在一个界面上查看跨微服务的调用(从每个源到每个目标)是必要的。此外,将应用程序日志与跟踪关联起来,并根据 P9x 性能指标触发它们,是实时全面了解任何基于微服务的架构的有效方法。最后,监控每个运行中的微服务实例的性能并收集指标,有助于工程师更好地理解微服务的运行时特性。
服务网格利用边车、安全管理器和流量管理器的强大功能,提供了许多这样的功能。它们通过在请求流经服务网格时添加“跟踪数据”,利用边车提供的流量数据来实现分布式跟踪解决方案。这些跟踪数据使边车能够向分布式跟踪应用程序报告服务调用信息,该应用程序将各种服务调用连接成一个层次结构进行分析。
边车通常会从主应用程序卸载日志记录工作。它们可以记录微服务的输入和输出,或者从容器/虚拟机收集应用程序日志。边车可以轻松整理和呈现日志,并将服务调用与日志匹配起来。这种关联能力是一个出色的特性,极大地有助于可观测性。此外,边车还可以维护服务调用计数、响应时间、失败率等指标,因为它们代理微服务的流量请求和响应。这些数据可以被收集、整理并展示在仪表板上,以了解系统的整体健康状况、性能和状态。
直到 2020 年,在云环境中实现可观测性存在竞争标准——OpenTracing 和 OpenCensus。到 2020 年年中,行业达成共识,这些标准合并形成了 CNCF 下的 OpenTelemetry。
#### 2. 服务网格的挑战与现状
服务网格架构中的边车会代理微服务的所有进出流量,这立即引发了性能方面的担忧。原本两个微服务之间的单跳通信现在变成了三跳。如果边车性能不佳,会给系统的整体性能带来严重的开销。此外,将服务网格添加到架构中会增加复杂性,各种新组件的加入增加了支持和维护成本。而且,在自动化生成服务网格配置方面缺乏工具,像 Istio 这样流行的服务网格需要大量的配置,但目前没有工具可以对每个微服务的配置进行模板化、填充和维护。
不过,服务网格领域正朝着标准化方向发展。行业内一些优秀的贡献者和积极的参与者推动了这一进程。从服务网格的可选方案来看,只有少数边车选项在行业中流行,这表明我们正在接近标准化。除了标准化的进展,边车的性能也在不断提高。对最新边车设置的实现进行的多次测试表明,边车的效率很高,使用它们带来的性能损失很小。测试还表明,在高负载下,基于服务网格的系统比不使用服务网格的系统性能更好,这得益于更高的可扩展性和更高的吞吐量以及更少的失败率。随着新工具的出现和标准化的推进,服务网格的维护复杂性也在不断降低。
#### 3. FaaS(无服务器计算)
在微服务的部署和运行模式中,除了 IaaS(在云中构建和控制虚拟机的模型)和 iCaaS(创建容器镜像并依赖云服务提供商的容器编排选项的模式),还有 FaaS(函数即服务,通常称为无服务器计算)。在无服务器计算中,工程师看不到底层的计算资源。应用程序以代码片段的形式构建,并提交到一个运行它们的平台。除了指定计算和内存要求外,应用程序对底层基础设施没有控制权。微服务的无服务器架构类似于事件驱动的架构风格,无状态服务在某些事件发生时被调用。
无服务器计算越来越受欢迎,原因如下:
- 消除了维护基础设施、扩展和调整的开销。
- 在低负载下,它们可以共享基础设施,运行成本比专用服务器更低。
- 按使用量计费,计费更精细(微计费),例如,如果服务每天运行十分钟,则只需支付十分钟的费用。
无服务器计算也符合微服务的目标。无服务器计算的基本单位——函数,默认是无状态的,并且彼此完全独立,甚至不知道自己的位置。FaaS 具有高度的弹性,能够快速按需扩展,也能在短时间内收缩到零。函数是处理突发流量在短时间内变得计算密集的用例的优秀编程模型。然而,运行函数的成本并不容易推断,许多因素(如调用频率、执行持续时间和使用的内存)都会影响每月的账
0
0
复制全文
相关推荐










