负载均衡
用户像RAC发起各种请求的时候,负载均衡负责把任务平摊到不同机器上。
- 按用户分配
是从几个机器里面随机的挑一个吗?NO!那也太Low了,RAC会根据每个机器的状态动态分配任务。数据库运行时,PMON后台进程节点的负载信息,登记到Listener,1-10分钟更新一次。每个节点的Listener知道所有节点的负载情况,把客户端请求发给最闲的节点。
- 按服务分配
按用户分配有缺点,就是可能让Cache Fusion更忙了。因为RAC节点数据共享,大家通过Cache Fusion同步数据,RAC的性能很大程度上受限于Cache Fusion性能。要么让Private网络更牛,比如用昂贵的InfiniBand,另一种是减少Cache Fusion的流量,其实就是减少节点实例之间的依赖。而按用户分配的机制无益于后面的方案。
所以RAC支持根据服务分配节点,比如生产和销售用不同节点,自己的数据在自己的Cache里面,就不用访问别的节点了。性能得到提升。
三类集群
- 负载均衡集群:按一定算法把请求分配给不同成员;
- 高性能集群(HPC,High Performance Cluster):采用向量处理器等专用软硬件组成的牛逼机器,计算性能强悍,价格超贵,比如天河计算机;
- 高可靠性集群(HAC:High Available Cluster,Failover Cluster):可靠性非常好,硬件和软件的容错性很强,日常使用的数据库集群属于这类。
高可靠性集群
双机热备
平时有一个闲着待命,干活的挂了,就让候补的顶替。
双机互备
平时两台都干自己的活,但是要预留一部分资源,因为有一个挂了,另一个就得干两个人的活。
双机双工
举个例子:
老大老二合开一家店,平时老大主要卖包子,老二主要卖豆浆,老大有问题,老二就又卖包子,又卖豆浆,老二不行了,老大就又卖包子,又卖豆浆。
包 子豆浆是数据, 互相照应叫做心跳检测, 顶替对方工作叫做failover(故障转移)。如果两个兄弟突然都瞎了聋了,不知道现在对方到底是否正在干活,都认为自己要顶对方的工作,这个叫做脑裂, 然后需要第三者,比如他们的老爹来解决问题,这个叫做表决, 或者让他们两个的媳妇过来拉走其中一个,这个叫做IO隔离。Oracle RAC就是这一类,性能最好,系统最复杂。
引用