一种管理数据访问的系统的制作方法

文档序号:13207852阅读:228来源:国知局
一种管理数据访问的系统的制作方法

本发明涉及数据库技术领域,尤其是涉及一种管理数据访问的系统。



背景技术:

在大型业务系统中,随着时间和业务的发展,数据库中的表会越来越多,热点业务表中的数据量也会越来越大,相应地,数据操作,如增删改查的开销也会越来越大,而用于承载传统数据库的主机服务器的处理能力(磁盘/cpu/内存/带宽)是有限的,在业务发展过程中很容易达到瓶颈。随着应用集群的扩大,数据库的水平拆分和垂直拆分将成为常态。

垂直(纵向)拆分是指按功能模块拆分,比如分为订单库、商品库及用户库等,这种方式多个数据库之间的表结构不同。

水平(横向)拆分是将同一个表的数据进行分块保存到不同的数据库中,这些数据库中的表结构完全相同。

一般的业务系统都是采用将数据访问集成在应用服务中的实现方式,数据库的迁移变化会带来业务代码的关联变更,每次数据库的变化的代价将会变得昂贵并且给业务系统带来很大风险。

原有将数据访问集成在应用服务中的实现方式有如下特点及问题:

1、基于单台数据库进行数据扩展,若某张海量数据表需要进行横向多库拆分需要调整大量数据访问逻辑。

2、传统的数据访问过程分布在应用服务的代码中,复杂度很高,难以用可视化的模型进行统一管理和治理。

3、对于数据库类型的变更调整复杂难以驾驭,更难以将多类型的数据库集成使用以利用各类型数据库本身的优势特征。



技术实现要素:

本发明所要解决的技术问题是:针对现有技术存在的问题,提供一种管理数据访问的系统,可实现数据与应用解耦,以使数据的部署变化不会影响应用,并且管控数据的访问过程。

为了解决上述技术问题,本发明采用的技术方案为:提供一种管理数据访问的系统,包括客户端及服务端,其中还包括:负载均衡模块、高可用支持模块、rpc通信模块、流量控制模块、事务支持模块、数据治理模块及数据操作执行模块;其中

客户端经过负载均衡模块接入服务端,数据访问服务端后,通过高可用支持模块保障访问的服务端的可用性,流量控制模块对客户端的请求进行计数,并对不符合流控配置的请求予以拒绝,rpc通信模块用于实现客户端和服务端数据传输,事务支持模块用于判定当前数据操作的类型,并由数据操作执行模块完成实际的数据访问操作,以数据逻辑-数据表-数据源的方式控制和记录执行过程,并最终通过数据治理模块对访问痕迹进行记录统计。

其中,所述负载均衡模块集成于客户端中,以利用zookeeper获取当前可用的服务地址列表,在客户端实现负载均衡。

其中,所述高可用支持模块通过zookeeper实时监控服务地址列表,并剔除数据服务节点失效的服务地址;且启用异步线程对服务地址列表中的数据节点进行心跳监控,以保证zookeeper和数据服务节点的网络发生异常且应用客户端节点和数据服务节点的网络无异常的时候不对数据服务节点进行剔除。

其中,所述rpc通信模块采用thrift架构,对通信过程进行二次封装;其包括:

idl定义单元,用于对客户端及服务端定义统一的idl文件,以进行接口识别,并生成对应的序列化代码及反序列化代码;

协议封装单元,用于在序列化时嵌入封装模式,并在反序列化时进行数据解析;

数据格式单元,用于划分数据类型;

异步通信单元,用于客户端及服务端的nio异步通信,利用epoll技术和i/o处理线程池,提升数据服务的并发量及吞吐量。

其中,所述流量控制模块提供分布式流量控制,支持多级数据粒度,控制访问频次;其包括:

流量计数器单元,用于收集将各个数据服务节点的访问信息,并发送到zookeeper,并对超出单位时间访问限制,则想客户端反馈流量控制的异常信息;

控制逻辑注入单元,用于控制访问语句、数据表及数据源的访问频次,并实现动态注入控制。

其中,所述事务支持模块包括:

单点事务单元,用于通过数据服务控制单个应用节点上的会话事务及由该应用节点发起事务的申请、提交及回滚调用;

分布式事务单元,用于协同服务端事务及客户端事务。

