程序员修神之路--略懂数据库集群读写分离而已
“灵魂拷问: 解决数据库读写瓶颈有哪些解决方案呢? 这些方案解决了什么问题呢? 这些方案有那些优势和劣势呢? 一个可以抵抗高并发流量系统的背后必定有一个高性能的数据库集群,就像每一个成功的男人背后总有一个强势的女人一样。数据库集群在部署模式上属于分布式,但是CAP原则却不适用于分布式数据库。 分库分表作为一种普遍的解决方案,几乎已经成为面试者吹水的利剑,却很少有人在意它所带来的副作用。其实分库分表是利用了分治的思路来解决数据库的瓶颈问题,这种方案同时解决了并发读和并发写的瓶颈,利用数据分片的方式,以堆积硬件的方式来抵抗了高流量的冲击,当然带来了某些业务需要跨库查询,跨表join等问题,不过这些问题总能以别的解决方案来应对。 数据库读写分离是解决数据库性能瓶颈的另外一个方案,和分库分表方案相比较,他们有着本质的区别。分库分表会把数据分散在多个库表中,然后利用数据分片的规则来读取和写入数据,而读写分离是利用“冗余”的方式来应对大流量的冲击。 读写分离原理 读写分离的基本原理是将数据读写分散到不同的数据库节点上,写操作一般只发生在主节点,可以接受少量延迟的读操作发生在从节点上 image 至于读写分离的实现方式: 多台数据库服务器组件成集群,并配置主从关系 主节点负责读写操作,从节点只负责读操作 主节点通过数据复制机制,把数据从主节点同步到所有的从节点