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

 

 

 

========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

[为什么写《Tomcat内核设计剖析》](http://blog.csdn.net/wangyangzhizhou/article/details/74080321)

=========================

 

时间: 2024-10-31 13:38:19

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

结构-统一访问操纵数据库的这种服务该如何设计实现呢?

问题描述 统一访问操纵数据库的这种服务该如何设计实现呢? 这样的系统结构中统一访问数据库的这层.该如何设计好呢...用传统的HTTP请求服务转发可以么? 我想加个统一处理DB的层在这个层去访问缓存或者查询数据库提高性能. 多个应用服务器开线程池对数据库的压力也大. 解决方案 用webservice一类的中间件. 解决方案二: 你是用JAVA的么..?如果是的话,直接用Mybatis或hibernate

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

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

请教C#程序免安装Oracle客户端访问远程数据库的方法

问题描述 程序需要访问远程Oracle数据库,数据库版本是11g,请问可以不安装Oracle客户端访问数据库吗?百度了一下,有人说可以下载对应版本的Oracleinstantclient,然后把里面的DLL文件复制到执行文件目录下就可以了.但是我操作了一下,程序会报错:"Oracle.DataAccess.Client.OracleConnection"的类型初始值设定项引发异常请问具体应该怎么操作才可以在不安装Oracle客户端的情况下远程访问数据库?谢谢! 解决方案 解决方案二:1

oracle10g-新装ORACLE无法访问通过tnsnames配置的另一台集群oracle服务器

问题描述 新装ORACLE无法访问通过tnsnames配置的另一台集群oracle服务器 在一台linux系统刚装了oracle10g,通过tnsnames配置了如下的地址,无法访问,(PS: 该配置确定没问题,从正常的主机上复制过来的,同时,通过拆分该集群oracle来访问其中一台,却可以访问) aadb = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.98)(PORT = 1521))

linux 下怎么访问phy层的硬件(比如dp83640芯片)以及该硬件的驱动程序

问题描述 linux 下怎么访问phy层的硬件(比如dp83640芯片)以及该硬件的驱动程序 am335系列的开发板,网口芯片用的是dp83640,现在整个网络可以运行,但是我想修改dp83640芯片寄存器的内容,以及关于dp83640的驱动程序,该怎么弄,像字符设备我们可以用open函数来打开这个设备,再用write等函数进行操作,但是这个网口芯片没有设备名,只有网络设备节点eth0,我该怎么访问到dp83640呢.以及如何使用驱动里面的函数(比如下面的驱动)?请大神解答. static st

请问如何访问第二层路由?

问题描述 请问如何访问第二层路由? 第一层是电信送的光猫,下面连着一个tp-link路由,地址为192.168.1.1 我的地址为192.168.1.100 如何访问光猫的设置页面? 解决方案 浏览器中输入地址192.168.1.1,账号密码,tp-link上有标注,一般是admin 解决方案二: i 不需要访问猫,直接访问路由器配置页面填写猫的账号信息

SQL Server与Oracle并行访问的本质区别

设计优良.性能卓越的数据库引擎可以轻松地同时为成千上万的用户服务.而"底气不足"的数据库系统随着更多的用户同时访问系统将大大降低其性能.最糟糕的情况下甚至可能导致系统的崩溃. 当然,并行访问是任何数据库解决方案都最为重视的问题了,为了解决并行访问方面的问题各类数据库系统提出了各种各样的方案.SQL Server和Oracle两大DBMS也分别采用了不同的并行处理方法.它们之间的实质差别在哪里呢? 并行访问的问题 并行访问出现问题存在若干种情况.在最简单的情形下,数量超过一个的用户可能同

附录 B:访问策略最佳方案

附录 C:网络安全的最佳方案 Steve Riley,Microsoft Communications Industry Solutions Group Consulting Practice 2000 年 8 月 7 日 这篇短文论述了网络设计和安全的最佳方案.尽管网络的设计和安全保护方法很多,但只有某些方法和步骤深受许多业内人士的喜欢. 筛选路由器 - 第一道防线应当使用筛选路由器来保护任何面向 Internet 的防火墙.这种路由器只有两个接口:一个与 Internet 相连而另一个与外部

SQL Server与Oracle并行访问的区别

设计优良.性能卓越的数据库引擎可以轻松地同时为成千上万的用户服务.而"底气不足"的数据库系统随着更多的用户同时访问系统将大大降低其性能.最糟糕的情况下甚至可能导致系统的崩溃. 中国.站.长站 当然,并行访问是任何数据库解决方案都最为重视的问题了,为了解决并行访问方面的问题各类数据库系统提出了各种各样的方案.SQL Server和Oracle两大DBMS也分别采用了不同的并行处理方法.它们之间的实质差别在哪里呢? Www.Chinaz.com 并行访问的问题     并行访问出现问题存在