- 主题:HTTP是不是太啰嗦了
最近我在做一个东西的时候,
意识到了QUIC的一个问题:大容量服务器端的多线程设计比较复杂
对于tcp,不同的连接从kernel开始就分离成了不同的socket,考虑到一个线程的处理能力总有上限,如果并发的连接多了,只需要多开几个线程,不同的socket的数据从kernel上来之后就直接进入不同的线程,这样并发连接数很容易扩展
而quic基于udp,对于服务器来讲,所有的quic连接都是来自同一个socket,所以从这个socket来的数据包,只有经过进一步的解析才能知道去的是哪个连接。
所以,要么只有一个线程专门负责调用recv,然后解析数据包,识别出对应的连接,然后分发到对应连接所在的线程;
要么不同的线程都调recv,然后解析数据包识别出是哪一个连接,然而这个连接并不一定归当前调用recv的线程管理,而这个连接此时可能正在别的线程有别的活动,所以自然的想法是需要把数据从recv的线程转交给当前处理这个连接的另一个线程,和tcp相比,应用层的整个环节就显得不那么流畅,而为了转交给别的线程必然也会引入额外的mutex,这又会影响并发性能。
【 在 pNeo 的大作中提到: 】
: quic这一步买的够大了,实实在在
--
FROM 123.168.94.*
运营商视频通话是有标准的,虽然没通,但是想通的时候也就调个参数的事
微信是私有产品
【 在 adamhj 的大作中提到: 】
: 标 题: Re: HTTP是不是太啰嗦了
: 发信站: 水木社区 (Sun Oct 9 18:31:50 2022), 站内
:
: 跨运营商也就是跨了国内三家,和国外也没互通,而且还对终端支持有要求,稍微老一点的终端就不支持
:
: 而微信基本上是个智能终端+网络通就能支持
:
: 这不就像前面说的EE和CS的区别一样的么
:
: 【 在 JulyClyde 的大作中提到: 】
: : 电信网络视频通话,从古代ISDN到现在5G一直都是通用的,跨运营商的
: : 倒也有自己的好处
: : 微信、FaceTime可都是只能在自己体系内通话的
:
: --
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 202.109.128.*]
--
FROM 222.71.112.*
io线程模型,概念上一般当港口处理即可:包当集装箱,船当投递/执行线程,卡车当执行/投递线程
io completion port名字的由来
【 在 wallyz 的大作中提到: 】
: 最近我在做一个东西的时候,
: 意识到了QUIC的一个问题:大容量服务器端的多线程设计比较复杂
: 对于tcp,不同的连接从kernel开始就分离成了不同的socket,考虑到一个线程的处理能力总有上限,如果并发的连接多了,只需要多开几个线程,不同的socket的数据从kernel上来之后就直接进入不同的线程,这样并发连接数很容易扩展
: ...................
--
FROM 123.116.210.*
其实根本问题就是微信有希望所有人都装他的产品的动力,所以尽量满足不同产品,当然也能互通
运营商之间协调太难,每家都想着自己的一亩三分地
搞个协议好几年
【 在 JulyClyde 的大作中提到: 】
: 运营商视频通话是有标准的,虽然没通,但是想通的时候也就调个参数的事
: 微信是私有产品
--
FROM 165.225.233.*
这帖子真是受教了
--
FROM 123.191.63.*