数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle] RAC 之 - 负载均衡深入解析


发布日期:2023年07月21日
 
Oracle] RAC 之 - 负载均衡深入解析
负载均衡是指把负载平均分配到集群中的各个节点从而提高整体性能Oracle RAC提供两种方式实现负载均衡以下就为大家详细介绍一下需要的朋友可以参考下

Oracle RAC提供两种方式实现负载均衡第一种是纯技术手段即在用户连接时根据系统当前的负载情况决定由哪个节点处理用户请求第二种是面向业务人为的把应用切分成很多service通过某个service过来的连接请求都由某个节点处理下面来具体看看这两种手段

纯技术手段 (面向连接的负载均衡)

客户端负载均衡
配置方法是在客户端tnsnamesora文件中设置LOAD_BALANCE=YES当客户端发起连接时会从地址列表中随机选取一个把连接请求随机分散给各个实例
这个技术的最大缺点在于不能根据各个实例的真实负载情况来分散请求太过粗糙因此很少使用

服务器端负载均衡
服务器端负载均衡依赖于Listener收集的负载信息在数据库运行过程 中pmon进程会收集系统的负载信息定期更新至Listener中如果你配置了Remote_listener参数pmon进程不但能把负载信息 注册到本地Listener也可以注册到其它实例的Listener这样有了pmon自动注册机制后集群的每个节点的Listener都掌握了所有 节点的负载信息当收到客户端请求时会把连接分配给负载最小的实例

面向业务手段 (利用Service负载均衡)
上 面介绍了纯技术手段进行的负载均衡看起来很美好但在实际使用中可能会带来非常大的性能问题大家都知道RAC由于其sharedisk的架构 它的性能很大程度上依赖于内存融合(Cache Fusion)纯技术手段无法知道业务的具体情况因此它可能把同一个业务的连接分散到各个实例中导致大量的内存融合性能急剧下降

如果我们换一种思路把同一种应用程序的连接分到同一个实例上比如A应用程序的连接都连在A实例B应用程序的连接都连在B实例上这样就能够有效地减少内存融合
对应用的划分可以通过service实现这需要DBA和开放人员合作在了解业务特点的情况下配置service

上一篇:Oracle判断指定列是否全部为数字的sql语句

下一篇:oracle数据库导出表结构