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下开源项目。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-10 21:21:42

Oracle统一访问代理层方案的相关文章

Amoeba是一个类似MySQL Proxy的分布式数据库中间代理层软件,是由陈思儒开发的一个开源的java项目

http://www.cnblogs.com/xiaocen/p/3736095.html amoeba实现mysql读写分离 application  shang  2年前 (2013-03-28)  4095浏览  0评论 说明:要实现mysql的主从读写分离,目前主要有以下几种方案:1.通过程序实现,网上很多现成的代码,比较复杂,如果添加从服务器要更改多台服务器的代码.2.通过mysql-proxy来实现,由于mysql-proxy的主从读写分离是通过lua脚本来实现,目前lua的脚本的开

PDO是一个“数据库访问抽象层”

PDO是一个"数据库访问抽象层",作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力:与ADODB和MDB2相比,PDO更高效. 目前而言,实现"数据库抽象层"任重而道远,使用PDO这样的"数据库访问抽象层"是一个不错的选择. PDO中包含三个预定义的类 PDO中包含三个预定义的类,它们分别是 PDO.PDOStatement 和 PDOException. 一.PDO PDO->be

PHP-------PDO:数据访问抽象层

PDO:数据访问抽象层 它是用来做数据访问的,和数据库之间连接,执行一些SQL语句 这种方式比之前的,Mysqli的方式功能更大一些 用一张图来说明: 人为写了一条SQL语句,是通过Mysqli的对象(封装好的类),通过Mysql驱动,然后在操作Mysql数据库.这是以前的方式. 如果这条SQL语句,想访问另外一个数据库,不是Mysql了,想用一下Oracle Call数据库或者SQL Server数据库,根据逻辑,应该还要有一个类是专门操作Oracle Call 数据库的类 同一张图来表示:

搜索服务Solr集群搭建 使用ZooKeeper作为代理层

上篇文章搭建了zookeeper集群 那好,今天就可以搭建solr搜服服务的集群了,这个和redis 集群不同,是需要zk管理的,作为一个代理层 安装四个tomcat,修改其端口号不能冲突.8080~8083 如果是正式环境下,则分别使用4台linux作为节点 修改server.xml文件修改端口号,总共3个 以上步骤,在tomcat03,tomcat04上重复执行,但是3个端口一定要注意不能重复 向tomcat下部署solr 把单机版的solr工程复制到tomcat下即可 solr在别的机子上

oracle数据性能库优化方案精髓整理收集回顾

oracle数据库性能优化总体法则: 一.减少数据访问(减少硬盘房访问次数) 二.返回更少的数据(减少网络传输或磁盘访问) 三.减少交互次数(减少网络传输) 四.减少服务器开销(减少cpu及内存开销) 五.利用更多的资源(增加资源) ===================具体说明================= 一.减少数据访问(减少硬盘房访问次数) 1.减少数据访问 1.1.创建并使用正确的索引 索引会大大增加DML(增删改)的开销[合理的索引会大大提高效率100倍.1000倍,但不合理的索

PHP中关于PDO数据访问抽象层的功能操作

PDO:数据访问抽象层 具有三大特点: 1.可以访问其它数据库  所有数据库都可以 2.具有事务功能 3.带有预处理语句功能(防止SQL注入攻击) 实例操作代码如下: <?php //1.造PDO对象$dsn ="mysql:dbname=mydb;host=localhost";//数据库类型:dbname=数据库名称;host=链接的ip或本机$pdo =new PDO($dsn,"root","root");//$dsn,帐号,密码

PDO 数据访问抽象层

//PDO //数据访问抽象层 <?php //1.操作其它数据库 //2.事务功能 //3.防止SQL注入攻击 //造PDO对象 //$dsn = "mysql:dbname=mydb;host=localhost"; //数据源 //$pdo = new PDO($dsn,"root","123"); //写SQL语句 //$sql = "select * from nation"; //$sql = "i

PDO:数据访问抽象层

<?php //PDO:数据访问抽象层 //带有事务功能: //dsn:数据源 $dsn="mysql:host=localhost;dbname=aaas"; //造pdo对象 $pdo=new PDO($dsn,"root","");//数据源,用户名,密码 //启动事务 $pdo->beginTransaction(); //写SQL语句 $sql="select * form Info"; //执行SQL语

27Exchange Server 2010跨站点部署-客户访问代理和重定向

14.关于Exchange 2010客户端访问代理和重定向 了解Exchange 2010 客户端访问的代理和重定向   1,如果所有的Exchange服务器都在一个站点内,无需考虑 2,当用户所连接的客户端访问服务器和其邮箱不在同一个站点内,则需要通过代理或者重定向. 3,重定向只发生在访问OWA和移动客户端Mobile. 4,可以被代理的客户端访问则有:Outlook Anywhere,POP3,IMAP4,OWA,ECP,Exchange Web Service,ActiveSync. 5