其中,所述服务端提供事务申请接口、事务提交接口及事务回滚接口供客户端调用;其中

在客户端调用事务申请接口后,将事务上下文对象本地缓存在服务端,并且将上下文标识返回给客户端,在后续每次客户端调用中自动定位到已缓存的事务上下文对象;

当客户端向服务端发起请求后,服务端按上下文对象关联的数据库连接列表,通过事务提交接口将事务逐个提交到数据库,并释放事务上下文;

当客户端向服务端发起请求后,服务端按上下文对象关联的数据库连接列表,通过事务回滚接口将事务逐个从数据库回滚,并释放事务上下文;

服务端对事务进行超时管理,自动清理超时会话,其中自动清理操作由异步线程自动触发;

客户端调用事务申请接口,当在数据服务调度时传入上下文标识时,客户端api根据上下文标识自动将请求转发到事务申请时的数据服务节点,在数据操作调用完成后,调用事务提交接口或事务回滚接口;

客户端调用事务申请接口,当在数据服务调度时未传入上下文标识时,则表示使用无状态数据服务,服务端在调用后不缓存事务上下文信息。

其中,所述数据治理模块包括:数据访问监控单元、数据访问注册单元及数据指标输出单元;其中

服务端启用异步线程后,数据访问监控单元自动将数据服务节点的状态信息和效率统计信息同步到zookeeper;

客户端自动将客户端自身的ip地址和进程号注册到zookeeper;

所述数据访问监控单元查询服务端和客户端的信息,对访问异常的服务端或客户端进行屏蔽隔离;

所述数据访问注册单元对所有数据访问逻辑、数据对象及数据源进行统一静态注册,通过和外部管理平台的对接,对数据对象、执行计划及敏感数据访问进行统一管理审计;

所述访问指标输出单元根据多种维度,自动或按需生成指标信息,并通过数据访问指标信息,对运行时的数据操作执行治理策略;其中指标信息包括访问量、性能,异常量及访问来源;所述治理策略包括访问安全审计、数据访问策略及故障隔离策略调整。

其中,所述数据操作执行模块包括失效备援单元及数据路由单元;其中

失效备援单元用于服务端对后端数据源进行自动可用性探测,在探测到存在备援数据源后,则在当前数据源异常时,自动启用所述备援数据源,实现运行时的自动故障切换;

数据路由单元用于服务端解析数据操作,并根据输入条件及当前访问的上下文标识自动将数据访问请求路由到其他配置的数据源,实现对数据源的分库操作。

本发明的有益效果在于:区别于现有技术,本发明通过分布式数据服务统一管理数据访问过程的方式,将数据和应用真正做到解耦,以具备数据治理能力,在分布式数据服务中对所有数据访问采用“数据逻辑-数据表-数据源”进行分级建模,达到数据分布式访问和集中一点管理的目标,在数据与应用解耦后,数据的部署变化不会影响应用,并且管控数据的访问过程。

附图说明

图1为本发明管理数据访问系统的功能模块架构示意图;

图2为本发明高可用数据源模型的架构示意图;

图3为本发明在数据服务节点上获取真实数据库连接的过程示意图。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

请参照图1~图3,图1为本发明分布式数据服务的功能架构图,本发明提供一种管理数据访问的系统100,包含负载均衡模块110、高可用支持模块120、rpc通信模块130、流量控制模块140、事务支持模块150、数据治理模块160及数据操作执行模块170。

本发明的客户端集成有负载均衡模块110,数据访问请求是以这样的路径在本系统100中进行数据访问操作的:首先数据访问服务端,通过高可用支持模块120保障访问的服务端的可用性,在流量控制模块140对客户端的请求进行计数并对不符合流控配置的请求予以拒绝,基于rpc通信模块130实现客户端和服务端数据传输,通过事务支持模块150判定当前数据操作是加入全局分布式事务还是自行建立单点事务,在数据操作执行模块170完成实际的数据访问操作,最终通过数据治理模块160对访问痕迹进行记录统计。

上述的流控配置是支持按ip地址/数据库语句/数据源/数据表的粒度控制每分钟(或每小时)的允许访问频次,因此当客户端请求次数超过单位时间允许的调用量阈值,则表示该请求为不符合流控配置;rpc(remoteprocedurecallprotocol)指的是远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

