canal 内存实现的方式是环形数组,这个是非常高效的,可以减少内存分配,在堆栈中分配内存挺耗时间的。何况,如果不使用环形数组的话的,消息有点折扣,很多开源的项目有实现了类似的环形数组。
在公司的某一段时间,在日常批量更改时间,发现 canal 挂掉了,当初得到的原因是:内存消耗完毕,被 Linux 干掉了 canal 进程了。可以在 /var/logs 目录下,找找相应的文件就知道了。
canal 内存的分配模型如下:
在使用 canal 的时候,记得 把 canal.instance.memory.buffer.size 属性的值设置小点。这个是前提哦!!!不然,海量数据过来的话,就有问题了。canal 是吃内存的。
canal 是吃内存的,万一海量数据涌过来的话,canal 是不是挂掉了?很大情况下不会的!且看一下分析。
– 这个是我自己写的分析注释。哈哈哈!!
我们可以点击 eventStore.tryPut(events) 这个进去看看。点击进去的时候,写着 如下箭头指示的类哦!