Tagged: replication

1

Kafka进阶之Replication

Replication这个词相信大家都不会陌生,在很多分布式系统中,我们都需要Replication来保证Availability和Durability,Kafka也不例外,它也是利用Replication来保证某个节点发生问题的时候仍然能够保证数据不丢失并正常工作。本文就来详细聊一聊Kafka中的Replication。 概念 我们在前面提过Kafka的数据是根据topic来组织的,每个topic可以有很多个partition,每个partition可以有多个replica。这些replica都保存在brokers上,每个broker可能保存成百上千个replica。总得来说有两种replica: Leader Replica:每个partition只能有一个leader...

0

无leader replication的实现和问题介绍

我们在前面的《多leader replication的实现及常见问题介绍》和《分布式系统之leader-followers Replication深入介绍》分别介绍了多leader和单leader的情况,也许你会好奇是否有无leader的实现呢?答案是肯定的,本文就来深入介绍无leader replication的实现和相关的问题。 其实最早期的时候有很多无leader的实现,就是任何节点都可以进行写。后来慢慢大家就不太使用这个实现了,直到Amazon推出了它的Dynamo系统,这一实现又再次流行起来。现在Riak,cassandra以及Voldermort都是开源的无leader的数据库实现。...

1

多leader replication的实现及常见问题介绍

我们在前面的文章中介绍的都是单leader的实现。也就是说所有的写操作都会通过这个leader来实现。虽然说这是一种比较常见的实现方法,但是它也有其局限性,比如说leader可能会有问题,比如网络问题等,这个时候就会有一段时间没法进行写操作。或者说当写操作很重的时候,所有的写的load都需要到leader这边,无形中就加重了leader的traffic。本文就来介绍一种多leader的实现方案。 顾名思义,多leader实现方案就是可以同时有多个节点成为leader,所有的写操作可以同时通过这些节点来进行。当其中一个leader在写的时候,另外的leader就和follower一样,也需要从它这边进行replication。 多leader的使用场景 多leader其实并不是一个比较常见的方案。那么一般在什么情况下,我们会考虑多leader的方案呢? 多数据中心的操作...

0

Replication lag常见问题分析

我们在《分布式系统之leader-followers Replication深入介绍》中深入介绍了replication了基本实现,本文主要来聊一聊replication lag常见的一些问题。 我们知道在leader-follower这样的系统中,写操作只能到leader,而读操作则可以分布在多个follower上进行。这也就意味着在一个读比较多而写比较少的系统中,我们其实可以把多个读的load分散到follower上,从而达到一个read scaling的结构。这个想法很好,但是问题也很明显,就是事实上follower和leader之间其实并不是同步的,也就是说你从follower上读到的内容和leader上的内容有可能是不同的。当然,我们说这种不同可能只是暂时的,比如说你不再往leader上写,一段时间之后,各个follower中的数据也就一样了。这种现象我们通常称之为最终一致(eventual...

3

分布式系统之leader-followers Replication深入介绍

我们在前面有简单讲过Replication的作用,简单说就是为在多个机器上保存同样的拷贝来服务的。有了这个拷贝之后我们就可以做很多事情,比如说它可以成为一个读的源从而分散读的压力,它可以在原来数据机器出问题(或者deploy)等的时候作为一个backup等等。 这个想法其实很简单,但真正在我们做这个拷贝的时候,会遇到很多问题,比如说我们是使用同步还是使用异步来进行同步多个拷贝,如何保证多个拷贝之间的一致性等等。那么本文就来从各个方面详细介绍这些内容。 Leaders和Followers 我们把每一个保存数据的节点称之为replica,当我们有多个节点的时候,最明显的一个问题就是怎么去保证每个节点的内容都是一样的呢?其中最常见的方法就是基于leader的模式(也称为master-slave模式或者active/passive模式)。总得来说,它的工作方法如下: 一个节点是leader。所有的写操作都必须经过leader。...

0

分布式系统简介(总论)

我们在前面几篇文章中简单介绍了单个服务器对数据的处理,而在现实中数据的存储和获取会涉及到多个机器,也就是说我们会把数据分布在多台机器上,这样做有很多好处: 可扩展性(Scalability) 随着你的数据增加,一个机器可能很难处理日益增长的读写需求,你可以把这些负载分散到多个机上。 容错性/高可靠性(Fault Tolerance/...