以下针对本发明的上述模块和实现策略进行阐述,通过相关模块构建数据的分布式访问,高可用,高性能,跨语言,可监控的关键能力。

一、负载均衡模块110:

分布式数据访问层的数据服务以集群方式提供,在数据服务客户端集成了可定制扩展的负载均衡模块110。

引入zookeeper,利用zookeeper获取当前可用的服务地址列表,在客户端api实现负载均衡。负载均衡策略支持轮询、随机、本地优先及负载度优先等算法。各种负载均衡策略各有优势,比如利用本地优先调度算法优先将本机请求路由到本机的数据服务节点上,可将网络开销降到最小,将通信效率提升到10us的级别。

zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是hadoop和hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。zookeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

二、高可用支持模块120:

通过客户端api实现系统的高可用保障性,具体地,利用zookeeper对服务地址列表进行实时监控,在某个数据服务节点失效时自动将客户端的无效服务地址剔除。同时,启用异步线程对服务列表中的数据节点主机进行心跳监控,以保证zookeeper和数据服务节点的网络发生异常时,但应用客户端节点和数据服务节点的网络无异常时,不对数据服务节点进行剔除。这是高可用支持模块120保障服务地址可用的两个环节,一是从zookeeper获取zookeeper认为可用的服务列表,二是基于第一个环节的结果探测,只有在zookeeper正常注册且客户端发送的心跳正常的服务端会出现在客户端的服务地址列表中。

三、rpc通信模块130:

采用增强的thrift架构,对通信过程进行二次封装,实现高效跨语言rpc调度框架。其包括idl定义单元131、协议封装单元132、数据格式单元133及异步通信单元134,具体地:

idl定义单元131中,客户端和服务器端通过定义统一的idl(interfacedefinitionlanguage)文件来进行接口识别并且生成对应的序列化和反序列化代码。

协议封装单元132在序列化过程时支持嵌入多种包装模式,如加密、压缩等,对应的接收端接收到包装后的数据则自动调度相应的反序列化过程进行原始数据解析。

数据格式单元133支持多种数据类型,将数据操作过程需要的数据分为几大基本类型,支持数值、文本、结构体、简单容器等。

异步通信单元134支持客户端和服务端的nio异步通信,同时支持epoll实现,极大提升数据服务的并发量和吞吐量。

四、流量控制模块140:

通过该模块,系统可进行分布式的流量控制,支持多级数据粒度,包括ip地址/数据库语句/数据源/数据表的粒度,以方便控制访问频次。其进一步包括如下各个单元:

流量计数器单元141,提供分布式计数器,将各个数据服务节点的访问信息实时收集到zookeeper,若超出配置的单位时间访问限制,则对客户端返回流量控制的异常信息。

控制逻辑注入单元142,支持对访问语句、数据表、数据源的访问频次进行控制,可实现动态注入控制。

五、事务支持模块150包括单点事务单元151及分布式事务单元152,具体地:

单点事务单元151支持通过数据服务对单个应用节点上的会话事务进行控制,由应用节点主动发起事务的申请以及事务的提交或回滚调用。

现有技术中分布式事务一般通过xa方式保障高一致性,但是这往往带来更高的系统负荷。在高可靠的网络通信环境下,本发明采用简化的分布式事务单元152,其在不牺牲事务一致性的情况下,提供了更高效和低系统消耗的事务管理能力,协同完成服务器端事务和客户端事务。

在服务端事务中,服务端提供有状态的数据服务,提供3类事务接口供客户端调用:事务申请接口、事务提交接口及事务回滚接口。

在客户端调用事务申请接口后,在每次事务申请调用后将事务上下文对象本地缓存在服务端上,并且返回给客户端上下文标识,在后续每次客户端调用中自动定位到已缓存的事务上下文对象标识。

当客户端向服务端发起请求后,服务端按上下文对象关联的数据库连接列表通过事务提交接口将事务逐个提交到数据库,并释放事务上下文;具体地,客户端在一个交易会话完成或处理结束后,服务端调用事务提交接口将事务逐个提交到数据库。

当客户端向服务端发起请求后,服务端按上下文对象关联的数据库连接列表通过事务回滚接口将事务逐个从数据库回滚,并释放事务上下文;具体地,客户端在一个交易会话失败或处理异常后,服务端调用事务回滚接口将事务逐个从数据库回滚;或者是在客户端在超过规定时间内为处理交易会话后,服务端自动触发调用。

