Add Master-master replication section
This commit is contained in:
parent
c4dc4b0f88
commit
d753508b06
30
README.md
30
README.md
@ -918,3 +918,33 @@ The master serves reads and writes, replicating writes to one or more slaves, wh
|
|||||||
|
|
||||||
* Additional logic is needed to promote a slave to a master.
|
* Additional logic is needed to promote a slave to a master.
|
||||||
* See [Disadvantage(s): replication](#disadvantages-replication) for points related to **both** master-slave and master-master.
|
* See [Disadvantage(s): replication](#disadvantages-replication) for points related to **both** master-slave and master-master.
|
||||||
|
|
||||||
|
#### Master-master replication
|
||||||
|
|
||||||
|
Both masters serve reads and writes and coordinate with each other on writes. If either master goes down, the system can continue to operate with both reads and writes.
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src="http://i.imgur.com/krAHLGg.png">
|
||||||
|
<br/>
|
||||||
|
<i><a href=http://www.slideshare.net/jboner/scalability-availability-stability-patterns/>Source: Scalability, availability, stability, patterns</a></i>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
##### Disadvantage(s): master-master replication
|
||||||
|
|
||||||
|
* You'll need a load balancer or you'll need to make changes to your application logic to determine where to write.
|
||||||
|
* Most master-master systems are either loosely consistent (violating ACID) or have increased write latency due to synchronization.
|
||||||
|
* Conflict resolution comes more into play as more write nodes are added and as latency increases.
|
||||||
|
* See [Disadvantage(s): replication](#disadvantages-replication) for points related to **both** master-slave and master-master.
|
||||||
|
|
||||||
|
##### Disadvantage(s): replication
|
||||||
|
|
||||||
|
* There is a potential for loss of data if the master fails before any newly written data can be replicated to other nodes.
|
||||||
|
* Writes are replayed to the read replicas. If there are a lot of writes, the read replicas can get bogged down with replaying writes and can't do as many reads.
|
||||||
|
* The more read slaves, the more you have to replicate, which leads to greater replication lag.
|
||||||
|
* On some systems, writing to the master can spawn multiple threads to write in parallel, whereas read replicas only support writing sequentially with a single thread.
|
||||||
|
* Replication adds more hardware and additional complexity.
|
||||||
|
|
||||||
|
##### Source(s) and further reading: replication
|
||||||
|
|
||||||
|
* [Scalability, availability, stability, patterns](http://www.slideshare.net/jboner/scalability-availability-stability-patterns/)
|
||||||
|
* [Multi-master replication](https://en.wikipedia.org/wiki/Multi-master_replication)
|
||||||
|
Loading…
Reference in New Issue
Block a user