首页> 中国专利> 适配多种数据源的分布式应用国产化改造方法及设备

适配多种数据源的分布式应用国产化改造方法及设备

摘要

本发明实施例提供一种适配多种数据源的分布式应用国产化改造方法及设备,该方法包括:从数据库连接池配置文件获取自定义数据源信息;根据所述数据库连接池配置文件,确定是否需要多个标准产品单元SPU;当确定需要多个SPU时,从Zookeeper服务器获取所述多个SPU的编号;根据所述多个SPU的编号,从所述数据库连接池配置文件中获取所述多个SPU分别对应的数据库连接信息;其中,所述数据库连接信息包括:数据库的统一资源定位器URL、数据库的用户名和数据库的密码;根据所述多个SPU分别对应的数据库连接信息,建立每个SPU与相应的数据源之间的连接。该方法可以保证环境的变化对原有项目没有影响或将影响降到最小。

著录项

  • 公开/公告号CN112231384A

    专利类型发明专利

  • 公开/公告日2021-01-15

    原文格式PDF

  • 申请/专利权人 中国建设银行股份有限公司;

    申请/专利号CN202011197844.1

  • 发明设计人 胡康康;李承文;

    申请日2020-10-30

  • 分类号G06F16/25(20190101);G06F21/60(20130101);G06F21/62(20130101);

  • 代理机构11127 北京三友知识产权代理有限公司;

  • 代理人贾磊;李辉

  • 地址 100033 北京市西城区金融大街25号

  • 入库时间 2023-06-19 09:35:27

说明书

技术领域

本发明涉及分布式应用,具体涉及一种适配多种数据源的分布式应用国产化改造方法及设备。

背景技术

在大国博弈的时代背景下,关键领域的国产化成为竞争的焦点,国家自上而下的产业政策将加速自主可控产业链的成长;与此同时,在以信息技术为代表的新技术加速发展的背景下,国内IT产业实现核心技术自主可控迎来历史性的机遇。

数据是信息系统的基础,国产化改造涉及数据源的适配与改造。在项目变化日趋频繁的情况下,如何保证环境的变化对原有项目没有影响或将影响降到最小,是程序设计必须考虑的一个方面。

发明内容

本发明实施例提供一种适配多种数据源的分布式应用国产化改造方法及设备,以保证环境的变化对原有项目没有影响或将影响降到最小。

根据本公开第一方面,提供一种适配多种数据源的分布式应用国产化改造方法,其包括:

从数据库连接池配置文件获取自定义数据源信息;

根据所述数据库连接池配置文件,确定是否需要多个标准产品单元SPU;

当确定需要多个SPU时,从Zookeeper服务器获取所述多个SPU的编号;

根据所述多个SPU的编号,从所述数据库连接池配置文件中获取所述多个SPU分别对应的数据库连接信息;其中,所述数据库连接信息包括:数据库的统一资源定位器URL、数据库的用户名和数据库的密码;

根据所述多个SPU分别对应的数据库连接信息,建立每个SPU与相应的数据源之间的连接。

在一些可能的实施方式中,该方法还可以包括:

当确定需要单个SPU时,从所述数据库连接池配置文件或者第二配置文件中获取数据库连接信息。

在一些可能的实施方式中,所述的当确定需要多个SPU时,从Zookeeper服务器获取所述多个SPU的编号,具体可以包括:

当确定需要多个SPU时,获取主机名称;

根据所述主机名称以及Zookeeper服务器上存储的主机名称与SPU之间的映射关系,从所述Zookeeper服务器获取所述多个SPU的编号。

在一些可能的实施方式中,所述数据库的密码采用加密方式进行加密。

在一些可能的实施方式中,所述的当确定需要单个SPU时,从第二配置文件中获取数据库连接信息,具体可以包括:

当确定需要单个SPU时,从maven的pom.xml文件的profile标签中获取数据库连接信息。

在一些可能的实施方式中,所述的从数据库连接池配置文件获取自定义数据源信息,具体可以包括:

从Druid的配置文件获取自定义数据源信息;其中,所述Druid的配置文件中包括:单SPU场景下,单个SPU对应的数据库连接信息;和/或,多SPU场景下,多个SPU分别对应的数据库连接信息。

在一些可能的实施方式中,所述Zookeeper服务器上注册有各个SPU的数据库连接信息。

根据本公开第二方面,提供一种适配多种数据源的分布式应用国产化改造装置,其包括:

第一获取模块,用于从数据库连接池配置文件获取自定义数据源信息;

