Oracle统一访问代理层方案

简介: 目标提供一个oracle数据库统一访问代理层,统一管理所有oracle数据库用户名的连接池,让多个应用系统相同的数据库用户公用连接池以节省oracle服务器的总连接数,并且提供统一管理oracle能力。

目标

提供一个oracle数据库统一访问代理层,统一管理所有oracle数据库用户名的连接池,让多个应用系统相同的数据库用户公用连接池以节省oracle服务器的总连接数,并且提供统一管理oracle能力。 由访问层维护后端oracle不同用户的连接池,应用通过jdbc协议告知访问层需要操作的数据库对象的用户名,访问层即从对应用户名的连接池中取出一条数据库连接执行sql。达到相同用户名连接复用效果。例如,user2&sql传入访问层,访问层engine定位到第一个oracleuser2用户名连接池中,并取出一条连接执行。

 

 

 

 

功能

路由选择:提供通过数据库用户名导航到相应的数据库连接池。

 

sql语句透传:即不对应用传入的sql做更改,通过简单的用户名导航到对应的oracle中执行,把执行结果返回应用端。

 

支持多个oracle库:即可同时代理多个oracle数据库,所有访问数据库的连接池统一由代理层管理。

 

建设方案

基本功能

 

 

 

总体方案是向应用系统嵌入一个jar包(mysql驱动包),对于应用来说就像正常使用jdbc对数据库进行操作。

 

通过lvs负载均衡,接收端使用mysql协议与应用通信,前端使用NIO网络模式对请求接收。

 

后端使用oracle JDBC驱动连接若干数据库,并且使用BIO网络模式,提供良好的水平扩展能力,生产上可以很方便通过增加机器链路使处理能力接近线性增长。

 

核心模块是SQL Engine,提供应用传入的sql数据库连接池路由选择及数据库执行等操作。

 

    另外实现线程管理、心跳管理、会话管理、用户鉴权、Hint功能模块等功能。

 

 

 

配套功能

功能测试:提供脚本工具自动跑功能测试。

 

性能测试:提供脚本工具自动跑性能测试。

 

关键参数监控:提供一个后台可实时观察代理层前端网络接收情况,及后端数据库连接池的各种状态。

 

配置发布:目前只提供手动修改配置文件及手工发布。

 

 

技术栈

前端NIO模式:

前端使用非阻塞网络模式接收报文,提高系统的接收处理能力,提高系统的多并发能力。

后端BIO模式:

后端使用阻塞网络模式与数据库交互,由于连接池连接一般是有数量限制的,且oracle数据库也会有连接数限制,所以这里采用BIO模式比较适合,对连接的操作维护方便简单,使用BIO模式并不会影响后端与数据库交互的性能,同时对于系统水平扩展提供了友好的支持。

Reactor模式

采用Reactor模式对网络IO的性能优化。

Dom4j组件

    此组件主要用于xml文件的解析工作。

OracleDriver驱动

    作为oracle数据库连接驱动程序。

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)

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

 


目录
相关文章
|
10月前
|
Oracle 关系型数据库 数据库
Flink CDC中oracle dataguard模式下,有没有cdc备库的方案?
Flink CDC中oracle dataguard模式下,有没有cdc备库的方案?
152 1
|
SQL Prometheus 监控
意犹未尽的第2篇再次推出,继续讲解oracledb_exporter监控Oracle,一个入侵性极低的监控方案。
意犹未尽的第2篇再次推出,继续讲解oracledb_exporter监控Oracle,一个入侵性极低的监控方案。
422 0
|
Prometheus 监控 Oracle
oracledb_exporter监控Oracle,一个入侵性极低的监控方案。
oracledb_exporter监控Oracle,一个入侵性极低的监控方案。
739 0
|
Oracle 关系型数据库 数据库
Oracle数据库访问其他用户下的表,不加表所属的用户名的实现方法
Oracle数据库访问其他用户下的表,不加表所属的用户名的实现方法
|
Oracle 关系型数据库 数据库
关于PostgreSQL数据库兼容Oracle数据库闪回查询的实现方案
注:关于在PostgreSQL上面实现Oracle数据库的闪回功能(闪回查询 闪回表 闪回删除…)的这个想法已经有很长时间了,但是鉴于本人的能力 精力和身体条件 迟迟没有完成。期间也有很多的小伙伴跟我一起研究过这个功能,但是最终都因为各种各样的问题 没有做下去。Oracle数据库闪回功能跨越版本较大,功能也比较强大 在PostgreSQL数据库上实现,需要对数据库内核有很深入的理解 两大数据库不同的底层原理也终将影响各自的实现策略,PostgreSQL标记删除就地插入的特点和基于事务快照行可见性的特性是我们可以开发PostgreSQL闪回查询的大前提。本文主要介绍 实现闪回查询的 一种实现方案
324 0
|
存储 Oracle 关系型数据库
Oracle字符乱码、数据越界访问典型Bug分析
前言: 作为乙方,在甲方客户那里验收阶段发现两个诡异Bug。以下就问题来源、问题根因、解决方案、如何避免做详细描述。
170 0
|
Oracle 数据库 关系型数据库
Oracle字符乱码、数据越界访问典型Bug分析
作为乙方,在甲方客户那里验收阶段发现两个诡异Bug。以下就问题来源、问题根因、解决方案、如何避免做详细描述。
462 0
|
关系型数据库 数据库 数据安全/隐私保护
Oracle跨服务器访问使用dblink
当要夸服务器访问数据库时,我们可以使用dblink建立连接服务器间的通道,本地创建了远程数据库的dblink后,访问远程服务器的库就像操作一个库一样了。 如果需要创建全局 DBLink,首先要确定用户有创建 dblink 的权限: 使用此语句查看:select * from user_sys_pr...
1834 0
|
Oracle 关系型数据库 数据库
win下安装oracle_fdw:从PostgreSQL中访问Oracle数据库
目的介绍 现在项目开发遇到一个问题,就是需要从PostgreSQL中访问Oracle数据库 身为渣渣猿一脸懵逼。于是乎请教了公司的数据库方面的大牛韩工。告诉我用oracle_fdw 可以实现,但是在实现安装的过程中,还是各种问题,又麻烦韩工帮我看了好久。
1504 0

推荐镜像

更多