云数据中心传输的出路

研发端到端协议不是出路,研发更智能调度流量的交换机不是出路,将流量按长短突发模式分流到不同链路(逻辑的或物理的)才是出路。所有高速传输的前提是标准化,统一简单的操作。多么简单的领悟。

数据中心网络具有范围小,带宽大,全局可控等特点,人们揪着这些特点设计出一系列与广域网 tcp 不同(大约还可以相悖)的端到端协议。

套路也有,大概就是瞄准两个点:在端侧,用硬件卸载掉 cpu 的处理,在网侧,自研交换机支持新协议,为端到端处理提供更详细的信息。这些都是正确的思路,肉眼可见的 aws srd,google falcon,alibaba int-based-hpcc 以及 uec transport,homa,都如此。具体来讲:

  • 支持更细粒度更准确的时间测量,例如 swift;
  • 支持多路径,喷洒乱序传输;
  • 支持 sack/nack 丢包检测以及快速重传;
  • 支持成熟的拥塞控制算法(aimd or bbr or …);
  • 支持路径发现和切换(很重要但不一定有);
  • 软硬件结合;

名词我就不罗列了,随便看一个协议基本就大差不差。

我一直秉持的观点之一,靠上述端网这两个方向的算法相关的设计优化只能提高资源利用率而不能提升绝对性能,绝对的性能提升是靠资源的量堆出来的。

简单扩容比好算法更有效,且扩容花的钱比招聘人员自研更省钱省心不惹麻烦。老板总想少花钱做大事,但没有免费的午餐,雇经理的成本比扩容成本大的多。

但光把路修宽还不够,还要限制不能谁都能上路。

我一直秉持的观点之二,但凡高速运输,都要将流量分别分流到专有通道,而不是混部。专有通道的流量一定要同质而不能不同质流量混部。

只要流量不同质,转发设备就要做更多 “判断”,“区分”,“针对” 等操作,算法成本的本质是时间,看得见的是能耗,花钱买时延?只有同质流量才能简单粗暴用一套简单规则对待,协议头简化带来了算法的简化,省钱省时间。

高铁之所以叫高铁是因为路而不是车,早期的动车组跑在普速铁路上,就像如今一个个自以为是的协议和 tcp 混部在以太网上一样。后来专门修建了独立于普速线路的高铁网,350km/h 的速度才有了可能,否则任由再好的调度算法,要么对普速列车不公平,要么高铁列车被掣肘。

高速公路也一样,和红绿灯控制的行人,自行车,机动车混部的普通道路相比,高速公路上只有特定的机动车可以上路,且必须保持一定的速度,不能随意停车。

在全局可控的数据中心,将流量按照流模式分类导入不同的足够隔离的链路,即使全部用以太网承载 tcp 都会在性能上获得质的提升,甚至不需要新的协议和算法,更无须对应用进行任何修改。

如果 incast 短突发流量和普通 tcp 长流(不仅限于 tcp)混部,问题在本质上不是 incast 的问题,针对 incast 再怎么的优化都无济于事,问题出在长 tcp,因为长 tcp 的 capacity- searching 属性摘不掉,长流和突发流并不相容,混部它们就是给自己找更多的事。

常规解决方案按前文所述,无非再设计一个端到端协议,然后在交换机上给予支持更复杂的 qos,更复杂的队列 … 事情越来越复杂。

反过来,长 tcp 也经常被 incast 短突发挤一下再挤一下而丢包,这些突发转瞬即逝,sender 无法区分且来不及反应,误判的代价往往倒逼经理把更多的资源投入到算法的研发,但并不有效。

好比一线城市核心区的老式红绿灯路口,汽车抱怨行人自行车闯红灯,行人抱怨自行车乱窜,自行车抱怨汽车不礼让,谁也过不去,交通事故频发,各种法律法规及调度都无济于事,如何解决?造行人自行车不让上的立交桥就行了,同时汽车也不能走人行道。推荐一篇九年义务教育的课文《北京立交桥》,都应该学过:
在这里插入图片描述
分流才是出路。不分流,即使上 ib 也很难。

incast 短突发流量只有 sender/receiver 最了解,长短 tcp 也没有谁比 sender/receiver 更懂,它们有足够的信息将自己导入不同链路。短突发不需要大带宽但需要更小收敛比,而长流需要公平共享大带宽,如果一个网络确保都是长流,交换机自然有能力执行 总带宽 / n 调度算法,而 n 可通过协议头携带的数据总量或千字节持续时间计算出。

长短流分流到不同链路(逻辑的或物理的)后,固定 buffer 可以吸收更大的 incast 突发,同时在长流链路,甚至只运行 red + aimd 就行。至于分流到固定的分离链路这件事,应用自己比谁都做得好,有个简单的例子可印证,edt(earliest departure time) 由应用自己打戳,就节省了底层很多资源,同时消除了抖动。