判断模块,用于根据所述数据库连接池配置文件,确定是否需要多个标准产品单元SPU;

第二获取模块,用于当确定需要多个SPU时,从Zookeeper服务器获取所述多个SPU的编号;

第三获取模块,根据所述多个SPU的编号,从所述数据库连接池配置文件中获取所述多个SPU分别对应的数据库连接信息;其中,所述数据库连接信息包括:数据库的统一资源定位器URL、数据库的用户名和数据库的密码;

连接模块,用于根据所述多个SPU分别对应的数据库连接信息,建立每个SPU与相应的数据源之间的连接。

根据本公开第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的任意一种适配多种数据源的分布式应用国产化改造方法。

根据本公开第四方面,提供一种适配多种数据源的分布式应用国产化改造方法设备,其包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的任意一种适配多种数据源的分布式应用国产化改造方法。

根据本公开第五方面,提供一种适配多种数据源的分布式应用国产化改造系统,其包括:

应用服务器,用于从数据库连接池配置文件获取自定义数据源信息;根据所述数据库连接池配置文件,确定是否需要多个标准产品单元SPU;当确定需要多个SPU时,从Zookeeper服务器获取所述多个SPU的编号;根据所述多个SPU的编号,从所述数据库连接池配置文件中获取所述多个SPU分别对应的数据库连接信息;其中,所述数据库连接信息包括:数据库的统一资源定位器URL、数据库的用户名和数据库的密码;根据所述多个SPU分别对应的数据库连接信息,建立每个SPU与相应的数据源之间的连接;

Zookeeper服务器,用于存储主机名称与SPU之间的映射关系,并且Zookeeper服务器上注册有各个SPU的数据库连接信息;以及,

数据库服务器,用于与所述应用服务器建立连接,并执行相关的数据库操作。

上述技术方案具有如下有益效果:

本发明实施例提供了一种适配多种数据源的分布式应用国产化改造方法,可实现应用逻辑与具体国产化环境的解耦。通过框架封装,可以实现对多种数据源的适配。通过独立打包部署,可以满足不同环境的无差别运行。

本发明实施例提出了一种适配多种数据源的分布式应用国产化改造方法。与现有技术相比,本发明实施例只需要修改相关配置,不需要应用进行改动。通过加密方式保证了数据库的安全性。另外,本发明实施例针对分布式应用涉及多个部署单元的情况,可以自动适。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例一种适配多种数据源的分布式应用国产化改造方法的流程图;

图2是本发明实施例另一种适配多种数据源的分布式应用国产化改造方法的流程图;

图3是本发明实施例一种适配多种数据源的分布式应用国产化改造装置的功能框图;

图4是本发明实施例一种电子介质的功能框图;

图5是本发明实施例一种适配多种数据源的分布式应用国产化改造设备的功能框图;

图6是本发明实施例一种适配多种数据源的分布式应用国产化改造系统的功能框图;

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

以下对本发明实施例要用到的术语进行解释:

数据源:数据的来源,是提供某种所需要数据的器件或原始媒体,即数据库应用程序所使用的数据库或者数据库服务器。在数据源中存储了所有建立数据库连接的信息。通过提供正确的数据源名称,可以找到相应的数据库连接。

国产化:指引进外国产品和技术时,注意消化吸收,逐步把原来靠从国外引进的设备、产品、零部件,转化为在本国生产制造的过程。国产化是独立发展民族经济的重要措施,对发展中国家有特别重要的意义。

分布式应用(distributed application):指的是应用程序分布在不同计算机上,通过网络来共同完成一项任务的工作方式。分布式应用是由不同的运行于分离的运行环境下的组件构成的应用程序,通常是在不同的平台上通过网络互联起来。典型的分布式应用是二端(Client/Server),三端(client/middleware/server)和n端(client/multiplemiddleware/multiple server)。

数据库连接池:数据库连接是一种关键的、有限的、昂贵的资源。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。

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

Maven:是一个项目管理工具,它包含了一个项目对象模型(Project ObjectModel)、一组标准集合、一个项目生命周期(Project Lifecycle)、一个依赖管理系统(Dependency Management System)和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当使用Maven的时候,用一个明确定义的项目对象模型来描述项目。Maven可以应用横切的逻辑,这些逻辑来自一组共享的或者自定义的插件。

在对国产化应用进行改造时,数据源是一个重要的方面。数据源适配及改造往往需要结合具体的数据库类型及应用逻辑,没有做到代码逻辑与具体国产化环境的解耦。

