Oracle 负载均衡解决方案

为什么要运用负载均衡

一般我们在数据库中的操作无非不就是增删改查这四个基本操作,最终数据库和磁盘文件打交道也就是读写操作。如果采用传统的一台服务器去运作,可能会在读写高峰时会出现一些无法预知的问题。这些我们或许可以通过优化应用代码结构,采用缓存技术等等,这些都在一定程度上是可以减轻数据库服务器的负载。但是,如果我们能将数据库读写操作分离开来,也就是使用负载均衡的方案来优化我们的系统结构。


场景

假设我们业务中有这样的场景:业务A正在进行一个比较耗时的查询,而业务B又需要进行数据的更新操作。在这种情况下,A操作一定程度上会对B操作带来了影响,因为A的耗时查询已经占用了部分数据库服务器的资源,这样的后果就是B的操作会出现延时、响应慢等情况,如果处于高峰期则有可能会造成数据库服务器崩溃(作一个最坏的打算,这是一个比较严重的后果)。


Oracle 数据库的解决方案

读写分离技术应该是大部分系统采用的一种方案。针对商业数据库Oracle,其研究的人也是甚少,相对于MySQL、PostgreSQL等开源的数据库,要实现读写分离功能是具备一定难度的(因为协议不开源,研究资料比较少)。在花了大量的时间和精力进行比较深入的研究后,我们研发了一款针对Oracle数据库的中间件产品。软件采用C++编写而成,只有一个可执行文件,不依赖任何组件,直接运行即可使用。目前仅支持Oracle11g的数据库和JDBC11gR2的客户端连接。在这里我主要介绍软件中的读写分离功能。


下载软件

软件可以在 http://www.onexsoft.com/ 网站上进行获取(目前只有Linux下的版本)。

下载完后运行



要使用读写分离只需这样启动即可


指定好master和slave并设置要登录的用户密码,再指定访问策略(目前支持master_only和read_slave策略)。要读写分离,使用read_slave即可。

这样启动后再用客户端连接此程序(默认是8221端口),进行各种操作,你会发现读写操作会路由到不同的机器上去了。

注:对于事务中的操作均到master,非事务的读操作会到slave;Statement 和 PrepareStatement 操作均支持。


软件稳定性测试

对于软件的稳定性,我们也做了比较多的测试,均没发现任何异常或者错误的地方。其中我们用BenchmarkSQL工具模拟了业务场景的测试。和直连相比,性能损失极小,可以忽略不计。



技术交流群:57875771

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值