背景:一座大山有个小村庄,住着几百户人家,隔着大山那边几十里山路,有个小集市,家家户户经常翻山越岭买日用品,苦不堪言(同步阻塞,单线程,每户人家一个线程,去赶集了,今天也干不了别的活)。
后来村长看着也不行,太麻烦了,不就买个东西回来吗,还要每个人都去?不能带买吗
解决:
1 、村民小王被大家推举出来(selector),管理集市购物。
2、每天早上,小王每家每户去问(轮询),要买东西吗,买啥,然后用笔记下来(每个请求生成一个requestid,写着村民名字,货物)。
3、赶着村民集资买的小马车(基于缓冲区,效率高),去街上买东西了。买好东西的小王就回大山里,按照名字,把对应的日用品给村民。村民拿着日用品回家了。
4、一个人赶集,一堆人买到了东西,多路IO复用。
原理核心:
- 长连接:避免了每次调用新建TCP连接,提高了调用的响应速度
- 多路复用:单个TCP连接可交替传输多个请求和响应的消息,降低了连接的等待闲置时间,从而减少了同样并发数下的网络连接数,提高了系统吞吐量。