数据库集群简单概念
1.集群定义:
集群是指用一组服务器运行一到多个应用程序。
集群可以简单到只有两台服务器,在他们之间配置故障切换,如果一台服务器失效,由另一台服务器接管应用程序的处理。集群也可以用来运行复杂的分布式系统:应用程序将数据分割成多个可管理的部分,每个部分都可以独立进行处理。如果一台服务器失效,其他服务器不会受影响,失效节点的进程被重新分配到集群中的其他节点。
2.集群的分类
故障切换集群、分布式数据库系统
故障切换集群又可以分为两类:(主动/被动集群、主动/主动集群)
主动/被动集群:任何时候都只有一台服务器拥有负载,辅助服务器以被动模式运行,时刻等待着主动服务器停机进而接管主服务器,它一直与主动服务器保持同步。缺点:只有一个服务器拥有负载,资源浪费,效率低。
主动/主动集群:两台服务器同时都执行实际的任务。每台服务器都同一个实例,同时又可以作为其他服务器上运行的实例的故障切换数据库。
3.为什么要用数据库集群
使用读写分离,提高数据库的系统性能。
让主数据库处理事务性操作,从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库,从而使从数据库和主数据库的数据保持一致。 主服务器也可以提供查询服务。
4.为什么读写分离能提高数据库的性能?
1).物理服务器增加,负荷增加
2).主从只负责各自的写和读,极大程度的缓解X锁和S锁争用
3).从库可配置myisam引擎,提升查询性能以及节约系统开销
4).从库同步主库的数据和主库直接写还是有区别的,通过主库发送来的binlog恢复数据,但是,最重要区别在于主库向从库发送binlog是异步的,从库恢复数据也是异步的。
5).读写分离适用与读远大于写的场景,如果只有一台服务器,当select很多时,update和delete会被这些select访问中的数据堵塞,等待select结束,并发性能不高。对于写和读比例相近的应用,应该部署双主相互复制。
6).分摊读取。假如我们有1主3从,假设现在1分钟内有10条写入,150条读取。那么,1主3从相当于共计40条写入,而读取总数没变,因此平均下来每台服务器承担了10条写入和50条读取。因此,虽然写入没变,但是读取大大分摊了,提高了系统性能。另外,当读取被分摊后,又间接提高了写入的性能。
7).MySQL复制另外一大功能是增加冗余,提高可用性,当一台数据库服务器宕机后能通过调整另外一台从库来以最快的速度恢复服务。
5.数据库集群和分布式数据库有什么区别?
1).分布式是并联工作的,集群是串联工作的。
2).分布式是指将不同的业务分布在不同的地方。集群指的是将几台服务器集中在一起,实现同一业务。分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。分布式的每一个节点,都完成不同的业务,一个节点垮了,哪这个业务就不可访问了。
举例:比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的
负载不是很重,就将给哪一台去完成。而分布式,跟集群差不多, 但是它的组织比较松散,不像集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。
3).分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。
上一篇: 深入解析自适应设计与响应式网页设计
下一篇: 模块分组后,无法访问模板页面