关于OBCA 的教材里面有个单机日志流的描述疑问

4.x 的教材里面说类似于单机数据库,会给所有的leader 分区写一份日志,然后同步到多个副本,但是单机怎么会有副本呢?是不是教材里面写错了?还是我理解错了?麻烦大佬们帮忙看下,感谢

1 个赞

@论坛小助手

1 个赞

单机日志流 事务 。单机多日志流事务,前几天我刚处理完毕。

1:1:1 架构 ,priamry_zone =z1;z2;z3 , z1是leader日志流 ,,z2,z3 都有一个日志流follower。 因为租户下面有多个表,仅仅leader日志流负责读写,其他副本负责同步,但是他们的日志流id是一样的 。

一个租户再一个observer上仅仅一个leader 。如果Unit_num =3 在这个zone内 会有3个leader.。因为observer有3个。

2 个赞

还有个特殊情况,叫做 复制表 ,会生成一个 广播日志流。您也可以看下

1 个赞

哦哦,那其实是不是可以理解为一个租户如果unit num=1,primary zone = zone1 的时候,他的日志流就是一个单机日志流?

如果是unit_num=1,primary zone=random 的,则不是单机日志流事物吧?

然后教材里面比较迷的一个地方是前面加上了一个单机数据库,这个我们理解来应该是只有一个observer 节点的,就不存在leader 和follower 副本吧

1 个赞

副本数和zone有关系 ,一个zone只有leader, leader 负责读写,肯定有。

1 个赞

那这个教材里面写的单机数据库,这个是不是多写了一句话?因为单机数据库的话是没有副本的,理解应该是单台observer 吧,这样写的话会不会产生歧义?

1 个赞

这个在理解过来,其实租户primary zone =random 的情况下,也是有单机日志流事务,只不过数量和primary zone =zone1 的日志流数量不同而已是吧?

1 个赞

我是这样子理解的 。 random 的话zone数量等于 3 ,unit_num =1 最少3个leader日志流。 如果 您的语句就是select * from t1 ,t1是单表 那就是单机日志流事务。

3 个赞

嗯嗯,我想也是这样的,但是这个教材里面加了一个单机数据库,一下子搞乱了,感谢大佬

1 个赞

这句话描述的意思是,跟oracle 和mysql 相比,日志流只有一个,3X之前,日志流跟分区是结合在一起的,4X的话,你可以认为1-1-1 的集群下,我们设置了 primary_zone zone1;zone2:zone3 的情况下,日志流的个数是一,因为只有zone1能够对外提供读写服务,那么需要一个日志流就可以了,这个跟传统数据库的一个日志是类似的,不存在分布式的事务,所有副本只需要写一份日志就行了

2 个赞

日志流的数量取决于 primary_zone 与 unit_num

2 个赞

单机日志流给你带来的歧义,其实就是这个observer上面,所有的leader放一块成了一个日志流,和mysql binlog类似,再通过paxos把这些日志流同步给其它follower。主要是歧义给你带来的麻烦。

2 个赞

对, 主要是这个名词,在官方文档中没看到过,然后还有前面一个单机数据库,两个名词合在一起就有点干扰日志流的定义了

1 个赞

是一个东西,这个图应该是培训资料,官网并未明确单机日志流这种称呼都是称为日志流

1 个赞

跟着大家的回复学习下