本发明实施例提供了一种适配多种数据源的分布式应用国产化改造方法,可实现应用逻辑与具体国产化环境的解耦。通过框架封装,可以实现对多种数据源的适配。通过独立打包部署,可以满足不同环境的无差别运行。

为此,本发明实施例提出了一种适配多种数据源的分布式应用国产化改造方法。与现有技术相比,本发明实施例只需要修改相关配置,不需要应用进行改动。通过加密方式保证了数据库的安全性。另外,本发明实施例针对分布式应用涉及多个部署单元的情况,可以自动适配数据库连接,而不必重新修改配置或在打包时传入部署单元参数,方便了打包部署。

图1是本发明实施例一种适配多种数据源的分布式应用国产化改造方法的流程图。如图1所示,该方法可以包括如下步骤:

S110:从数据库连接池配置文件获取自定义数据源信息;

S120:根据数据库连接池配置文件,确定是否需要多个标准产品单元SPU;

S130:当确定需要多个SPU时,从Zookeeper服务器获取多个SPU的编号;

S140:根据多个SPU的编号,从数据库连接池配置文件中获取多个SPU分别对应的数据库连接信息;其中,数据库连接信息包括:数据库的统一资源定位器URL、数据库的用户名和数据库的密码;

S150:根据多个SPU分别对应的数据库连接信息,建立每个SPU与相应的数据源之间的连接。

在一些实施例中,该方法还可以包括:当确定需要单个SPU时,从数据库连接池配置文件或者第二配置文件中获取数据库连接信息。

在一些实施例中,当确定需要多个SPU时,从Zookeeper服务器获取多个SPU的编号,具体可以包括:

当确定需要多个SPU时,获取主机名称;根据主机名称以及Zookeeper服务器上存储的主机名称与SPU之间的映射关系,从Zookeeper服务器获取多个SPU的编号。在可选实施例中,主机名称可以在Linux服务器上设置,通过hostname命令可以获取到主机名称。在可选实施例中,在druid.properties配置文件中SPU编号是唯一的,互不相同,它对应一个具体的数据库连接。但在分布式场景下,多个应用节点可以对应一个SPU编号。

在一些实施例中,数据库的密码采用加密方式进行加密。

在一些实施例中,当确定需要单个SPU时,从第二配置文件中获取数据库连接信息,具体可以包括:当确定需要单个SPU时,从maven的pom.xml文件的profile标签中获取数据库连接信息。

在一些实施例中,从数据库连接池配置文件获取自定义数据源信息,具体可以包括:从Druid的配置文件获取自定义数据源信息;其中,Druid的配置文件中包括:单SPU场景下,单个SPU对应的数据库连接信息;和/或,多SPU场景下,多个SPU分别对应的数据库连接信息。

在一些实施例中,Zookeeper服务器上注册有各个SPU的数据库连接信息。

以下对本发明实施例的技术方案进行详细描述:

本发明实施例提供一种适配多种数据源的分布式应用国产化改造方法。随着大国竞争的日趋激烈,国产化迎来了快速发展的机遇期。在现实情况下,很多信息系统原先是在非国产环境下运行,需要改造为适配国产化环境的应用。为了使改造风险降到最低,很多情况下会采用双轨并行的机制,即某段时间非国产化环境和国产化环境并存。为了实现不同环境下对于数据源的透明性,需要使用自动打包部署的方式。

Maven是一个项目管理工具,基于项目对象模型(POM)概念,可以对Java项目进行构建和依赖管理。使用maven profile特性可以解决不同环境的部署问题。本发明实施例正是基于maven profile机制来实现国产化环境下多种数据源的管理。具体来说,就是在maven的pom.xml文件中加入profile标签,根据环境的差异设置不同的数据库连接信息。如表1所示:

表1:根据环境的差异设置不同的数据库连接信息的profile标签代码表

表1为maven profile信息配置的示例,配置的信息包括数据库驱动名称、数据库连接URL(Uniform Resource Locator,统一资源定位器)、用户名、密码等。用户可根据实际数据源信息调整相关配置。

在国产化项目中,有些应用由于数据量较大,涉及到分库分表,为此需要设置多个部署单元(SPU,Standard Product Unit,标准产品单元),将项目部署到不同的SPU下。也就是说,对于一套应用,会连接不同的数据库,部署到不同的SPU单元下。传统的方式是修改maven profile配置,将不同SPU项目打成不同的包进行部署。这种方式无法自动匹配SPU单元,增加了部署的复杂度。本发明实施例提出了一种自适应SPU单元的数据源管理及自动部署机制,通过Zookeeper来管理SPU单元信息。

