什么是微服务?
微服务是指一种现代软件开发方法,该方法涉及将大型应用程序分解为较小的、独立的、松散耦合的服务。云服务提供商(包括亚马逊、eBay、Netflix 和 Twitter 等知名公司)不是将应用程序实施为传统的整体式软件系统,而是越来越多地将其应用程序作为微服务而不是传统的整体式设计来实现。
微服务的一些优势包括:
-
可伸缩性:微服务可实现更好的可伸缩性,因为单个服务可以彼此独立扩展。这意味着开发人员可以仅扩展或缩减需要它的服务,而不会影响应用程序的其余部分。
-
灵活性: 微服务可以更轻松地对系统进行更改,因为可以在不影响整个应用程序的情况下更新单个服务。这使得采用新技术、尝试不同的编程语言和测试新功能变得更加容易。
-
故障隔离: 由于每个微服务都是一个独立的组件,因此如果一个服务失败,它不会影响应用程序的其余部分。这意味着开发人员可以快速识别和修复问题,而不会影响整个系统。
-
提高开发速度: 微服务使规模更小、更专注的开发团队能够独立处理特定服务。这加快了开发过程,并使管理大型复杂系统变得更加容易。
-
更好的容错能力: 使用微服务,可以更轻松地构建容错系统,因为每个服务都可以设计为独立处理错误。这意味着整个系统的复原能力更强,发生故障的可能性更小。
-
改进的测试: 由于每个微服务都是独立的,因此可以更轻松地测试单个服务。这意味着开发人员可以单独测试服务,从而更轻松地查找和修复错误。
虽然基于微服务的软件架构具有重要优势,但它们会带来巨大的网络开销,因此网络延迟等参数对整体应用程序性能和数据中心成本有重大影响。通过利用运行 Napatech 虚拟化数据平面软件的英特尔 FPGA基础设施处理器 (IPU),服务提供商可以最大限度地提高其网络基础设施的性能,实现原本无法实现的性能水平,同时最大限度地减少其整体数据中心的资本支出和运营支出。
微服务面临的网络挑战
在微服务架构中,网络延迟是一项重大挑战,因为在容器或虚拟机 (VM) 中实现的虚拟化服务通过虚拟网络相互通信。例如,微服务经常相互通信,这可能会导致大量的网络流量。这种增加的网络流量会导致网络拥塞和延迟增加,从而可能对系统性能产生负面影响。同样,在微服务架构中,服务通常需要调用其他服务才能完成任务,每次网络调用都会给系统增加额外的延迟。随着服务数量和系统复杂性的增加,网络调用的数量也在增加,这可能会导致严重的延迟问题。最后,不同的微服务可能使用不同的网络协议进行通信。例如,一个服务可能使用 REST(重新呈现状态传输),而另一个服务可以使用 gRPC(谷歌远程过程调用)。在不同的网络协议之间进行转换会增加系统的延迟。
传统上,虚拟化数据平面完全在软件中实现,其许多计算周期都由运行虚拟交换机 (vSwitch) 来消耗,该交换机在虚拟机之间路由网络流量。由于每个 vSwitch作都需要大量 CPU 周期,因此此架构可能会给系统带来不可接受的延迟,还可能导致系统无法实现所需的整体性能或吞吐量。同时,大量用于运行虚拟数据平面的 CPU 可用于运行应用程序和服务的内核将会减少,从而增加了支持数据中心工作负载所需的服务器数量,并增加了资本支出和运营资本支出。请参见图1。

