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

时间:2024-01-27 19:05:17 

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

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

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

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

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

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

标签:Oracle,RAC,负载均衡
0
投稿

猜你喜欢

  • Python3删除排序数组中重复项的方法分析

    2023-02-16 19:17:50
  • Python使用字典的嵌套功能详解

    2021-03-19 01:20:02
  • PyQt5每天必学之日历控件QCalendarWidget

    2023-05-30 12:12:48
  • Go语言测试库testify使用学习

    2024-04-26 17:31:57
  • Python调用shell命令常用方法(4种)

    2021-05-06 08:22:06
  • Go本地测试小技巧解耦任务拆解

    2023-08-29 14:09:26
  • Python 中包/模块的 `import` 操作代码

    2021-07-10 02:52:20
  • vue实现表单录入小案例

    2024-05-09 15:11:07
  • ECMAScript6函数默认参数

    2024-05-13 09:18:24
  • PHP实现的随机IP函数【国内IP段】

    2024-06-05 09:49:17
  • Vue-cli配置打包文件本地使用的教程图解

    2024-05-22 10:42:05
  • SqlServer服务中利用触发器对指定账户进行登录ip限制提升安全性操作

    2024-01-26 12:24:32
  • 使用Kivy将python程序打包为apk文件

    2021-01-17 21:04:11
  • JavaScript函数的调用以及参数传递

    2024-04-18 10:32:30
  • 浅谈keras中的目标函数和优化函数MSE用法

    2022-01-19 02:15:55
  • 不用Global.asa也能实现统计在线人数吗?

    2009-10-29 12:28:00
  • 优雅地使用loading(推荐)

    2024-04-30 08:42:01
  • 对Server.UrlEncode进行字符反编译

    2009-06-22 12:54:00
  • python使用js2py库运行js代码

    2022-09-06 17:06:55
  • 多个函数验证同一表单方法

    2007-10-06 22:55:00
  • asp之家 网络编程 m.aspxhome.com