Zookeeper是一个分布式服务框架,它维护了一个类似文件系统的数据结构,主要用来解决分布式应用中经常遇到的一些数据管理问题,如统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。本发明实施例将SPU单元信息事先注册到Zookeeper上,并将主机名称与具体SPU单元进行绑定。项目加载时,会根据当前的主机名称以及Zookeeper上主机名称与SPU单元信息的映射关系,获取到当前部署的SPU单元信息,再根据数据库连接池配置文件中SPU单元的数据库连接信息,加载相应的数据库资源。具体地,从zookeeper获取是第几个SPU单元,再读取druid.properties文件,根据SPU单元的键值获取对应的数据库连接信息。本发明实施例可以同时支持单SPU以及多SPU。对于单SPU,在mavenpom.xml中对应profile下只需配置一个SPU的数据库信息即可;对于多个SPU的情况,需要在对应profile下将所有SPU的数据库信息均进行配置,如表2所示:

表2:在对应profile下将所有SPU的数据库连接信息均进行配置的代码表

由于SPU单元是与主机名称进行绑定的,在测试环境及生产环境下会将主机名称及对应SPU信息在Zookeeper上进行注册。在开发环境下,应用面对的是各开发人员,无法事先获取主机名称。对于多SPU场景的开发环境,框架会通过特殊配置进行处理,在配置文件中将模式设置为开发模式,此时程序便会从本地配置中加载数据源信息,而不去从Zookeeper上获取信息,降低了多SPU场景在开发环境下的复杂性,也保证可以同时兼容开发、测试及生产各种环境。本发明中的这些改造是和业务独立的,对业务来说是无感知的,是在相关的jar包中实现的,这些jar包是框架性质的,与业务无关。

国产化应用对于系统安全性具有较高要求,为了防止数据库敏感信息遭到窃取,配置文件中对数据库密码进行了加密。本发明的一个实施例采用RSA方式(不以此为限制)对密码进行加密,并采用定制化的加密公钥与私钥,既保证了数据的安全性,又实现了配置的简洁性。

数据源是信息系统的重要方面。非国产化环境使用Oracle、Mysql等传统数据库,而国产化环境会使用GaussDB、GoldenDB、达梦、人大金仓、神通等国产化数据库,这些数据库的底层实现机制不同,但往往都遵循JDBC(Java Database Connectivity,Java查询引擎连接)标准,为此可以采用统一的数据源管理方式。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,是一种高效管理数据源的方式。Druid是一个高效可管理的开源数据库连接池,在功能、性能、扩展性方面超过其他数据库连接池,包括DBCP、C3P0、BoneCP等,同时可以监控数据库访问性能以及获得SQL执行日志。本发明实施例在Druid连接池的基础上进行了扩展,来管理国产化环境下的数据库连接池。在原有Druid数据源配置的基础上,本发明实施例在Druid的配置文件中加入了各SPU单元的数据库连接信息。项目启动时,先从Zookeeper上获取到对应SPU单元的信息,再从Druid的配置文件中获取到对应环境下该SPU单元的数据库连接信息,然后根据获取的该SPU单元的数据库连接信息,将相关的数据源信息进行加载。考虑到连接Zookeeper需要消耗一定的时间,对于单SPU的项目,将不会连接Zookeeper,而是直接使用Druid的配置文件中SPU1单元的数据库连接信息。这种方式既保证了单SPU和多SPU的兼容性,又可以提升单SPU场景的启动性能。上述对应环境指的是对应的应用服务器,包括该应用服务器的机器名称。在Zookeeper上会对服务器主机名和所属SPU单元的映射关系进行注册。换言之,某一台应用服务器对应一个固定的SPU单元。

单SPU场景下增加的配置文件属性如表3所示:

表3:单SPU场景下增加的配置文件属性对应的代码表

配置文件中的相关值是由profile属性信息传入的。

多SPU场景下增加的配置文件属性如表4所示:

表4:多SPU场景下增加的配置文件属性对应的代码表

读者可根据实际SPU数目进行设置。数据库类型会根据传入的URL进行自动适配。

