gRPC不是银弹:为内网极致性能,如何设计自己的RPC协议?

thbcm阅读(104)

TCP拆包粘包

RPC协议是建立在传输层协议之上的应用层协议,其中传输层协议包括TCP、UDP等。TCP协议因其高可靠性和全双工的特点,成为许多应用层协议的选择,包括gRPC所使用的HTTP/2协议。

然而,TCP协议传输的是一串无边界的二进制流。由于底层网络并不了解应用层数据的具体含义,它会根据TCP缓冲区(Buffer Cache)的情况进行数据包的划分。这就可能导致一个完整的应用层数据包被TCP拆分为多个小包进行发送,或者将多个小包封装成一个大的数据包进行发送。这种现象通常被称为TCP拆包(Packet splitting)和粘包(Packet sticking)问题。


ConcurrentHashMap的Null禁令:一场针对“渣男”Null的完美防卫战

thbcm阅读(90)

这个设计决策常常让刚从HashMap转来的开发者困惑不已。为什么HashMap可以坦然接受null,而CHM却如此决绝?背后究竟隐藏着怎样的深意?今天,让我们揭开这个设计背后的思考,看看CHM如何在这场与null的较量中捍卫了并发世界的秩序。

Django事务

thbcm阅读(107)

Django 默认使用自动提交模式,每个查询都会立即提交到数据库。但你可以手动控制事务。

我的后台管理项目报Error: spawn …esbuild.exe ENOENT了

thbcm阅读(98)

对于开发er来说换设备是件比较痛苦的事,因为一堆开发环境和开发工具需要重新配置和安装,这次也不例外,大概经过小半天的时间,终于可以干活了,但是当我启动我的后台管理项目的时候报如下错:

我一个写Java的,怎么就开始玩K8s和Jenkins了?!

thbcm阅读(115)

但这次不一样了,老板希望上线流程能更自动化,得用Jenkins实现一键部署,减少人工操作,省时省力。说实话,对于我这开发来说,哪干过这活啊。都是已经做好的流水线直接用就行了,奈何人手不够用,直接让我上。

联系我们