只要分流,从应用视角看,它无需任何修改升级,从网卡硬件和交换机视角看,它们更简单(粗暴)而不是更复杂了。

然而我并没有看到有人往这个方向走,人们在 “造车” 而无意于 “修高速公路”,现在的数据中心无异于用上一代基建跑这一代(AI??)的流量,拿单体服务时代的基建支撑微服务,在人车涌动的十字街头推搡着人群调度超跑。

在相似的其它领域,人们十分清楚人车分流,散货零担和集装箱分流,只有这样才可用标准且简单的方式统一操作。试想如果散货和集装箱混在一起装船会怎样,无论从分拣难度还是浪费的人力的角度,都是噩梦。

船还是那条船,可对码头要求更高了。要注意,复杂和精巧并不意味着好。小路更复杂更富有技巧性,可大路才高效。

从 cpu 乱序执行的原理也可见一斑,cpu 最怕执行 if 判断,涉及 if 就要预判,涉及预判就有概率误判,而误判的代价很大,因此才有了人为偏向注入,比如 likely,unlikely。但如果事先确认逻辑规格的一致性不需要 if 判断,也就没有这种代价了,效率自然就提升了。

我从不把做网卡的人等同于做网络的,其实这些人做的事情跟网络关系也并不大。

然而从人的一方面看,做复杂的事意味着更多的工作岗位,高速公路取消省际收费结算后出行更高效了,但收费站员工失业了。哪天要是真的数据中心流量分流了,怕是要裁员不少了,所以内卷也并不总是坏事,干就完了。

周末跟博士聊天,说到这个话题就简单发个随笔。博士认为这个思路完全是 infra 侧的事,与业务无关,但我觉得应用可以倒逼 infra,给足时间,这些五花八门的协议也解决不了问题的时候,人们就跳出 “单纯仅仅的互联网技术圈子” 的思维定势要求 infra 必须做出改变了。你自己开车宁可去高速上堵着也不走国道,为什么不为数据修建一条高速公路呢?为什么高速公路好,不仅因为它大部分时间更快,还因为走它会更轻松。

浙江温州皮鞋湿,下雨进水不会胖。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/786690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FFmpeg 详解

FFmpeg 详解 FFmpeg 详解整体结构不同下载版本的区别常用库常用函数初始化封装格式解码器 版本对比组件注册方式对比FFmpeg 3.x 组件注册方式FFmpeg 4.x 组件注册方式 结构体比对函数对比avcodec_decode_video2()vcodec_encode_video2() 数据结构结构体分析AVFormatContextAVIn…

什么是原生IP?原生IP的作用是什么?

原生IP(Native IP)是指直接从互联网服务提供商(ISP)获得的IP地址,而非通过代理服务器、VPN或其他中间层方式获取。这种IP地址直接与用户的设备或网络关联,无需经过任何中间服务器或代理的转发或隐藏&#x…

[Java基础揉碎]枚举

目录 先看一个需求 枚举介绍: 枚举实现的方式: >自定义类实现枚举实例: >使用enum关键字实现枚举 ​编辑 enum关键字实现枚举注意事项 enum常用方法 enum细节 先看一个需求 要求创建季节(Season)对象,请设计并完成。 // 传统的方法建造一个类: clas…

5.vector容器的使用

文章目录 vector容器1.构造函数代码工程运行结果 2.赋值代码工程运行结果 3.容量和大小代码工程运行结果 4.插入和删除代码工程运行结果 5.数据存取工程代码运行结果 6.互换容器代码工程运行结果 7.预留空间代码工程运行结果 vector容器 1.构造函数 /*1.默认构造-无参构造*/ …

第十三届蓝桥杯JavaA组省赛真题 - 求和

解题思路&#xff1a; 这&#xff0c;真的是&#xff0c;省赛真题吗... public class Main {public static void main(String[] args) {long res 0;for (int i 1; i < 20230408; i) {res i;}System.out.print(res);} }

C#学习笔记 面试提要

