我们为什么要做读写分离?

2016-01-02

Image
上图为麦当劳新改进的点餐取餐分离柜台,将原来的多队列点餐取餐混合业务抽取出来;分离出点餐和取餐通道,相互分离的做法大大提高出餐效率。同时为了适应互联网+的转型,支持更多点餐方式的接入(相当于增加web前端的请求类型),支持O2O点餐App(美团外卖,饿了么等)、自有App、自动点餐机等终端接入。
显然这个改进,麦当劳是为了把原来的队列_阻塞_式架构变为一个高并发高可用架构。做出这个业务流程改进的管理者一定是个很棒的程序员 ^_^

为什么要读写分离

  • 物理服务器增加,拿硬件换性能,空间换时间;
  • 主从只负责各自的读和写,极大程度缓解X锁和S锁争用;
  • Master只负责写入数据,甚至不需要建立索引,大大提高效率;
  • Slave可以配置MyIASM引擎,提升查询性能以及节约系统开销;
  • Master直接写是并发的,Slave通过主库发送来的binlog恢复数据是异步;
  • Slave可以单独设置一些参数来提升其读的性能;
  • 增加冗余,提高可用性

How to Do

Like the Albert Einstein said:

If you can't explain it to a six-year-old, you really don't understand it yourself.

Comments
Write a Comment