一、什么是云原生网络功能?

云原生网络功能 (Cloud Native Function),也称为容器(化)网络功能,是一种旨在容器内运行的网络功能,容器是捆绑代码的标准化软件单元,因此应用程序可以在不同的计算环境中无缝运行。

CNF是网络功能“软件化”的最新进展。


二、什么是网络功能?

网络功能是网络中定义明确的节点或构建块,负责促进特定行为。网络功能的示例包括路由、自然地址转换 (NAT)、域名服务 (DNS)、负载平衡、防火墙和数据包检查等。

最初,通信服务提供商 (CSP) 使用物理网络功能 (PNF) 或为促进特定功能而构建的有形硬件对象。为了寻求更好的前进方向,CSP 最终开始将网络功能数字化,虚拟网络功能 (VNF) 应运而生。

虚拟网络功能(VNF)使CSP和其他类型的公司能够通过使用软件而不是硬件来为客户服务并满足他们的需求,从而更加灵活地运营。虚拟网络功能(VNF),企业通常需要更少的硬件和更少的能耗来实现其目标,可以节省大量的维护成本。由于其数字信息的特性,虚拟网络功能(VNF)可以更轻松地完成升级和推出新服务。

虽然虚拟网络功能(VNF)的出现确实帮助企业减少了资本支出并加快了服务的速度,不像物理网络功能 (PNF)需要漫长的等待周期,企业虽然可以使用现成的商用服务器运行网络功能(VNF),但仍然需要一些准备时间来实现。对于实时数据处理和决策的系统而言,仍然不能满足这类需要。

这些因素导致了网络功能发展的下一阶段的到来:Cloud Native Function,云原生。 


三、云原生是什么意思?

云原生是一种(有点)新的软件开发方法,在这种方法中,企业也可以使用云中的工具、资源和其他服务完全在云中构建、部署和运行应用程序。

借助云原生(CNF),可以进一步抽象物理硬件,并利用云服务的一些优势,包括弹性、速度、可扩展性和灵活性等。


四、云原生的主要特性

云原生有一些非常常见的特性以及它们提供的好处。


4.1  微服务

以往的软件开发,只有一台计算机,网络也很原始,软件都集中在巨大的、单一的组件上,旨在一次性解决所有问题。现代方法是将问题分解,让每个子问题成为微服务的责任,这中方式有很多好处:

  • 以将预先打包的开源组件实现为微服务,无需对它们进行任何更改。
  • 拥有许多小组件使其更易于扩展。
  • 微服务使重用变得更加简单。通过在开发过程的一开始就坚持零依赖和明确定义的API,一个优秀的微服务组件,不关心它周围发生了什么,或者在什么上下文中被使用。
  • 团队开发要简单得多,因为一旦定义了API,不同团队就可以独立并行开发不同的微服务。

4.2  容器化

最初,所有软件都是直接在计算机操作系统上开发和运行的。这导致了问题:

  1. 资源与其他应用程序共享,有时会有资源利用的冲突。
  2. 统一所有环境(开发、测试、生产)的操作系统、库或其它环境的更改,通常很难做到的,有时甚至是不可能做到。
  3. 当进行低级别更改(例如对配置文件)时,随着时间的推移,它们会导致该物理服务器独有的环境,使支持和管理成为一场噩梦。

这个问题的第一个解决方案是虚拟化。操作系统没有运行应用程序,而是运行了另一个运行应用程序的操作系统副本。大型服务器可以运行多个虚拟机,每个虚拟机都可以运行一个应用程序,我们不必担心它与其他应用程序发生冲突,因为它们在不同的虚拟机上。但虚拟机 (VM) 也存在问题:

  1. 因为虚拟机通常是一个实时操作系统的完整映像,上面有一层薄薄的应用程序,所以它的大小通常为GB级别范围。
  2. 除了大得笨拙之外,VM启动需要很长时间才能加载和运行。
  3. VM可以隔离CPU和内存,但仍然在不知情的情况下共享网络和 IO。
  4. 虚拟机仍然需要正常操作系统需要的所有安全性和其他补丁以及其他东西。

