AdminGuide https://github.com/alibaba/canal/wiki/AdminGuide 中对 spring组装方式区别的介绍中是不是有一点模糊啊
store不是只有内存模式么,这里的store的存储应该是只有memory,而不会存储到zookeeper和file当中吧。
原提问者GitHub用户chenchuangc
这篇文档确实在介绍 Spring 组装方式时存在一些模糊之处,可能会让读者产生一些困惑。感谢您提出这个问题,以下是我对该文档的理解和回答:
通过 Spring 组装的 Canal Server 配置可以存储在 memory、zookeeper 或 file 中 在 Canal Server 的 Spring 配置中,可以使用 canal.instance.memoryStorage、canal.instance.zookeeperBatchMode 或 canal.instance.fileMixed 等配置项对 Canal Server 的存储模式进行设置。这些配置项的含义如下:
canal.instance.memoryStorage: 是否启用内存存储模式。如果设置为 true,则 Canal Server 将其存储在内存中。如果设置为 false,则后面的两个存储模式将起作用。默认值为 true。 canal.instance.zookeeperBatchMode: 是否启用 ZooKeeper 存储模式。如果设置为 true,则 Canal Server 将其存储在 ZooKeeper 中。如果同时启用了内存存储模式,那么若 ZooKeeper 存储失败,Canal Server 会自动回退到内存存储模式。默认值为 false。 canal.instance.fileMixed: 是否启用文件混合存储模式。如果设置为 true,则 Canal Server 将其存储在文件系统中。如果同时启用了内存存储模式,那么若文件存储失败,Canal Server 会自动回退到内存存储模式。默认值为 false。 因此,可以通过在 Spring 配置中设置这些配置项来控制 Canal Server 的存储模式,并将其存储在内存、ZooKeeper 或文件系统中。
canal.instance.memoryStorage 与内存存储模式相关,但并不意味着总是使用内存存储模式 虽然 canal.instance.memoryStorage 配置项的默认值为 true,即默认启用内存存储模式,但是在启用了 ZooKeeper 存储模式或文件混合存储模式后,若 ZooKeeper 存储或文件系统存储失败,则 Canal Server 会自动回退到内存存储模式。因此,canal.instance.memoryStorage 只是默认的存储模式设置,并不意味着总是使用该存储模式。
而且在大部分情况下,内存存储模式也仅仅是用于传递数据的缓存,在 Canal Server 内部仍然会基于具体的存储模式来管理数据和元数据。因此,即使使用了内存存储模式,Canal Server 也不会将所有数据都存储在内存中,而是会根据需要将数据转存到 ZooKeeper 或文件系统中。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。