Google Swift 与 DC 传输
网络拥塞,默认指转发节点出现了严重的排队现象,甚至队列溢出而丢包。、
但接收端也是一个统计复用系统(通用 OS 均为统计复用系统,比如 Linux),但凡统计复用系统就是潜在拥塞点,即可套用排队论模型。
人们很少将最后一跳接收端纳入拥塞控制对象,和转发节点潜在的排队时延相比,< 10 微秒甚至纳秒级的处理时延微不足道。 当然,在广域网上尤为如此。
但在 DC 内,传输时延也是微秒级,交换机 buffer 普遍偏小,接收端主机处理时延在整个 RTT 的占比显著提高到不能继续忽略它。
为识别主机时延变化以判断是否主机是否拥塞,Google Swift 提出一种工程化方案,在不同处理阶段精确打点时间戳:
基于这些精确的时间戳,Swift 可分别追踪 “网络时延” 和 “主机时延” 的变化,便可维护两个拥塞窗口,fcwnd 代表网络拥塞窗口,ecwnd 代表端主机拥塞窗口,取 min(fcwnd, ecwnd) 为最终拥塞窗口。
想象一下 Swift 能应用在 TCP 吗?
必然不行,TCP 没有空余的空间保存时间戳,说到底还是 TCP 表达能力弱,反馈信息噪声太大,而这噪声是固有的,由 TCP 头的表达能力决定。
DC 网络继续使用 TCP 有很多弊端,长流传输场景与短消息完全不同。试想你在自己的城市里生活,每当决定要去哪里时,都是直接快去快回,但如果是去一个长途的地方,就需要事先 “连接”。
DC 网络很少有流式传输,基本都是 Request/Response 这种短消息模式,RPC 是个典型的例子。
幸运的是,既然 DC 网络不适合使用 TCP 做传输,部署一个非 TCP 协议并不是难事,全在 DC 内部自主可控。比方说 ECN 就很高尚。和 RED 不同,ECN 以一种告知而非惩罚的方式传递拥塞信息。这机制也只适合拓扑简单,链路跳数短的传输,在 Internet 上是不可想象的。
不拘泥 TCP/UDP,DC 可各种花式传输,依赖交换机的 ECN,INT,QCN,PFC 只是冰山一角,丢包,ECN 打标是常规做法,自研交换机还可以往数据包头里加字段,裁掉 payload,只留报头返回给发送端,或者像运载火箭一样,没用的信息 cut 掉,不一而足。
总之,DC 网络不拘泥 TCP/IP 的端到端原则就是了,相比 Internet,DC 网络无需过度关注新节点接入成本。
但也不能矫枉过正,TCP 不是一无是处,无论对于 Internet,还是对于 DC,都不存在所谓的替代者或者下一个。对于 DC 传输,如果要传输短消息,你是换个协议,还是继续使用 TCP,当然首选后者,只是需要改个小配置:
- 将 init cwnd 提升到 30~50 (拍的数据,总之稍微增大,根据短消息的大小和 FCT 做统计分析,选 P99 最好的那个)即可。
看,这是不是和 Aeolus 的思路差不多,第一笔数据突发,事实上大多数传输也就仅这一笔数据,赢了稳赚,输了回退到重传,用 2 个(或 3 个,总之不会太多) RTT。
随便写写。
浙江温州皮鞋湿,下雨进水不会胖。
相关文章:

每天一个adb命令:wm命令详解
wm命令可以用于获取屏幕分辨率、像素密度等。 前提:Android4.3及以上 usage: wm [subcommand] [options]wm size [reset|WxH]wm density [reset|DENSITY]wm overscan [reset|LEFT,TOP,RIGHT,BOTTOM]wm size: return or override display size.wm density: overrid…...

idea插件开发入门
前言:最近想研究一款自动在idea中定位缺陷及发送JIRA的快捷工具,方便提升报自动化脚本的bug的效率。因为idea插件学习是必不可少了,沉淀小结如下。 idea插件开发入门插件用途工程创建配置文件Action实现开发语法常用对象常用方法运行效果打包…...

读王安石变法
今天早上读到王安石变法,王安的变法确实充满理想化。以现代金融的办法进行国家的经济改革。但最终却并未走向成功,其中值得我们反思。思想太过超前,在没有实际土壤的环境下,再好的策略都难免不可能实现,这让我想起来摩…...