利用基于英特尔® FPGA IPU的架构
更高效、更具成本效益的系统级架构利用英特尔 FPGA IPU从服务器 CPU 中卸载 vSwitch,从而释放服务器 CPU,用于运行应用程序和服务。
IPU 取代了数据中心服务器中的标准网络接口卡 (NIC),而是在硬件中实施 vSwitch,使用可编程FPGA(现场可编程门阵列)与运行控制平面的通用 CPU 一起运行数据平面。vSwitch 为虚拟机提供行业标准的 API(应用程序编程接口),确保在利用此架构时无需对虚拟机本身进行任何更改。参见图 2。
基于 IPU 的架构为运行基于微服务的应用程序的数据中心提供三项关键优势:
-
超低延迟,最大限度地减少微服务之间的延迟流量;
-
高性能,最大限度地提高系统和应用程序的整体吞吐量;
-
虚拟交换机数据平面不消耗任何服务器 CPU 核心,从而实现服务器 CPU 利用率优化,从而最大限度地减少整体工作负载所需的服务器总数,同时最大限度地降低数据中心资本支出和运营支出。

麻省理工学院分析
为了量化 vSwitch 卸载在现实场景中的优势,麻省理工学院 (MIT) 分析了两个基于微服务的用例的性能,将使用基于软件的传统 vSwitch 和使用 SmartNIC 和 IPU 解决方案领先提供商 Napatech 的英特尔 IPU运行虚拟化数据平面软件获得的结果进行了比较。这两个用例是发布-订阅“发布-订阅”应用,它使用消息传递进行跨多层数据传输,以及由 Web 服务器、内存中缓存和后端数据库组成的三层 TCP 应用。这项基准测试计划的结果记录在 麻省理工学院发表的 文章“运行 Napatech 软件的英特尔 IPU 的微服务基准测试”
发布-订阅应用性能分析
发布-订阅应用程序是“发布-订阅应用程序”的缩写,是分布式系统中常用的一种消息传递模式,用于促进不同组件或服务之间的通信和协调。发布-订阅模式允许异步和解耦通信,其中消息发送者(称为发布者)不需要知道特定的收件人(称为订阅者)。发布-订阅应用程序适用于以下用例:
-
座位预订系统 ,用于创建平面图,为其分配座位,然后管理实时座位预订活动。当客户购买门票时,发布-订阅系统会随时随地实时更新平面图,并使分布式缓存系统保持同步。客户最终永远不会要求座位,只是为了发现有人在他们还在浏览/购物阶段就买了它。
-
一种教育工具 ,允许学生通过基于 Web 的应用程序参与课堂,客户端经常遇到诸如不可靠的 WiFi 或不可预测的蜂窝网络等问题。当他们重新加入网络时,发布-订阅系统会恢复他们的连接,并能够处理在线参与者数量的快速变化。
-
金融应用程序 ,例如向组织内的订阅者分发市场数据,包括股票价格、市场指数、交易数据和订单簿更新。
-
物联网 (IoT) 系统,其中发布-订阅功能可促进众多物联网设备之间的通信,并支持高效的数据传播。传感器发布数据,然后订阅者可以实时接收和处理这些数据。
对于此分析,MIT 评估了使用 Dapr 的发布-订阅通信模型开发的五层链拓扑 ,该模型是一种可移植的事件驱动运行时,使开发人员能够构建在云和边缘上运行的弹性、无状态和有状态的应用程序,同时支持各种语言和开发人员框架。每一层在用户指定的时间内执行 CPU 密集型计算,然后将其输出广播到下游层。见图 3。
在五层发布-订阅应用程序中,在两个启用 OVS 的服务器上放置服务可确保从属服务在不同的物理计算机上运行,以便层之间的所有流量在启用时通过 IPU。

MIT 分析了发布-订阅系统在有或没有基于 IPU 的卸载的情况下的性能,测量了不同负载(表示为每秒数千个查询 (kQPS))的消息传递延迟。参见图 4。

