关闭

Oracle统一访问代理层方案

标签: oracle访问代理
4811人阅读 评论(12) 收藏 举报
分类:

目标

提供一个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)

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

 


1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

通过中间代理层来统一管理所有的数据源,后端数据库集群对前端应用程序透明;

1.利用MySQLProxy 实现数据切分及整合. 可用来监视、分析或者传输他们之间的通讯信息。他的灵活性允许你最大限度的使用它,目前具备的功能主要有连接路由,Query分析,Query过滤和修改,负载均衡,以及基本的HA机制等。MySQLProxy 本身并不具有上述所有的这些功能,而是提...
  • wkwanglei
  • wkwanglei
  • 2015-11-05 17:26
  • 1872

[转] 淘宝数据库分布式代理层TDDL剖析

TDDL淘宝根据自己的业务特点开发了TDDL(Taobao Distributed Data Layer 外号:头都大了 ©_Ob)框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource实现,具有主备,读写分离,动态数据...
  • heiyeshuwu
  • heiyeshuwu
  • 2015-08-07 11:46
  • 4797

oracle代理用户

一描述: 在实际环境中我们可能有这样一种需求,就是使用用户A建立用户B的表。但我们又不能授予A create any table的权限(因为这样A用户就可以在所有用户下建立表),ORACLE似乎也没有更细粒度的权限可以授予给A用户。在这种情况下,TOM大叔告诉我们可以使用代理用户,实验过程见下文。...
  • Scofy0
  • Scofy0
  • 2015-06-29 10:33
  • 790

查看ORACLE是共享还是专用服务器模式

1.select count(*) from v$shared_server;或不为O表示为共享服务器模式。 2.在tnsnames.ora里设定的 aaaa= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOS...
  • z69183787
  • z69183787
  • 2015-01-22 11:13
  • 1682

通过中间代理层来统一管理所有的数据源,后端数据库集群对前端应用程序透明;

1.利用MySQLProxy 实现数据切分及整合. 可用来监视、分析或者传输他们之间的通讯信息。他的灵活性允许你最大限度的使用它,目前具备的功能主要有连接路由,Query分析,Query过滤和修改,负载均衡,以及基本的HA机制等。MySQLProxy 本身并不具有上述所有的这些功能,而是提...
  • wkwanglei
  • wkwanglei
  • 2015-11-05 17:26
  • 1872

数据访问层的设计(一)——功能与接口定义

数据访问层的设计我研究了很长时间,关于接口的定义,好几次都推翻重来。 园子看到过很多easyui+MVC+EF的文章,在早期,我的设计也类似。 但是后来为了增强它,想加点功能通用的功能进去,就耗费了非常多的时间。   这是一个怎么样的DAL? 也许你已经见过许多实用EF的架构了,...
  • dyllove98
  • dyllove98
  • 2013-07-19 19:19
  • 7959

统一web访问层方案

1. 概述 信息中心网络组已经对应用服务器所在的网络进行划分,应用系统的节点分别部署到网络的接入层、应用层和数据层。这样的划分能够提高应用系统和敏感数据的安全性,但是增加了应用系统部署的复杂性。 根据网络规划,接入层作为用户(包括内部用户和外部用户)与关键服务器的隔离层,直接接收用户...
  • guzicheng
  • guzicheng
  • 2013-09-14 17:09
  • 1186

统一接入层方案

Table of Contents 1 概述2 技术方案 2.1 要考虑的问题2.2 总体架构2.3 负载均衡器选型2.4 高可用方案2.5 会话保持方案2.6 URL资源的统一规划2.7 方案扩展 3 实施计划 1 概述 信息中心网络组已经对应用服务器所...
  • JeamKing
  • JeamKing
  • 2017-06-24 22:06
  • 555

统一接入层方案

Table of Contents 1 概述2 技术方案 2.1 要考虑的问题2.2 总体架构2.3 负载均衡器选型2.4 高可用方案2.5 会话保持方案2.6 URL资源的统一规划2.7 方案扩展 3 实施计划 1 概述 信息中心网络组已经对应用服务...
  • wallwind
  • wallwind
  • 2014-11-13 00:12
  • 3412

[转] 淘宝数据库分布式代理层TDDL剖析

TDDL淘宝根据自己的业务特点开发了TDDL(Taobao Distributed Data Layer 外号:头都大了 ©_Ob)框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource实现,具有主备,读写分离,动态数据...
  • heiyeshuwu
  • heiyeshuwu
  • 2015-08-07 11:46
  • 4797
    作者
    https://github.com/sea-boat

    公众号:(内容包括分布式、机器学习、深度学习、NLP、Java深度、Java并发核心、JDK源码、Tomcat内核等等)



    微信:

    打赏作者

    如果您觉得作者写的文章有帮助到您,您可以打赏作者一瓶汽水(*^__^*)

    个人资料
    • 访问:1020516次
    • 积分:13638
    • 等级:
    • 排名:第1096名
    • 原创:321篇
    • 转载:5篇
    • 译文:1篇
    • 评论:342条
    博客专栏
    最新评论