2017 ICPC Asia Urumqi I. A Possible Tree 带权并查集
题目链接:https://nanti.jisuanke.com/t/40520 题解:因为他们都是联通的且只有唯一路径,所以不用管之前怎么连的,直接按照他给的查询,带权并查集判断即可 #include <bits/stdc.h> using namespace std; const …...
基于数据驱动的接口自动化测试解决方案
总结一下我么项目中使用的基于数据驱动的接口自动化测试解决方案,仅供大家参考。1.接口框架设计结构 2.接口测试脚本设计原则 3.持续集成 这块用jenkins就可以了,就不介绍了,目前我们项目的集成规则介绍一下: 1.脚本job与应用对…...

JavaFX其他事件
一、其他事件 InputMethodEvent.InputMethodTextChanged 文本输入改变 ContextMenuEvent.CONTEXT_MENU_REQUESTED 上下文菜单请求 二、用法 node.setOnXX(event->{//do something });node.addEventFilter(XXEvent.XX, event -> {//do something});...

深入探索 Java 热部署
转载自 深入探索 Java 热部署 简介 在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。对…...

C++设计模式
管理变化, 提高复用 两种手段:分解 抽象 八大原则:https://blog.csdn.net/mmk27_word/article/details/108521903 重构技法: 静态 -> 动态 早绑定 -> 晚绑定 继承 -> 组合 编译时依赖 -> 运行时依赖 紧耦合 ->…...

spring boot深入及启动原理探究
围绕spring boot 的优点,本文我们来探究一下spring boot具体是如何实现这些特性的。 自动配置:针对很多Spring应用程序和常见的应用功能,Spring boot能自动提供相关配置;起步依赖:告诉Spring boot需要什么功能,它就能引…...
为什么大公司一定要使用DevOps
转载自 为什么大公司一定要使用DevOps 0 DevOps的意图 究竟什么是DevOps? 要想回答这个问题,首先要明确DevOps这个过程参与的人员是谁?即开发团队和IT运维团队!那么,DevOps的意图是什么呢?即在两个团队之间&#…...

JfreeChart柱状图饼图
JfreeChart画出柱状图饼图的代码片段及详细的注释,附件为JfreeChart中文API一览表,和生成的柱状图,饼图图片 import java.awt.Font; import java.io.FileOutputStream; import java.io.IOException; import org.jfree.chart.C…...

自动装配的底层实现
public void autowire(Object o, Map<String, String> map) throws Exception { // 获得map 所有key Set<String> keys map.keySet(); // 获得Object中所有属性 // 获得Class对象 Class c o.getClass(); // 获得…...

Java异常打印输出中常见方法的分析
Java异常是在Java应用中的警报器,在出现异常的情况下,可以帮助我们程序猿们快速定位问题的类型以及位置。但是一般在我们的项目中,由于经验阅历等多方面的原因,依然有若干的童鞋在代码中没有正确的使用异常打印方法,导…...
Mysql调优你不知道这几点,就太可惜了
转载自 Mysql调优你不知道这几点,就太可惜了 一、Mysql的逻辑分层 Mysql分为:连接层、服务层、引擎层、存储层。 当客户端向服务端发起操作请求的时候,执行过程是这样的: 1、客户端端与Mysql服务端的连接层建立连接ÿ…...

八大设计模式原则
1.依赖倒置原则 高层模块不依赖底层模块,二者都应该依赖抽象 抽象不依赖实现细节,实现细节应该依赖于抽象 这一原则与下面的针对接口编程而不是针对实现编程是一个道理,我们设计一个程序,我们应该先想好我们想要抽象什么&#x…...
每天一个adb命令:input 命令详解
input命令可以用于向键盘发送一些指令,先看看input的官方说明: Usage: input [<source>] <command> [<arg>...]The sources are:mousekeyboardjoysticktouchnavigationtouchpadtrackballstylusdpadtouchscreengamepadThe commands an…...
写给工程师的10条精进原则
转载自 写给工程师的10条精进原则 引言 时间回到8年前,我人生中的第一份实习工作,是在某互联网公司的无线搜索部做一个C工程师。当时的我可谓意气风发,想要大干一场,结果第一次上线就写了人生中第一个CaseStudy。由于对部署环境…...

基于java的开源车牌识别源码
真正的大师,永远都怀着一颗学徒的心! 有没有发现昨天断更了一天 年底各种写文档 准备项目验收 刚好也快放假啦 忙完这几天 要回老家过年了 可能要断更一段时间啦 年后会继续的 今天给大家推荐一个开源的车牌识别的demo源码 技术选型 软件架构 B/S 架构&…...

matlab图形功能
//...

程序员着装的改变
是什么力量,让任何地方的程序员都享有「免于体面的自由」? 在今天的社会里,工程师往往代表着知识水平和社会地位。每当普通人听到这个头衔,总会报之以敬仰的目光: 但有一种工程师,虽然也是如假包换的高级技…...

你真的很熟分布式和事务吗?
转载自 你真的很熟分布式和事务吗? 微吐槽 hello,world. 不想了,我等码农,还是看看怎么来处理分布式系统中的事务这个老大难吧! 本文略长,读者需要有一定耐心,如果你是高级码农或者架构师级别…...

组合数总结
转自:国特震哥 点击查看链接 对于求C(n,m) 1.如果是对于小范围内的n和m(不是很难)就不说了 差不多用java的大数就可以了 2.当n在1e10^5范围左右,往往是会有取模,设这个数为mod(往往mod为质数࿰…...

HDU 5667 Sequence 矩阵快速幂 + 费马小定理
olion August will eat every thing he has found. Now there are many foods,but he does not want to eat all of them at once,so he find a sequence. fn⎧⎩⎨⎪⎪1,ab,abfcn−1fn−2,n1n2otherwise He gives you 5 numbers n,a,b,c,p,and he will eat fn foods.B…...
ACID中C与CAP定理中C的区别
转载自 ACID中C与CAP定理中C的区别 ACID和CAP定理中都有C,代表Consistent一致性,很多人容易将这两个C混为一谈,其实这两个一致性是有区别的。 事务的定义是一系列操作要么全部成功,要么全部不成功,数据库的事务机制是…...

Gym - 100589A Queries on the Tree 树状数组+分块
题目链接:https://vjudge.net/problem/Gym-100589A 题意:n个点,根节点为1的树,两种操作,1 L y 与根节点距离为L的节点权值全部加上y,2 x x子树的权值总和 题解:对于更新操作,因为更…...

CodeForces - 1073C Vasya and Robot
Vasya has got a robot which is situated on an infinite Cartesian plane, initially in the cell (0,0) . Robot can perform the following four kinds of operations: U — move from (x,y) to (x,y1) ;D — move from (x,y)to (x,y−1);L — move from (x,y)to (x−1,…...
JDBC面试问题
转载自 JDBC面试问题 1.什么是JDBC API,何时使用它? Java DataBase Connectivity API允许我们使用关系数据库。JDBC API接口和类是 java.sql和javax.sql包的一部分。我们可以使用JDBC API来获取数据库连接,在数据库服务器中运行SQL查询和…...

webservice学习记录笔记(一)
一、先理解什么是服务 现在的应用程序变得越来越复杂,甚至只靠单一的应用程序无法完成全部的工作。更别说只使用一种语言了。 写应用程序查询数据库时,并没有考虑过为什么可以将查询结果返回给上层的应用程序,甚至认为,这就是数…...

flex获得指定时间段一共多少天
/** * 获得某个时间段 共有多少天 * param start 开始时间 * param end 结束时间 * return * */ public static function getTimeDays( start:Date , end:Date , type:int0):Number { var _re:int 0 ; if(start && end) { var _str:Numbe…...

互联网产品与需求二 评估需求
需求分析之评估需求 一.KANO模型 五个用户需求类型1.必备型需求必备型需求是用户认为产品“必须有”的属性或者功能当其特性不充足(不满足用户需求)时,用户很不满意当其特性充足(满足用户需求)时,无所谓满意…...

flex勾选,自动刷新
mxml: <s:CheckBox label"刷新" buttonMode"true" id "frc" selected "{model.autoFresh}" change "{model.startAutoQuery(frc.selected)}"/> <s:Label text"间隔"/> &…...

flex 下拉框验证组件
//继承验证 public class ObjectNullValidator extends Validator { public function ObjectNullValidator() { super(); requiredFieldError "必须填写" ; } private var _invalidCode:String "222"; public static function validateS…...

flex 事件机制详解
事件机制的工作流程 1:关于事件流 当一个事件发生,必然存在一个派发事件的对象,这里称之为目标对象。 当事件发生后flashPlayer生成一个携带数据的对象,然后检查目标对象是否处于显示层中,如果是则遍历从根容器一直到目…...

bzoj1568: [JSOI2008]Blue Mary开公司 李超线段树
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id1568 李超线段树: 问题: 现在要求你在线动态维护一个二维平面直角坐标系,支持插入一条线段,询问与直线xx0相交的所有线段中交点y的最大/最小值 更新&a…...

10.9日计划
1.完成python的学习:主要针对函数和高级特性这两部分,并将完成的python代码在远程VPS服务器上填写完整。2.完成leetcode算法题目两道:本月的计划主要针对动态规划、深度遍历和广度遍历的题目。3.完成自传的阅读:主要是针对李鸿章传记的阅读。4.完成正常工…...
Appium-java API详解
目前appium-java最新版本是5.0.0-BETA3,因此就拿最新的说明,以Java为例,首先引入java client的依赖:<dependency><groupId>io.appium</groupId><artifactId>java-client</artifactId><version&g…...

MIPS GCC 嵌入式汇编
转载:MIPS GCC 嵌入式汇编 (2007-04-15 16:08:15) 转载▼分类: 转载文章 1. GCC 内嵌汇编的基本格式 asm("assembly code"); 如: asm("syscall"); //触发一个系统调用 如果有多条指令,则需在指令尾部添…...
关于分布式事务、两阶段提交协议、三阶提交协议
转载自 关于分布式事务、两阶段提交协议、三阶提交协议 随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。 为了解决这样一系列问题,大型网站的架构也在不断发展。提高…...
问题 I: Monitoring Ski Paths 树链剖分+LCA+树状数组+贪心
问题 I: Monitoring Ski Paths 时间限制: 1 Sec 内存限制: 128 MB [提交] [状态] [命题人:admin] 题目描述 Fresh powder on a sunny day: it is a great time to ski! Hardcore skiers flock to a large mountain in the Rockies to enjoy these perfect conditions. The …...
与或非门电路的实现原理。
与或非门电路的实现原理。非门:A输入0时三极管截止,L处的电压近似5V。或门:A处输入高电平,B处输入高电平,则D1与D2均未导通,则L处近似为5V。A或者B为低电平,则导致A或者B一定有一段导通…...

2019ccpc网络赛 HDU - 6705 path 贪心跑第k小的路径长度
题目链接:https://vjudge.net/problem/HDU-6705 题解:建立源点 汇点 跑A*,到最后也一直超内存也真是菜到家了,A*时间空间怎么也得n^2,这个题原来是个贪心。。。。 官方题解: 先把每条边以 形式放进堆&am…...

ZOJ - 4019 Schrödinger's Knapsack dp
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode3981 题意: 很明显当我们可以继续取物品的时候 我们应该先取小的那一个 这样可以保证得到的价值 最大 dp[i][j] 表示第一组取前i个 第二组取前j个 dp[i][j] max(dp[i][j-1] v2 * 剩…...

MySQL 中的重做日志,回滚日志以及二进制日志的简单总结
转载自 MySQL 中的重做日志,回滚日志以及二进制日志的简单总结 MySQL中有六种日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志…...

常用公有云接入——阿里
一、术语 中文英文说明地域Region阿里云建设的数据中心。资源创建成功后无法更换地域。可用区Zone同一地域内,电力和网络互相独立的物理数据中心。一个地域下可以有多个可用区。同一地域内可用区之间内网互通并且故障隔离,云服务器 ECS 网络延时低。实例…...

HDU - 6153 A Secret 扩展kmp
题目链接:https://vjudge.net/problem/HDU-6153 题意:对于s2的每一个后缀,假设长度为l,在s1出现的次数为k,求l*k的和 题解:我们把两个串都倒过来,变为s1,s2,那么问题就变为&#x…...

Spring MVC 到底是如何工作的
转载自 Spring MVC 到底是如何工作的 这篇文章将深入探讨Spring框架的一部分——Spring Web MVC的强大功能及其内部工作原理。 这篇文章的源代码可以在GitHub上找到。 项目安装 在本文中,我们将使用最新、最好的Spring Framework 5。我们将重点介绍Spring的经典…...

Gym - 100513F Ilya Muromets 贪心
Силачом слыву недаром — семерых одним ударом! From the Russian cartoon on the German fairy tale. Ilya Muromets is a legendary bogatyr. Right now he is struggling against Zmej Gorynych, a dragon with n heads numbered …...
log4j学习demo
log4j简介 Log4j是Apache的一个开放源代码项目,是项目中比较常用的日志记录组件。 引入log4j <dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.14</version></dependency> log4…...

UVALive 8266 Network Report Floyd算法
题解:给你几个点和几条边,让你求任意两点之间的最短路,并且自己到达自己的不算,求出路径长度不同的分别有几条 #include<bits/stdc.h> using namespace std; #define INF 0x3f3f3f3fconst int N210; int dis[N][N],ans[N];…...

学习JAVA
回头看看, 我进入Java 领域已经快15个年头了, 虽然学的也一般, 但是分享下我的心得,估计也能帮大家少走点弯路。 [入门] 我在2001年之前是C/C阵营, 有C和面向对象的基础, 后来转到Java ,发现没有…...