• ple
    2022-04-19
    细粒度方案中,【不论集群的机器的数量如何增加,副本的数量都不会改变,这样我们就可以通过增加机器,来提升整个系统整体的读写性能。】 ,这句应该是数据量持续增加的话 可以通过加机器,而不是加副本数量,提升读写性能么?

    作者回复: 你的描述非常正确👍

    
    6
  • 小达
    2022-03-17
    副本的数据读到的可能是旧数据,如果场景不要求数据必须是最新的就可以读。老师,是这样吗

    作者回复: 是的👍

    
    3
  • peter
    2022-03-16
    请教老师几个问题啊: Q1:异步复制从从副本读取时的版本号怎么实现? 文中提到,在异步复制的场景中,如果要通过从副本读取数据,一种方案是在读数据的时候给定一个版本号。请问这个版本号怎么实现?以MySQL为例,是每一个字段加版本号吗?好像不行。那是给每一行加版本号?如果是每一行加版本号,数据库中会存在多行不同版本号的数据吗?(对于一行数据,只要一个字段变化,就增加一行,用新的版本号标识) Q2:多副本节点时,需要一个独立的调度器吗? 有主副本和多个从副本,可以从任意一个节点读取数据,那么,对于一次读请求,怎么决定从哪个节点读取数据?需要一个独立于这些主、从副本节点的调度器吗?另外,对于细粒度副本方案,更为复杂,也需要一个独立的调度器吗? Q3:细粒度方案中,新数据会创建新数据块并增加机器吗? 文中的示例中,数据集为4*128M,占满了四台机器。那么,此时有新的数据后,怎么处理?因为机器已经占满,需要增加机器;其次,创建一个新的128M数据块,将此数据块存到新的机器上。是这样吗? (文中的例子,副本数为3,至少增加3台机器)。

    作者回复: Q1:这个一般是存储引擎内部实现和使用的,对外不暴露出来,不是存储引擎的开发者,一般不会涉及到。另外数据按版本存储和查询,在事务的隔离性中会讨论。 Q2:从主副本读数据或从副本读取数据,这个很多系统的实现是由工程师在客户端来指定,比如 mongodb。 Q3:课程中例子里,一个节点可以存储 3 个 128 M的分片,数据为 3 副本,所以如果增加 128M 的空间,增加一个节点就可以了,数据的分布在集群中自动一下,让 3 个副本分布到不同的节点上。

    共 2 条评论
    
  • 建锋
    2022-06-05
    无论是同步复制与异步复制,数据查询时,都会存在时延问题。对于写完立刻读的场景,都有可能读到的数据不一致。数据实时性要求高的场景可以指定主库读
    
    