@
cassyfar 先了解下为什么 Google 搞 QUIC 并被采纳作为 HTTP3.0
> 1. 即使是内网环境,所有的流量也应该加密,哪怕是 TCP 也应该套 SSL 。不搞这个你连等保都过不了。
那这么说吧,很多家其他大厂的 RPC ,是没用 TLS 的。是不是这些大厂就做错了?不是每种服务都要等保流程的,否则安妮这个所有流量都要加密的说法,是不是数据库、redis 这些基础设施都要 TLS ?但实际情况是多数这种内网基础设施都没用 TLS 连接、只是 4 层 TCP 而已,否则性能直接掉一块。
也不是哪个东西用的多就一定它是对的、别人是不好的。就像 windows 比 macos 用户多多了但微软被喷那么多,就像 HTTP1.x 目前仍然是互联网主要流量,2.0 搞这么多年也没普及反倒是委员会老爷们在 2.0 没普及的情况下直接跨过去投票点赞支持 3.0 了,为啥?因为 1.x/2.0 都是垃圾啊!
GRPC 用的最多,一是谷歌背书,二是数量占据多数的中小厂商不具备自研这种基础设施的能力,你看看大厂基础设施,几乎都有自己的轮子,为啥 GRPC 不一统江湖了?先看看性能测试数据?先区分下不同场景加密的必要性?
> 2. 线头阻塞是个啥玩意,说的是 HOL blocking ?这个一般不是翻译为队头阻塞么。
一个概念多种叫法没什么奇怪的,”队头“更偏学术一点的用词、“线头”更形象化偏口语一点而已,这里也有线头:
https://baike.baidu.com/item/%E7%BA%BF%E5%A4%B4%E9%98%BB%E5%A1%9E/1462441也可能是年纪大一点的我们那个年代叫线头的多一些。另外有些东西是约定俗成,比如“粘包”这种错误定义,但其实提到它大家也知道是啥意思,所以约定俗成了也就不要纠结字眼
> 这里有点矛盾,因为 TCP 的队头阻塞是在丢包率比较高的网络中才有较大的影响,如果不丢包也就没什么阻塞一说了,而你之前论证不需要 SSL 说是内网环境,内网的丢包率通常是非常低的
我不是理论论证,而是就实时论事,比如你如果担心内网流量被抓包,那为什么不先担心下为什么被入侵了提权了,被入侵了难道不比被抓包更严重更可怕吗?别人有更多方法搞事情可都是比抓内网包省事多了。最常见的部署挖矿代码、勒索病毒、登入你的数据库、篡改你的服务挂马之类的,但很少听说别人都入侵了然后还靠抓包这种费时费力拐弯抹角的方式搞事情的。当然,性能不是主要需求的,内网加 TLS 也完全没问题。
还有就是自己的工作实践、以及行业实际情况,你可以随便看看各大厂相关的开源项目,RPC 不用 TLS 的场景多了去了。
> 另外 TCP 的问题和 gRPC 有啥关系,你换其他 TCP 上的 RPC 实现不是一样的问题么。连解决方法,比如 multiplexing 都是一样的,别的 RPC 能用,gRPC 也能用。
同样的,你先了解下为什么 Google 搞 QUIC 并被采纳作为 HTTP3.0
> 当然你可以换基于 UDP 的 RPC 实现,gRPC 社区我看也在做基于 QUIC 也就是 HTTP3 作为传输层的工作。
这里你自己都说了社区有在做基于 QUIC ,和上面一样,为什么不继续用 2.0 ?同样的,你先研究明白为什么 2.0 解决不了 4 层的线头阻塞就明白了。我提示一下:mutiplexing 解决不了是因为它是 7 层的策略,而 TCP 线头阻塞是 4 层,你 multiplexing 是基于别人 4 层实现的,4 层自己先堵车了,7 层动都动不了、怎么解决。。
这方面文章很多,随便找下认真看看就懂了,我就不展开说了