最近自己在学linux然后在熟悉TCP协议的时候然后写了个socket,
然后突然脑洞了一下,如果在数据量很大的情况之下怎么实现数据的快速实时的数据传输?
google了一下并没有发现特别有营养的答案,另外就是数据量大可以暂时理解为(100G+)
自己想了一下,前面自己预处理了数据一下但是感觉还是远远不够,还是达不到满意的态度。
最近自己在学linux然后在熟悉TCP协议的时候然后写了个socket,
然后突然脑洞了一下,如果在数据量很大的情况之下怎么实现数据的快速实时的数据传输?
google了一下并没有发现特别有营养的答案,另外就是数据量大可以暂时理解为(100G+)
自己想了一下,前面自己预处理了数据一下但是感觉还是远远不够,还是达不到满意的态度。
7 回答5.4k 阅读
4 回答4.1k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
2 回答836 阅读✓ 已解决
2 回答3.3k 阅读
首先,有意义的思考方向应该是“信息量”很大的情况下如何传输,而不是“数据量”。因为第一步要考虑的问题,就是如何用“更少的数据量”来表现“尽量多的信息量”。这方面的代表,应该是各种流媒体技术的编码方案。
抛开上面的“信息量”不说,单纯的数据传输,快与不快不是软件层面的问题啦,连接建立好之后,速度最快也就是带宽的上限,这有什么好考虑的呢。硬要说的话,当带宽足够大时,你数据落盘的速度是否跟得上了,如果中间还有计算逻辑,那你运算的速度是否跟得上了。这方面,可以去了解一下常用方案下,网络带宽的上限,传统硬盘与SSD的 IO 效率,各种磁盘阵列,专用存储方案的成本与优劣势。
最后,可以去了解下内核中与网络调度方面相关的一些优化,我印象中前不久就有个新方案吧,能改善网络效率。(但是速度再怎么搞上限也是带度的上限,这里说的效率,更多的是在广义复杂的网络环境下,对多连接怎么调度优化的东西,你问题中描述的,就是自己创建了一个连接玩玩的理想状态吧)