本发明实施例实现了自定义数据源,会对上述配置信息进行解析并加载到系统中,同时实现了对相关数据源信息的管理。项目中可能需要将该自定义数据源以JavaBean的形式进行注册。另外还对JNDI(Java Naming and Directory Interface,Java命名和目录接口))数据源进行了兼容,在对应profile信息中配置数据源名称,如果为JNDI,则不去加载自定义数据源,而是加载已配置的JNDI数据源。Datasourcebean是Javabean的一种,用来处理与数据源相关的业务。Spring都是通过Javabean来进行启动和加载的,通过这种方式,在系统启动时将这些资源加载一次,后续业务可以直接使用,避免了资源重复创建。

图2是本发明实施例另一种适配多种数据源的分布式应用国产化改造方法的流程图。本发明实施例的另一种方法的实现原理的具体过程如图2所示:

S1:在Zookeeper上注册各个SPU单元的数据库连接信息。对于单SPU的情况,由于可以从druid.properties配置文件中直接获取数据库连接信息,故可省略该步骤。

S2:在maven pom.xml中配置各个profile(概述、简介)的数据库连接信息。对应单SPU情况,只需配置SPU1的数据库连接信息即可;对于多SPU情况,需将实际使用的各个SPU单元的数据库连接信息均进行配置。pom.xml存在于项目代码中,用来进行打包部署。

S3:在数据库连接池的配置文件druid.properies中配置数据库连接池信息,包括各SPU单元的数据库URL、用户名、密码以及最大连接数、初始化连接数等管理数据源的参数信息。本步骤在开发环境中进行配置,然后通过maven打包部署,部署后在应用服务器上存在这个文件。

S4:配置自定义数据源信息。该数据源将在系统启动时进行加载。具体地,自定义数据源信息是系统中需要使用的数据库连接信息,包括URL信息、用户名、密码,每个SPU单元有一个对应的信息,系统启动时会加载某一个SPU单元。本步骤在开发环境或打包前配置好,部署完成后在应用服务器上会有相关信息。

S5:根据不同环境进行打包部署。具体地,不同环境包括但不限制于X86环境、核高基环境等,也可以理解为针对不同环境需要配置不同的数据源。打包部署就是配置通过pom.xml文件配置不同的profile,然后传入对应profile参数执行mvn clean deploy命令生成war包,再将war包在tomcat、weblogic等中间件上进行部署启动。

S6:开始启动项目(服务)。

S7:加载自定义数据源信息。本步骤从配置文件读取数据源信息,获取自定义数据源。加载数据源后程序中才能执行相关的数据库操作。

S8:加载数据库连接池信息。本步骤读取数据库连接池配置文件(druid.properies),判断是否需要多个SPU。

(1)对于单SPU场景或开发模式(调试模式),直接从配置文件(DataSourceBean)中读取或加载数据库连接信息,包括连接URL、用户名、密码(加密)等;DatasourceBean是JavaBean的一种,用来管理数据源相关的业务。上述配置文件(DataSourceBean)可以存储在druid.properties中。

(2)对于多SPU场景,且为非开发(调式)模式,则获取主机名称,根据当前机器名称以及Zookeeper上机器名称与SPU的映射关系,从Zookeeper服务器的配置中心获取到SPU编号,再根据该SPU编号从数据库连接池配置文件中加载该SPU单元的数据库连接信息,其包括连接URL、用户名、密码(加密)等。

S9:建立连接,即应用与数据库服务器建立连接,也可以理解为与数据库建立连接,根据数据库连接池配置文件加载连接池参数。并在本步骤中监控资源池的资源。其中,上述监控资源池的资源是druid连接池本身提供的一种机制,不需要做额外的操作。服务启动后,会在后台一直监控数据库的连接数、连接状态等信息。上述连接池参数包括但不限于:最大连接数、最小连接数、连接超时时间、是否执行心跳检测等。

S10:项目启动完成。此时,将会对数据库连接池进行持续有效管理。

本发明实施例的上述技术方案的优点包括:

该方案可同时满足国产化环境和非国化环境,以及国产化和非国产化双轨并行的场景;

该方案可实现自动打包部署,实现了数据源配置与应用开发的解耦,降低了应用开发成本;

该方案可同时满足分布式应用中单SPU和多SPU的场景,并实现多SPU场景部署的自动打包,降低了多SPU场景下打包的复杂度;

该方案满足国产化环境下对于数据源信息安全的要求。

图3是本发明实施例一种适配多种数据源的分布式应用国产化改造装置的功能框图。如图3所示,一种适配多种数据源的分布式应用国产化改造装置300,其包括:

第一获取模块310,用于从数据库连接池配置文件获取自定义数据源信息;

判断模块320,用于根据所述数据库连接池配置文件,确定是否需要多个标准产品单元SPU;

