Oracle统一访问代理层方案
目标
提供一个oracle数据库统一访问代理层,统一管理所有oracle数据库用户名的连接池,让多个应用系统相同的数据库用户公用连接池以节省oracle服务器的总连接数,并且提供统一管理oracle能力。 由访问层维护后端oracle不同用户的连接池,应用通过jdbc协议告知访问层需要操作的数据库对象的用户名,访问层即从对应用户名的连接池中取出一条数据库连接执行sql。达到相同用户名连接复用效果。例如,user2&sql传入访问层,访问层engine定位到第一个oracle的user2用户名连接池中,并取出一条连接执行。
功能
路由选择:提供通过数据库用户名导航到相应的数据库连接池。
sql语句透传:即不对应用传入的sql做更改,通过简单的用户名导航到对应的oracle中执行,把执行结果返回应用端。
支持多个oracle库:即可同时代理多个oracle数据库,所有访问数据库的连接池统一由代理层管理。
建设方案
基本功能
总体方案是向应用系统嵌入一个jar包(mysql驱动包),对于应用来说就像正常使用jdbc对数据库进行操作。
通过lvs负载均衡,接收端使用mysql协议与应用通信,前端使用NIO网络模式对请求接收。
后端使用oracle JDBC驱动连接若干数据库,并且使用BIO网络模式,提供良好的水平扩展能力,生产上可以很方便通过增加机器链路使处理能力接近线性增长。
核心模块是SQL Engine,提供应用传入的sql数据库连接池路由选择及数据库执行等操作。
另外实现线程管理、心跳管理、会话管理、用户鉴权、Hint功能模块等功能。
配套功能
功能测试:提供脚本工具自动跑功能测试。
性能测试:提供脚本工具自动跑性能测试。
关键参数监控:提供一个后台可实时观察代理层前端网络接收情况,及后端数据库连接池的各种状态。
配置发布:目前只提供手动修改配置文件及手工发布。
技术栈
l 前端NIO模式:
前端使用非阻塞网络模式接收报文,提高系统的接收处理能力,提高系统的多并发能力。
l 后端BIO模式:
后端使用阻塞网络模式与数据库交互,由于连接池连接一般是有数量限制的,且oracle数据库也会有连接数限制,所以这里采用BIO模式比较适合,对连接的操作维护方便简单,使用BIO模式并不会影响后端与数据库交互的性能,同时对于系统水平扩展提供了友好的支持。
l Reactor模式
采用Reactor模式对网络IO的性能优化。
l Dom4j组件
此组件主要用于xml文件的解析工作。
l OracleDriver驱动
作为oracle数据库连接驱动程序。
l Tomcat jdbc连接池:
使用tomcat jdbc连接池对后端oracle连接进行管理,tomcat团队对原来的dbcp连接池进行了优化后产生的,是比较成熟的组件,拥有可靠的连接管理能力,也是tomcat7以后默认数据库连接管理组件,属于apache下开源项目。
Oracle统一访问代理层方案的更多相关文章
- Amoeba是一个类似MySQL Proxy的分布式数据库中间代理层软件,是由陈思儒开发的一个开源的java项目
http://www.cnblogs.com/xiaocen/p/3736095.html amoeba实现mysql读写分离 application shang 2年前 (2013-03-28) ...
- PDO是一个“数据库访问抽象层”
PDO是一个"数据库访问抽象层",作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力:与ADODB和MDB2相比,PDO更高 ...
- 搜索服务Solr集群搭建 使用ZooKeeper作为代理层
上篇文章搭建了zookeeper集群 那好,今天就可以搭建solr搜服服务的集群了,这个和redis 集群不同,是需要zk管理的,作为一个代理层 安装四个tomcat,修改其端口号不能冲突.8080~ ...
- 基于Web Service的客户端框架搭建三:代理层(Proxy)
前言 代理层的主要工作是调用Web Service,将在FCL层序列化好的Json数据字符串Post到Web Service,然后获得Reponse,再从响应流中读取到调用结果Json字符串,在Dis ...
- Oracle数据访问组件ODAC的安装方法
Oracle数据访问组件ODAC(Oracle Data Access Components)顾名思义就是用来访问Oracle数据库的小程序.我们可以编程调用这些组件来实现在没有安装Oracle数据库 ...
- Oracle数据访问组件ODAC的安装方法:
Oracle数据访问组件ODAC(Oracle Data Access Components)顾名思义就是用来访问Oracle数据库的小程序.我们可以编程调用这些组件来实现在没有安装Oracle数据库 ...
- php PDO:数据访问抽象层
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Asp.Net统一前后端提示信息方案
Asp.Net统一前后端提示信息方案 目录 要解决的问题 自定义XML 前端弹框的实现 后端弹框的实现 扩展和整合 示例代码(不完整)及示例截图 示例下载 要解决的问题 减少弹框前后端代码量 增强 ...
- PDO数据访问抽象层
PDO数据访问抽象层: 我们使用的mysqli是针对mysql这个数据库扩展的一个类,如果要用到别的数据库的话就可以用PDO来做 1.操作数据库 先来代码 <!--PDO--> <! ...
随机推荐
- Android Multimedia框架总结(五)多媒体基础概念
转载请把头部出处链接和尾部二维码一起转载,本文出自: http://blog.csdn.net/hejjunlin/article/details/52431887 上篇中介绍了MediaPlayer ...
- PAM30 模拟登陆 投票
Python真的是让人爱不释手啊,一直以来都不知道如何自动投票,然而今天有幸看到了PAM30,下面谈一谈我一个小案例吧. 准备 PAM30下载地址 编码前注意 由于一开始没有什么概念,还以为是个第三方 ...
- Java中读取Excel功能实现_POI
这里使用apache的poi进行读取excel 1,新建javaproject 项目:TestExcel 2,导入包 包下载地址:http://poi.apache.org/download.html ...
- 5.3、Android Studio录像
Android Monitor允许你从设备中录制一段MP4格式的视频,最长允许3分钟. 录制视频 在硬件设备中录制视频: 1. 打开一个项目 2. 在设备中运行应用 3. 显示Android Moni ...
- Dynamics CRM2011 在Visual Studio中开启Javascript的Xrm.Page智能提示
前面一篇博文:http://blog.csdn.net/vic0228/article/details/49512699 讲到了在Visual Studio中开启xml编辑的智能提示,本篇接着来讲下如 ...
- (NO.00004)iOS实现打砖块游戏(十六):导弹发射道具的实现(下)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上一篇我们完成了导弹道具相关的道具制作,本篇中我们来完成其实现 ...
- 使用jquery获取radio的值
使用jquery获取radio的值,最重要的是掌握jquery选择器的使用,在一个表单中我们通常是要获取被选中的那个radio项的值,所以要加checked来筛选,比如有以下的一些radio项: ...
- Ubuntu 15.10下Qt5的安装实战
写照篇博客的目的就是因为最近要使用Qt,但是由于本人的系统是Ubuntu的,而网上大部分的讲解全是基于Windows的,所以就花费一些时间总结了一下我的安装过程,当然也是也为了能帮助到更多的博友. 第 ...
- Android开发模式之MVC,MVP和MVVM的简单介绍与区别
相信大家对MVC,MVP和MVVM都不陌生,作为三个最耳熟能详的Android框架,它们的应用可以是非常广泛的,但是对于一些新手来说,可能对于区分它们三个都有困难,更别说在实际的项目中应用了,有些时候 ...
- maven -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME
遇到错误:-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME解决办法:在环境变量中设置M2_HO ...