首先声明 本文基本是阅读 大话RAC 后的笔记。OK, 进入正题。

Oracle 10g RAC中采取两种方式提供负载均衡。第一种是connection blance。在用户连接的时候,根据随机算法把用户的连接定向到不同的节点。第二种是通过service,在应用层面上进行负载均衡。打个比方,一个ERP系统中包括多个模块,为多个部门服务。比如销售模块,人力资源管理模块。如果通过service进行负载均衡,我们可以定义一个 sales service代理销售模块,并且该service运行在节点1上,这样使用销售模块的人就会连接到节点1上。同理,定义一个HR service,代理人力资源模块,这样使用人力资源模块模块的人就会连接到节点2上。概况一下,第一种负载均衡是纯技术的负载均衡,第二种是面向业务的负载均衡。

connection blance这种负载均衡有两种实现方法,一种是在客户端实现,另一种是在服务器端实现。客户端实现非常简单,就是在tnsname.ora配置文件中的加上load_blance=yes这样的条目。但这种方法的缺点很明显。分配的时候并没有考虑两个节点的真实负载,所以分配结果不一定平衡,并且随机算法需要长时间片,如果短时间发起大量连接,就有可能都分配到同一个节点。更坏的结果是连接有可能被分配给故障节点。所以这种方式仅作了解,我们应该使用服务器端实现的负载均衡。而服务器端的负载均衡配置及原理也非常简单。 它的原理是由 PMON进程向listener定期的报告本节点的负载情况。listener了解了各个节点的负载情况后,会根据实际负载把收到的连接请求定向到负载较低的节点上去。如果你查看listener的log会发现很多service_update的条目,这些就是PMON在定期的汇报。 在服务器端实现负载均衡非常简单,只要配置remote_listener参数即可,这样每一个listener都会知道每一个节点的负载情况。

在了解了上面的connection blance之后,也许你在想这样已经足够好了,为什么还要发展service这种load blance呢? 这就要分析RAC的本质了。RAC通过cache fusion模式来保证数据同步及一致。而cache fusion也是有一定开销的。 所以,如果有多个session需要同步的访问同一份数据,还是让他们都通过一个instance来访问比较好,这样会减少cache fusion的开销。让我们用ERP系统为例,若多个人同时访问销售模块,而通过connection blance把它们分散到不同的节点上,这时整个系统就需要通过cache fusion来频繁的交换数据以保证数据的一致性。 但如果通过service,他们都连接到同一个节点,就减去了cache fusion的开销。

Oracle RAC load blance的更多相关文章

  1. Oracle RAC 服务器端连接负载均衡(Load Balance)

    Oracle RAC服务器端的负载均衡是根据RAC中各节点的连接负荷数情况,将新的连接请求分配到负荷最小的节点上去.当数据库处于运行时,RAC中各节点的PMON进程每3秒会将各自节点的连接负荷数更新到 ...

  2. Oracle RAC 客户端连接负载均衡(Load Balance)

    实现负载均衡(Load Balance)是Oracle RAC最重要的特性之一,主要是把负载平均分配到集群中的各个节点,以提高系统的整体吞吐能力.通常情况下有两种方式来实现负载均衡,一个是基于客户端连 ...

  3. oracle rac安装

    http://blog.chinaunix.net/xmlrpc.php?r=blog/article&id=4681351&uid=29655480 参考 1.百度文库中的收藏 2. ...

  4. oracle rac理解和用途扩展

    Oracle RAC的优势在于利用多个节点(数据库实例)组成一个数据库,这样在保证了数据库高可用性的情况下更充分的利用了多个主机的性能,而且可以通过增加节点进行性能的扩展.实现Oracle RAC需要 ...

  5. 【转】Oracle RAC 环境下的连接管理

    文章转自:http://www.oracle.com/technetwork/cn/articles/database-performance/oracle-rac-connection-mgmt-1 ...

  6. Oracle RAC 负载均衡测试(结合服务器端与客户端)

    Oracle RAC 负载均衡使得从客户端发起的连接能够有效地分配到监听器负载较小的实例上.有两种方式实现客户端负载均衡,一是通过配置客户端的load_balance,一是通过配置服务器端的remot ...

  7. Oracle RAC环境下如何更新patch(Rolling Patch)

    Oracle RAC数据库环境与单实例数据库环境有很多共性,也有很多异性.对于数据库补丁的更新同样如此,都可以通过opatch来完成.但RAC环境的补丁更新有几种不同的更新方式,甚至于可以在零停机的情 ...

  8. oracle rac常用的命令

    oracle rac常用的命令 节点层:olsnodes 网络层: oifcfg 集群层:crsctl,ocrcheck,ocrdump,ocrconfig 应用层:srvctl,onsctl,crs ...

  9. Oracle RAC 环境下的连接管理(转) --- 防止原文连接失效

    崔华老师的文章!!! 这篇文章详细介绍了Oracle RAC环境下的连接管理,分别介绍了什么是 Connect Time Load Balancing.Runtime Connection Load ...

随机推荐

  1. Enumerable.Union<TSource> 方法

    功能:生成两个序列的并集(使用默认的相等比较器). 命名空间: System.Linq 程序集: System.Core.dll 备注:实现此方法时使用了延迟执行. 它直接返回一个对象,该对象存储了执 ...

  2. 论tab切换的几种实现方法

    tab切换在网页中很常见,故最近总结了4种实现方法. 首先,写出tab的框架,加上最简单的样式,代码如下: <!DOCTYPE html> <html> <head> ...

  3. SQL Split函数,将一串字符串返回成table

    写法一: CREATE FUNCTION [dbo].[Split] ( @str VARCHAR(MAX), --传进来的字符串 ) --分割符 ) RETURNS @t TABLE --定义一个虚 ...

  4. express模块安装使用命令配置

    之前的博客nodejs安装和配置好路径之后就可以安装express了: 随便打开个文件夹右键选择,git bash here 命令行里输入[npm install express -g] -g是全局安 ...

  5. Android ViewPager+HorizontalScrollView实现标题栏滑动(腾讯新闻)

    1) ViewPager提供了左右滑动切换页面的方法,但是它所提供的标题只是无语,估计没有真正的项目会照搬拿过来;并且它只能一页一页滑,我想直接查看最后一页要滑半天; 2) 看了腾讯新闻客户端感觉体验 ...

  6. Redis 它是什么?它用来做什么?它的优势与短板如何?

    阅读目的: 对什么是内存型数据库有概念性的认知.? Redis 是什么? 通常而言目前的数据库分类有几种,包括 SQL/NSQL,,关系数据库,键值数据库等等 等,分类的标准也不以,Redis本质上也 ...

  7. SpringBoot+Mybatis 自动创建数据表(适用mysql)

    Mybatis用了快两年了,在我手上的发展史大概是这样的 第一个阶段 利用Mybatis-Generator自动生成实体类.DAO接口和Mapping映射文件.那时候觉得这个特别好用,大概的过程是这样 ...

  8. Sturts2几个常用内建拦截器的介绍

    Sturts2几个常用内建拦截器的介绍:1)conversation:这是一个处理类型转换错误的拦截器,它负责将类型转换错误从ActionContext中取出,并转换成Action的FieldErro ...

  9. 如何在mybatis中引用java中的常量和方法

    转自:http://www.68idc.cn/help/jiabenmake/qita/20140821125261.html 在mybatis的映射xml文件调用java类的方法: 1. SELEC ...

  10. SpringBoot开源项目学习总结

    一.实现日期格式数据类型的转换 首先,定义DateConverter实现Converter<String, Date>接口: package com.stevlu.common; impo ...