从XLOG Service 的内部结构来看,它是如何工作的?
如图所示,日志块从主节点同步写入LZ(Landing Zone)。当前版本的Socrates 使用Azure 的高级存储服务(XIO)作为LZ 的存储载体,为了保证持久性,XIO 保留所有数据的三个副本。主节点还将日志异步地传送到XLOG Process,此进程进一步将日志发送到只读节点和Page Servers。在将日志块并行地发送到LZ 和XLOG Process 时,数据有可能在LZ 持久化之前就到达只读节点,从而在发生故障时产生数据不一致或丢失的现象。为了避免这种情况,XLOG只传播已经在LZ 中持久化的日志。XLog Process 首先将日志存放在Pending Blocks中,同时主节点会通知哪些日志块已经被持久化,XLog Process 会将已经持久化的日志块从Pending Blocks 移动到LogBroker 用于向只读节点和Page Serves 广播分发。在XLOG Process 内部还有一个Destaging 进程,该进程会将已经持久化的日志块复制到固定大小的本地SSD 缓存以实现快速访问,并且还会复制一份到XStore 进行长期归档保留,Socrates 将日志块的这种长期存档称为Long-Term Achieve(LT)。
以上内容摘自《云原生数据库原理与实践》,这本书可以在电子工业出版社天猫店购买。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。