服务端不仅提供了上述3类接口,还实现事务的超时管理,自动清理超时会话,其中清理由异步线程自动触发。

在客户端事务中,客户端想保持全局事务时,保证先调用过事务申请接口,并且后续每次的数据服务调度都带上上下文标识信息,客户端api根据上下文标识信息自动将请求转发到事务申请时的数据服务节点。在数据操作调用完成后,调用事务提交接口或事务回滚接口;

客户端在数据服务调度时未传入上下文标识则默认使用无状态数据服务,此时的服务端在每次调用后不缓存事务上下文信息。

六、数据治理模块160:

本系统提供数据治理模块160,通过数据访问的模型统一管理、对数据访问的全程监控和指标输出管理,使系统具备数据静态和动态治理能力,对系统的数据资产和访问情况做到清晰可视;其进一步包括数据访问监控单元161、数据访问注册单元162及访问指标输出单元163,其中

在数据服务的服务端启用异步线程后,数据访问监控单元161自动将本节点的状态信息和效率统计信息(访问次数,平均性能及异常量等)等资料同步到zookeeper。

数据服务客户端自动将本节点请求端的ip地址和进程号等资料注册到zookeeper。

可由管理员查询数据服务服务端和客户端的信息,对访问异常的服务端或客户端进行屏蔽隔离等管理操作。

数据访问注册单元162提供数据访问注册功能。当所有数据访问逻辑、数据对象及数据源都进行了统一的静态注册才能使用,这可提升数据访问的透明度,降低数据治理难度,通过和其他管理平台的对接,数据对象,执行计划,敏感数据访问均可统一管理审计,如外部的安全系统,与其对接后,可实现敏感表的访问语句的管理。

访问指标输出单元163提供访问指标输出功能。可自动或按需根据多种维度生成访问量、性能、异常量及访问来源等指标信息,通过该数据访问指标可以进行运行时的数据治理包括访问安全审计以及数据访问策略,故障隔离策略的调整等。

数据的治理模块160和数据操作执行模块170都依据“数据逻辑-数据表-数据源”方式进行分级建模管理。数据治理模块160以这3个维度为基本管控要素进行信息采集。

七、数据操作执行模块170:

数据操作执行模块170将数据操作以“数据逻辑-数据表-数据源”的三个关键要素进行分解并控制数据操作执行的过程,包括数据失效备援(failover)单元171及数据路由单元172;其中

数据失效备援单元171提供数据服务的服务端对后端数据源进行自动可用性探测的功能,若数据源存在备用的failover数据源,那么在当前数据源异常时,将自动启用failover数据源,实现在运行时自动故障切换。

数据路由单元172用于数据服务的服务端解析数据操作的“数据逻辑-数据表-数据源”要素并根据输入条件和当前访问的上下文自动将数据访问请求路由到多个配置的数据源。通过数据路由单元可实现数据源分库分表操作时,不影响应用系统。

在数据服务节点上获取真实数据库连接的过程参见图3所示。

数据操作执行模块170的核心是高可用数据源模型,模型参见图2所示。

该模型是基于数据库连接池的二次封装,从而支持多个数据库之间的访问策略控制。支持以读写分离的方式访问数据源降低读请求对数据库的压力,支持以负载均衡方式访问等价的多个数据源将数据库的压力分摊,支持在数据源异常时的故障隔离和自动灾备将请求路由到正常的数据源上。

通过该模型可实现数据访问过程的封装与建模,实现对数据的管控与治理,屏蔽后端数据库变化对前端数据访问代码的影响,提供了一种统一稳定的数据访问模式。

本发明所述的管理数据访问的系统具有如下特点:

1、采用分布式服务,通过集群化管理、引入zookeeper等技术实现数据服务的高可用性。

2、能够方便并且代价极小地将某张数据量到达极限的数据表进行多库分表,同时应用服务的逻辑不用修改。

3、全面接管系统的数据库交互访问过程,具备可视化的数据治理能力。

4、使数据访问过程支持读写分离,智能failover等特征,优化数据访问的性能并提高数据访问可靠性。

5、物理数据库支持oracle、mysql等常用数据库,具备可扩展可混用的优势。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1