当卸载被禁用并考虑尾部(即最坏情况)延迟时,应用程序开始在 90kQPS 时饱和,如图中的拐点所示。超过该负载级别,系统无法再有效地跟上请求的步伐,很可能是由于数据包丢弃导致 TCP 重新传输。但是,当启用分载时,系统仍能在 140kQPS(此测试中使用的最大速率)的负载下跟上请求的步伐,这表明 IPU 使吞吐量增加了 50%,同时保持了可接受的尾部延迟。这代表了系统容量的显着提高,从而节省了 30-40% 的服务器总成本和能耗。
三层 TCP 应用性能分析
三层TCP(传输控制协议)应用程序是指将应用程序分为三个逻辑层或层的软件架构设计,每个层或层负责特定的功能。这些层通常称为表示层、应用程序层和数据层。TCP 协议用于这些层之间的通信:
-
表示层: 也称为用户界面 (UI) 层,该层负责向用户呈现应用程序的信息并接收他们的输入。它涉及图形用户界面 (GUI) 组件,例如网页、表单或桌面界面。表示层与应用程序层通信,以根据需要检索或更新数据。
-
应用层: 应用层包含应用程序的业务逻辑和处理逻辑。它处理核心功能并执行数据验证、业务规则实施和特定于应用程序的作等任务。此层处理来自表示层的请求,并与数据层通信以检索或存储数据。
-
数据层: 数据层也称为数据访问层或数据库层,负责管理数据的存储和检索。它处理与数据库系统的交互,例如查询和更新数据。数据层接收来自应用层的请求,并返回请求的数据或执行必要的数据修改。
在三层 TCP 应用程序中,使用 TCP 协议促进这些层之间的通信。TCP 确保各层之间可靠有序地传输数据,提供面向连接和基于流的通信机制。通过将应用程序分为这三层,三层 TCP 架构可实现应用程序的模块化、可扩展性和更轻松的维护。每一层都可以独立开发和扩展,从而提高组件的灵活性和可重用性。
为了进行此分析,MIT 评估了一个三层应用程序, 其中 NGINX 作为前端 Web 服务器, Memcached 作为内存中缓存层, MongoDB 作为具有持久存储的后端数据库。客户端与 NGINX 交互,NGINX 检查键值对是否缓存在 Memcached 中,如果是,则将值返回给客户端。如果没有,NGINX与MongoDB接口以获取输出,并将其缓存在Memcached中。见图 5。

MIT 分析了有或没有基于 IPU 的卸载的三层 TCP 应用程序的性能,测量了不同负载的消息传递延迟,如前面的示例所示,这些负载表示为每秒数千个查询 (kQPS)。见图 6。

当卸载被禁用并考虑尾部(即最坏情况)延迟时,应用开始以大约 17kQPS 的速度饱和,如图中的拐点所示。超过该负载级别,系统无法再有效地跟上请求的步伐,很可能是由于数据包丢弃导致 TCP 重新传输。但是,当启用卸载时,直到负载为 26kQPS 才会开始饱和,这表明 IPU 使吞吐量增加了 53%,同时保持了可接受的尾部延迟。与前面的示例一样,这表示系统容量的显着改进,从而节省了 30-40% 的服务器总成本和能耗。
系统配置
MIT 用于微服务基准测试的系统配置如下:
- 两台浪潮双插槽服务器,每台服务器搭载 英特尔® 至强® Gold 6338 处理器和 48MB 高速缓存,运行频率为 2.0 GHz,睿频速度为 3.2 GHz。每台服务器都配置了 512GB 内存、一个 480GB 引导驱动器、两个 1.6TB P6410 NVMe 存储模块和一个 10G 英特尔® 以太网控制器 XL710 NIC。
- 除了标准 NIC 外,每台服务器还配置了一个基于英特尔® Stratix® FPGA 和 英特尔® 至强® D 片上系统 (SoC) 的 英特尔 IPU C5000X 适配器、双 10/25G SFP28 端口和一个 PCIe 3.0 主机接口。见图 7。
- 每个 IPU 都在运行 Napatech 提供的链路虚拟化 4.3.3 软件,从而提供卸载和加速的虚拟化数据平面,包括 Open vSwitch (OVS)、VirtIO 支持、实时迁移、虚拟机到虚拟机镜像、VLAN/VxLAN 封装/解封装、Q-in-Q、RSS 负载平衡、链路聚合和服务质量 (QoS) 等功能。