冒泡 for (int m 0; m < arr.Length; m) { for (int n 0; n < arr.Length - 1 - m; n) { if (arr[n] > arr[n1]) { int temp arr[n]; arr[n] arr[n 1]; arr[n1] temp; } } } 选择 for (int m 0; m < arr.Length; m) { int index 0; for (int n 1; n < …

企业安全体系建设的实践指南:策略制定与实施细节

在网络安全行业&#xff0c;安全Web漏洞挖掘工程师已经层出不穷&#xff0c;然而拥有甲方安全建设经验的工程师相对较为稀缺。在企业招聘安全工程师时&#xff0c;除了对安全漏洞挖掘能力的重视&#xff0c;更加关注是否具备甲方安全体系建设方面的思维。 本次分享聚焦于甲方安…

PyCharm中配置PyQt5并添加外部工具

Qt Designer、PyUIC和PyRcc是Qt框架下的三个重要工具&#xff0c;总的来说&#xff0c;这三个工具各司其职&#xff0c;相辅相成&#xff0c;能显著提升Qt开发的速度与效率。 Qt Designer&#xff1a;是一个用于创建图形用户界面的工具&#xff0c;可轻松构建复杂的用户界面。…

面试智力题

面试智力题 二进位bit1. 题目&#xff1a;一千杯水&#xff0c;一杯水有毒&#xff0c;怎么用10只老鼠&#xff0c;把这杯水找出来&#xff08;1&#xff09;解法1&#xff1a;常规法&#xff08;2&#xff09;bit法&#xff08;位数法&#xff09; (3) 时间法三级目录 二进位b…

pygame的搭建

pygame的介绍与环境搭建 Pygame模块 安装 WindowsR打开命令窗口&#xff0c;输入&#xff1a; pip install pygame 或者安装指定版本 pip install pygame 2.3.0常用模块 在Pygame框架中有很多模块&#xff0c;官方网址pygame news 。 其中最常用模块的具体说明如下表所示…

Java 操作 Hadoop 集群之 HDFS 的应用案例详解

Java 操作 Hadoop 注意:本文内容基于 Hadoop 集群搭建完成基础上: Linux 系统 CentOS7 上搭建 Hadoop HDFS集群详细步骤 本文的内容是基于下面前提: Hadoop 集群搭建完成并能正常启动和访问Idea 和 Maven 分别安装完成需要有 JavaSE 基础和熟悉操作hadoop 的 hdfs dfs 命令…

【C语言基础】:自定义类型(二) -->联合和枚举

文章目录 一、联合体1.1 联合体类型的声明1.2 联合体的特点1.3 相同成员的结构体和联合体对比1.4 联合体大小的计算1.5 联合体练习 二、枚举类型2.1 枚举类型的声明2.2 枚举的优点 书山有路勤为径&#xff0c;学海无涯苦作舟。 创作不易&#xff0c;宝子们&#xff01;如果这篇…

计算机网络: 点对点协议 PPP

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

单片机简介(一)

51单片机 一台能够运行的计算机需要CPU做运算和控制&#xff0c;RAM做数据存储&#xff0c;ROM做程序存储&#xff0c;还有输入/输出设备&#xff08;串行口、并行输出口等&#xff09;&#xff0c;这些被分为若干块芯片&#xff0c;安装在主板&#xff08;印刷线路板&#xf…

websocketpp上手笔记-Windows安装

WebSocketpp是什么 最近手上有一个c项目&#xff0c;需要用websocket从服务器端收内容。于是网上找了圈&#xff0c;发现WebSocketpp库可以做websocket的客户端。 WebSocketpp也叫WebSocket&#xff0c;github地址是&#xff1a;https://github.com/zaphoyd/websocketpp&…

vuepress-theme-hope 添加谷歌统计代码

最近做了个网站,从 cloudflare 来看访问量,过去 30 天访问量竟然有 1.32k 给我整懵逼了,我寻思不应该呀,毕竟这个网站内容还在慢慢补充中,也没告诉别人,怎么就这么多访问?搜索了下, cloudflare 还会把爬虫的请求也就算进来,所以数据相对来说就不是很准确 想到了把 Google An…

远控桌面多任务并发文件保密传输

远程桌面文件传输是一个重要的功能&#xff0c;大多数远控都是用的桌面程序模式&#xff0c;利用系统自带复制粘贴拖拽文件拷贝功能&#xff0c;做一个ole调用对接&#xff0c;可以将很多控制权交给操作系统。 但我做的是浏览器版&#xff0c;浏览器是沙盒原理&#xff0c;为了…

【2024系统架构设计】案例分析- 5 Web应用

目录 一 基础知识 二 真题 一 基础知识 1 Web应用技术分类 大型网站系统架构的演化:高性能、高可用、可维护、应变、安全。 从架构来看:MVC,MVP,MVVM,REST,Webservice,微服务。

Intel FPGA (6):dac tlv5618a

Intel FPGA (6)&#xff1a;dac tlv5618a 前提摘要 个人说明&#xff1a; 限于时间紧迫以及作者水平有限&#xff0c;本文错误、疏漏之处恐不在少数&#xff0c;恳请读者批评指正。意见请留言或者发送邮件至&#xff1a;“Email:noahpanzzzgmail.com”。本博客的工程文件均存放…

Cesium 批量种树

1、准备树种建模 分各种级别建模LOD1-LODN 其中meta.json长这样&#xff1a; Gltf再3Dmax中导出Obj,再通过ObjToGltf的工具转换&#xff0c;参考 https://editor.csdn.net/md/?articleId96484597 2、准备shp点数据。&#xff08;shp中的点位就是种树的位置&#xff09; 3、准…