- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
在云计算、SDN、NFV 高速发展并普遍落地的今天,随着上云业务的用户数量越来越多、数据中心的规模越来越大,云计算规模成本效应越来越重要。因此,云计算的集约式系统架构逻辑就决定了网络的性能是一个永恒的话题。在云网络的技术体系中,对性能追求不仅是方方面面的,而且是极致严苛的。性能每提升一点,成本就降低一分,收益就提高一些,产品的竞争力就更上一层楼.
大致上,我们可以将云网络的性能追求划分为物理网络的带宽性能、虚拟网络的隧道转发性能、四层网络的负载均衡性能、应用层网络的 I/O 处理性能等几个方面。尤其是当下,随着数据中心和边缘设备的网络带宽需求越来越高,作为用户业务服务网络入口的负载均衡器的性能表现至关重要。而这正是本系列文章研究的主题 —— Intel HDSLB 一种基于软硬件融合加速技术实现的高性能四层负载均衡器.
在该系列文章中为了能够把 HDSLB 介绍清楚,笔者希望能够从 “感性认识、理性认识、深入剖析” 这 3 个层级逐步展开,计划逐一分享下列文章,敬请期待。:) 。
在深入了解 HDSLB 之前,我们有必要先回顾一下传统 LB(负载均衡)的基础概念、类型、作用和原理。在一个现代化的 IT 系统中,LB 的作用是为了构建一个满足高可用、高并发、且具有高度可扩展性的后端服务器集群,本质是一种流量分发网络单元.
在长久以来的技术演进中,LB 技术始终关注以下几个方面的发展:
NOTE:CPS(Connections-per-second)是负载均衡器的关键性能指标,它描述了负载均衡器每秒钟稳定处理 TCP 连接建立的能力.
在以往,我们常见的 LB 方案有以下几种,包括:
诚然,这些 LB 方案现如今依旧在用户业务层 LB 场景中被大量的应用。但相对的,它们在云基础设施层 LB 场景中则正在面临着性能瓶颈、可扩展性差、云化适应性低等等问题.
随着先进的异构计算和软硬件融合加速等技术的蓬勃发展,现在越来越多的新型网络项目正在围绕着 DPDK、DPVS、VPP、SmartNIC/DPU 等高性能数据面技术展开,开发出更适应于云计算等大规模系统平台的新一代负载均衡产品,本系列文章讨论的 Intel HDSLB 正是其中之一.
HDSLB(High Density Scalable Load Balancer,高密度可扩展的负载均衡器) 项目最初由 Intel 发起,旨在构建一个业界性能领先的四层(TCP/UDP)负载均衡器。其中:
值得注意的是,在一套完整的 LB 系统中,HDSLB 定位于四层负载均衡器,而七层负载均衡器(e.g. Nginx etc..)则作为 HDSLB 的一种特殊 RS,需要挂载到 HDSLB 的后端来提供更上一层的负载均衡能力.
目前,Intel HDSLB 已经补发了 v23.04 版,并且面向开发者提供了在 Github 上托管的开源 HDSLB-DPVS 版本,以及向商业合作伙伴开放的具有更多高级特性的 HDSLB-VPP 商业化版本.
作为新一代负载均衡器的典型,HDSLB 具有以下功能特性:
NOTE:在下文中,我们主要讨论 HDSLB-VPP 版本.
针对最重要的性能因素,我们可以从火山引擎 HDSLB 测试案例中找到了 Intel 官方认可的基准性能数据.
测试环境参数:
测试拓扑:
在 1~16 Core 场景中,64Bytes 转发吞吐量(单位 Mpps)测试结果如下图所示,结果越高越好.
在 1~4 Core 场景中,TCP CPS(单位 K)测试结果如下图所示,结果越高越好.
从上述结果可知,HDSLB-VPP 的单 Core 吞吐量性能达到了 8Mpps,且具有多核线性拓展特性。同时,HDSLB-VPP 的单核 TCP CPS 性能达到了 880K,且同样具有多核线性拓展特性.
而 HDSLB 在与某开源 L4 LB 方案最新公布的性能数据的横向对比中,我们也找到了官方的性能测试数据.
测试环境参数:
从下述第一张图可见,HDSLB-VPP 在 FNAT IPv4 吞吐量测试用例中,在每 Core 的并发 TCP 会话量增加了 10 倍的情况下,依旧能够取得了 3 倍以上的单 Core 吞吐量性能优势,且具有更好的多核线性扩展能力.
同时,在 FNAT 吞吐量场景中,从 MAX(尽力转发)、PDR(十万分之一丢包率)、NDR(零丢包率)这 3 种丢包模式的结果趋于一致上,也反应出了 HDSLB-VPP 具有优秀的转发稳定性。并且 NAT、DR、IPIP 等 LB 模式下的结果和 FNAT 模式趋势一致.
而第二张图则显示出,HDSLB-VPP 的 CPS(TCP 每秒新建连接数)性能相较而言有 5 倍的提升.
此外,HDSLB-VPP 基于 VPP 框架对数据结构内存进行了深度优化,使得在同等内存消耗的前提下,最大的并发 TCP 会话量突破预设的100M(1亿)级别,在 FNAT 模式下可扩大到 500M(5亿)级别,而在 NAT 模式下,甚至可以达到 1000M(10亿)级别.
HDSLB-VPP 对于内存方面做的优化以及并发 TCP 会话量的优势,使得 HDSLB-VPP 在 IPv6 的场景下会有更大的实用价值。在具备高性能优势的同时,还能够节省更多的系统资源用于其他业务的部署.
基于以上特性,HDSLB 目前的主要应用场景是在云计算和边缘计算中作为 L4 LB 网络单元.
针对资源集约式的云计算场景,需要面对以下 2 个关键的场景特点:
针对大象流的问题,HDSLB-VPP 基于 Intel DLB 硬件加速技术,可以在 96B、128B、256B、512B 包长的大象流场景中,相较于纯软方案具有更切近线速的提升。可以说,HDSLB 在 Intel CPU 指令集加速上的调教几乎可以说是做得最好的.
而针对面向垂直行业的、资源受限的边缘计算场景,则需要面对以下 2 个关键特点:
针对云计算、边缘计算、电信云、网络安全等多种不同应用场景下的性能调教组合,Intel 官方也提供了以下配置参考.
未来,HDSLB 的 Roadmap 中包括以下清单:
随着业务整体趋同的 “业务网关 NFV 化,边界网关硬件化” 的技术演进趋势,HDSLB 一方面背靠 Intel 的异构计算硬件生态,另一方面背靠 DPDK、VPP 等开源社区的创新能力。双管齐下,相信 HDSLB 有望在更多的应用场景中得到应用和推广.
其中我个人主要关注在 2 个方面,包括:
最后此篇关于IntelHDSLB高性能四层负载均衡器—快速入门和应用场景的文章就讲到这里了,如果你想了解更多关于IntelHDSLB高性能四层负载均衡器—快速入门和应用场景的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
在 Web 应用程序架构设计期间,我必须从概念上计算我的服务器之一可以服务多少个当前客户端。然后我可以预算它。 那么,有什么公式可以遵循吗?或者,你如何计算这个?或者,通常,一个 httpd/tomc
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是
我正在使用 Angular 5,我正在尝试在加载 div 的背景图像时获取加载图标。 如果它是一个普通的 img,我对此没有问题,但如果我尝试将它作为背景,它就不起作用。 这里是一些示例代码 app.
我们怎么知道我们的程序在 CPU 上有多少负载? 我尝试使用 htop 找到它。但是 htop 不会给 cpu 负载。它实际上给出了我程序的 cpu 利用率(使用 pid)。 我正在使用 C 编程,L
我们发现从Spark 1.3到当前的Spark 2.0.1以来,从Oracle数据库使用Spark的API加载数据一直很慢。典型的代码在Java中是这样的: Map options =
我有时会收到 mnesia overloaded主要使用时的错误消息 async_dirty查询和 ram_copies表。所以为了了解发生了什么,我想获得更多关于 mnesia 状态的信息,例如每秒
对于通常使用很少 CPU 的程序来说,内核 CPU 非常高。 Linux 机器在状态之间交替。大多数时候,程序使用低 CPU 正常执行。在 CPU“激增”期间,程序使用 100% 可用 CPU 使用高
我正在使用 Raspberry Pi 2 来路由 wifi-eth 连接。因此,从 eth 方面来看,我有一台可以使用 Pi wifi 连接到互联网的计算机。在 Raspberry 上我启动 htop
基本上我有一个网页,其中有一个 iframe 可以从不同的域加载另一个网页。它移动得很慢,我想证明整个页面很慢只是因为 iframe 内的页面。 有什么方法可以测量总页面负载以及总页面负载中有多少%来
我们有一个基于 Spring 的应用程序,它充当使用其他 Rest API 的编排层。我只想测试这个组件的性能,而不测试正在使用的下游 api。 我正在寻找有关如何完成此操作的任何架构建议? 当前的方
我正在学习 hibernate 。为了进行测试,我使用无效 key 调用了 session.load 。当我在调试器(JB Idea)中跨过该行后,没有任何反应 - 我预计会得到 ObjectNotF
我正在开发一个小型的待办事项 PHP 应用程序。我正在使用 jQuery 构建 HTML。其中一个是一个按钮,用于启动一个模式,允许用户编辑该项目。我很好奇加载数据时更好的方法是什么: 1) 在初始加
我尝试在 twitch 播放器中使用 angular 作为覆盖标记。 我将 ng-repear 与(键,值)结合使用。 //player is here 设置是一个全局对象。但是当我尝试加载页面
我即将了解 C 语言中的特定进程如何在特定时间范围内加载 CPU。该进程可能会在运行时切换处理器核心,因此我也需要处理这个问题。 CPU为ARM处理器。 我研究了从标准顶部获取负载的不同方法,perf
这个问题在这里已经有了答案: XMLHttpRequest Origin null is not allowed Access-Control-Allow-Origin for file:/// t
您好,我正在用 Java 开发负载平衡算法。在我的系统中将有一个主节点和 n 个从节点。主节点将接收查询分发给它的从节点。但是在将查询分发到其从节点之一之前,我想测量从节点中的当前负载,以检查特定从节
我正在渲染由大约 50 万个三角形组成的相当重的对象。我使用 opengl 显示列表,在渲染方法中只调用 glCallList。我认为一旦图形基元被编译成显示列表,cpu 的工作就完成了,它只是告诉
我正在尝试加密 Sipdroid,为此我必须在 RTP 数据包获得编码的音频负载后对其进行加密。我在 RTP 数据包类中使用这个函数: public byte[] getPayload() {
我正在尝试解析以下 JSON 负载: { "results":[ [ 298.648132, 280.68692, 356.54
在动画期间 cpu 负载非常高(高达 75%) 是否有优化代码以降低 CPU 负载的方法? 我的代码: ImageView myImageView = (ImageView)findViewById(
我是一名优秀的程序员,十分优秀!