rocketmq笔记:rebalance的逻辑
本文记录rocketmq rebalance相关的源码阅读笔记。只是记录,没有总结。
本文记录rocketmq rebalance相关的源码阅读笔记。只是记录,没有总结。
兴趣是最好的老师,当你对一件事情感兴趣的时候,你就更容易长久地坚持下去,从而达到一个更高的高度,或许还能够取得意想不到的效果。接下来我会从实现一个 echo server 开始 netty 的探索旅程,如果你也对 netty 感兴趣,那么我们就开始吧。
转眼又是新的一年,时间过得真是太快了,今天继续来聊聊网络 IO 模型的问题。网络 IO 模型是一个比较抽象的概念,你可以很容易地找到很多介绍网络 IO 模型的文章,也有很多介绍网络 IO 系统调用实现的文章。但是前者往往仅限于抽象的概念介绍,缺少关键的细节。后者则往往介绍过多的细节,让人难以把握住重点。本文将会对比 BIO 和 NIO 两种网络 IO 模型的原理和优缺点,然后通过 recvfrom
系统调用介绍两种 IO 模型在使用上的区别,让你不再被各种高级的类库封装所迷惑。为了防止太多细节干扰你的理解,我将仅挑选关键的代码进行介绍。此外,我会在文章末尾贴出完整的代码,以便你进行测试和验证。
有时需要在 linux 环境下测试一些程序,比如测试基于 epoll 或 io_uring 的程序,这对于使用 mac 的用户来说是个问题。一种方式是另外备一台 linux 电脑,然后通过 ssh 命令进行远程操作,但是这并不方便。另一种方式是在 virtual box虚拟机上安装一个 linux 系统,但是这个占用资源太多了,毕竟我只是想运行一下 linux 程序,不希望动辄占用几个G的内存空间和几十个G的硬盘空间。考虑到 docker 占用资源比较少,使用起来也比较方便,因此选择通过 docker 打造一个 linux 运行环境。
linux 下 locked-in-memory size
的默认大小通常是 64 K
,这对于 io_uring 来说是不够用的。
io_uring accounts memory it needs under the rlimit memlocked option, which
can be quite low on some setups (64K). The default is usually enough for
most use cases, but bigger rings or things like registered buffers deplete
it quickly.
今天在解决一个问题时,需要测下某机器的指定端口是否能正常接收数据,忽然发现想不起来命令叫啥(就是nc),看来还是要做好记录。考虑到后续可能还会添加新的命令,还要方便查阅和分享,索性就记到这里吧。
在长连接网关中,网关与后端服务的通信方式需要考虑长连接的特点,因此与短连接网关有所不同。