第二获取模块330,用于当确定需要多个SPU时,从Zookeeper服务器获取所述多个SPU的编号;

第三获取模块340,根据所述多个SPU的编号,从所述数据库连接池配置文件中获取所述多个SPU分别对应的数据库连接信息;其中,所述数据库连接信息包括:数据库的统一资源定位器URL、数据库的用户名和数据库的密码;

连接模块350,用于根据所述多个SPU分别对应的数据库连接信息,建立每个SPU与相应的数据源之间的连接。

图4是本发明实施例一种电子介质的功能框图。如图4所示,本发明实施例还提供了一种计算机可读存储介质400,计算机可读存储介质内存储有计算机程序410,计算机程序被处理器执行时实现如下步骤:

从数据库连接池配置文件获取自定义数据源信息;

根据所述数据库连接池配置文件,确定是否需要多个标准产品单元SPU;

当确定需要多个SPU时,从Zookeeper服务器获取所述多个SPU的编号;

根据所述多个SPU的编号,从所述数据库连接池配置文件中获取所述多个SPU分别对应的数据库连接信息;其中,所述数据库连接信息包括:数据库的统一资源定位器URL、数据库的用户名和数据库的密码;

根据所述多个SPU分别对应的数据库连接信息,建立每个SPU与相应的数据源之间的连接。

所述计算机可读存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。本实施例所述的计算机可读存储介质有可以包括:利用电能方式存储信息的装置如,各式存储器,如RAM、ROM等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置如,CD或DVD。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。

图5是本发明实施例一种适配多种数据源的分布式应用国产化改造设备的功能框图。如图5所示,其包括一个或多个处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信。

存储器,用于存放计算机程序;

一个或多个处理器,用于执行存储器上所存放的程序时,实现如下步骤:

从数据库连接池配置文件获取自定义数据源信息;

根据所述数据库连接池配置文件,确定是否需要多个标准产品单元SPU;

当确定需要多个SPU时,从Zookeeper服务器获取所述多个SPU的编号;

根据所述多个SPU的编号,从所述数据库连接池配置文件中获取所述多个SPU分别对应的数据库连接信息;其中,所述数据库连接信息包括:数据库的统一资源定位器URL、数据库的用户名和数据库的密码;

根据所述多个SPU分别对应的数据库连接信息,建立每个SPU与相应的数据源之间的连接。

在一些可选的或示例性的实施例中,上述处理器还可以执行如下步骤的程序代码:当确定需要单个SPU时,从所述数据库连接池配置文件或者第二配置文件中获取数据库连接信息

在一些可选的或示例性的实施例中,上述处理器还可以执行如下步骤的程序代码:当确定需要多个SPU时,获取主机名称;根据所述主机名称以及Zookeeper服务器上存储的主机名称与SPU之间的映射关系,从所述Zookeeper服务器获取所述多个SPU的编号

在一些可选的或示例性的实施例中,上述处理器还可以执行如下步骤的程序代码:当确定需要单个SPU时,从maven的pom.xml文件的profile标签中获取数据库连接信息。

在一些可选的或示例性的实施例中,上述处理器还可以执行如下步骤的程序代码:从Druid的配置文件获取自定义数据源信息;其中,所述Druid的配置文件中包括:单SPU场景下,单个SPU对应的数据库连接信息;和/或,多SPU场景下,多个SPU分别对应的数据库连接信息。

上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备及可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field ProgrammableGateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(HardwareDescription Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera HardwareDescriptionLanguage)、Confluence、CUPL(Cornell University ProgrammingLanguage)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。

控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。

为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

图6是本发明实施例一种适配多种数据源的分布式应用国产化改造系统的功能框图。如图6所示,该系统包括:

应用服务器,用于从数据库连接池配置文件获取自定义数据源信息;根据所述数据库连接池配置文件,确定是否需要多个标准产品单元SPU;当确定需要多个SPU时,从Zookeeper服务器获取所述多个SPU的编号;根据所述多个SPU的编号,从所述数据库连接池配置文件中获取所述多个SPU分别对应的数据库连接信息;其中,所述数据库连接信息包括:数据库的统一资源定位器URL、数据库的用户名和数据库的密码;根据所述多个SPU分别对应的数据库连接信息,建立每个SPU与相应的数据源之间的连接;

Zookeeper服务器,用于存储主机名称与SPU之间的映射关系,并且Zookeeper服务器上注册有各个SPU的数据库连接信息;以及,

数据库服务器,用于与所述应用服务器建立连接,并执行相关的数据库操作。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号