容器化是更近一步的优化方案。容器化可以获得足够的操作系统服务来运行应用程序,还可以拥有自己的库等,但实际上与许多其他容器共享操作系统和硬件。容器不会自动感知同一服务器上的其它容器。容器不仅可以快速启动,而且可以通过编程方式创建和删除。容器由容器管理器运行,有丰富的API和工具可以完成对容器的控制。


4.3  服务注册

微服务和容器化带来了另外的复杂性问题。过去每个人都知道所有应用程序在哪里,因为只有服务器数量和功能比较明确。但是对于微服务和容器化,应用程序是无法通过硬编码方式找到其它组件的名称,而是必须其它方式找到它们并连接它们。

这就是服务注册中心的作用。服务注册中心是一个数据库,旨在存储应用程序级通信的数据结构,并作为应用程序开发人员查找模式和注册应用程序的中心位置。换句话说,它是微服务声明其存在、可用性和功能的地方。虽然解决了组件服务发现的问题,但也引入了单点故障问题。


4.4  无状态服务

传统上,在应用程序开发中,持久化是一个核心问题。持久化意味着应用程序会将改变的数据保存,甚至会影响未来程序的运行预期。容器化不擅长持久化数据,所以很多服务是“无状态的”,这意味着它们没有存储数据或者依赖历史数据的地方。这也意味着容器没有关于它们正在做什么、已经做什么或应该做什么的可靠存储的本地信息。相反,他们使用有状态服务来跟踪所有这些。当然有一些场景,例如在内存中缓存数据等。那些涉及共享的资源,则依赖于有状态的服务来保证它们的正常运行。

无状态服务非常受欢迎,并且有充分的理由:如果应用服务确实是无状态的,我们可以根据需要运行更少或更多的容器来实现它,而不必担心可扩展性。


五、云原生功能的主要优势

随着5G的不断推出和越来越多的工作负载在边缘处理,越来越多的公司正在摆脱虚拟网络功能并采用CNF——如果不将VNF和CNF 相互结合使用的话。这是因为CNF带来了很多好处,包括:

提高灵活性和敏捷性,因为推出新服务或升级不再涉及更换任何硬件。相反,企业可以创建一个新的微服务并将其推广到现有的基础架构上,从而加快上线时间并降低与以传统方式实施新产品相关的成本。云原声功能的最大好处是,它使我们摆脱了在单一、价格过高的硬件集上运行的单一、极其复杂的应用程序的束缚。可以混合搭配、扩大和缩小规模,将部署克隆到新市场,而不是在工程部署方面花费大量的无效时间。

  • 降低成本。因为程序部署需要的硬件比支持VNF所需的硬件还要少。由于按需使用付费和按需的可扩展性,应用程序始终能够访问所需要的基础设施,同时只需为确切使用的硬件资源付费。
  • 改进的可扩展性。因为容器化的微服务可以根据需要横向或者纵向扩展。由于云的特性,很容易部署更多的硬件资源,支持大量流量或并行用户涌入,基本上可以认为我们拥有无限可扩展性。
  • 提高容错性和可靠性。如果一个容器因任何原因而离线,运维人员可以立即启动另一个容器。由于升级可以在微服务级别进行,因此大型应用不必冒大规模中断或安排系统停机的风险。这反过来又提供了更可靠的产品套件和更好的客户体验。

六、云原生功能的技术挑战

虽然云原生功能的好处很多,但如果打算尝试它,则需要牢记一些注意事项:

  1. 需要重新架构现有的网络功能。例如,如果使用任何单体应用程序,则需要将它们分解为微服务。
  2. 无法在一夜之间完全成为云原生。当开始向云原生功能过渡时,需要弄清楚如何确保它们可以与现存的虚拟网络功能交互通信。
  3. 确保数据平台在规模上具有高性能。确保平台可以在边缘处理数据,而不是在数据层和应用层之间来回移动数据。