CN107729472A - 一种汽车配件的多数据源路由实现方法以及其装置 - Google Patents
一种汽车配件的多数据源路由实现方法以及其装置 Download PDFInfo
- Publication number
- CN107729472A CN107729472A CN201710952863.2A CN201710952863A CN107729472A CN 107729472 A CN107729472 A CN 107729472A CN 201710952863 A CN201710952863 A CN 201710952863A CN 107729472 A CN107729472 A CN 107729472A
- Authority
- CN
- China
- Prior art keywords
- data source
- tenant
- data
- auto parts
- parts machinery
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种汽车配件的多数据源路由实现方法以及其装置。该装置主要包括:A、后台管理,B、数据源REST服务,C、客户端支持。其中所述的A模块主要功能实现租户维护、应用维护、数据源维护、使用统一;所述的B模块主要提供远程数据源信息;所述的C模块主要适配各APP,动态加载数据源以及路由功能。采用该装置,能够将数据源完全由数据控制中心管理,实现一个租户拥有一个独立的数据库实例,同时实现多个租户共享一个数据库实例,但数据按租户KEY,严格隔离。根据本发明实施例,能够在汽车配件电商平台,实现多租户数据库资源彻底隔离、以及租户增加或者减少对应数据库资源动态增加或者减少,不用新增应用实例,也不用重启应用,从而节约物理资源,提高应用部署效率。
Description
技术领域
本发明涉及汽车零部件生产领域,尤其涉及一种汽车配件的多数据源路由实现方法以及其装置。
背景技术
汽车配件是构成汽车整体的各个单元以及服务于汽车的一种产品。伴随着汽车配件市场竞争日趋激烈,汽车配件的种类繁多,品牌和类型也越来越多,对于汽车配件而言,配件名称、配件代码、品牌、型号、年代、配件分类、配件属性、配件图,与原厂匹配和同步等配件基本数据信息,以及正厂参考价、4S店参考价、同质配件价等价格数据体系,为了统一汽车配件所有数据源信息,通过对配件数据库信息的分类筛选、调度、监控、管理等技术手段,实现汽车配件数据源后台管理,数据源的REST服务,客户端支持。
本发明提出一种汽车配件的多数据源路由实现方法以及其装置,能够实现多租户数据库资源彻底隔离以及租户增加或者减少对应数据库资源动态增加或者减少,不用新增引用实例,也不用重启应用,从而节约物理资源,提高应用部署效率。
发明内容
有鉴于此,本发明的主要目的在于提供一种汽车配件的多数据源路由实现方法以及其装置,将数据源完全由数据控制中心管理,实现一个租户拥有一个独立的数据库实例,同时实现多个租户共享一个数据库实例,但数据按租户KEY,严格隔离。
为达到上述目的,本发明的技术方案是这样实现的:
一种汽车配件多数据源路由实现方法包含以下几个流程:
A、数据源完全由数据控制中心管理;
B、实现一个租户拥有一个独立的数据库实例;
C、实现多个租户共享一个数据库实例,但数据按租户KEY,严格隔离;
D、实现一个租户拥有多个数据库实例;
E、根据@Dao注解routeKey实现与请求线程无关的固定多数据源路由,保证指定的数据源数据的安全性;
F、SQL过滤。
进一步地,其中所述的步骤C,参考图3,具体包括以下两个方面:
1)虚拟租户KEY+应用编号或者虚拟租户KEY+应用编号+dsKey定位数据源;
2)租户KEY隔离数据。
进一步地,其中所述的步骤E:
为了更好的保护内部数据源,不受到外部侵袭(不受外部传入的数据源路由KEY影响),但同时也支持多个数据源同时并发操作,在DAO层增加routeKey实现:routeKey=tenantKey+"_"+appNo 或者tenantKey+"_"+appNo+"_"+dsKey,
然后在properties配置ds.tenant.key.app.no=7cc532d783a7461f227a5da8ea80bfe1_youyi。
进一步地,其中所述的步骤F:
为防止SQL注入增加SQL参数过滤机制,is.enable.db.wallfilter=true(properties配置)表示打开过滤,同时druid里也会启用SQL参数过滤,基础过滤会排除以下参数字段
sql.bad.key.filters=and|exec|execute|insert|create|drop|table|from|grant|use|select|delete|update|order|count|chr|truncate|declare|or|like(properties配置)
一种汽车配件多数据源路由实现装置包括以下几个模块:
A、后台管理;
B、数据源REST服务;
C、客户端支持。
进一步地,其中所述的A模块主要进行租户信息维护、应用相关的信息维护、实现数据源维护、最后使用统一。
进一步地,其中所述的B模块主要提供远程数据源信息。
进一步地,其中所述的C模块主要适配各APP,动态加载数据源以及路由功能。
本发明所提供的一种汽车配件的多数据源路由实现装置,具有以下优点:
1)数据源完全由数据控制中心管理;
2)实现一个租户拥有一个独立的数据库实例;
3)实现多个租户共享一个数据库实例,但数据按租户KEY,严格隔离;
4)实现一个租户拥有多个数据库实例。
附图说明
图1为本发明一种汽车配件的多数据源路由实现装置功能结构示意图;
图2为本发明一种汽车配件的多数据源路由实现方法流程示意图;
图3为本发明一种汽车配件的多数据源路由实现装置应用场景示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图及本发明的实施例对本发明的一种汽车配件的多数据源路由实现方法以及其装置作进一步详细的说明。
参考图2,该多数据源路由实现装置,多数据源路由服务实现具体包含以下几个流程:
A、数据源完全由数据控制中心管理;
B、实现一个租户拥有一个独立的数据库实例;
C、实现多个租户共享一个数据库实例,但数据按租户KEY,严格隔离;
D、实现一个租户拥有多个数据库实例;
E、根据@Dao注解routeKey实现与请求线程无关的固定多数据源路由,保证指定的数据源数据的安全性;
F、SQL过滤。
进一步地,其中所述的步骤C,参考图3,具体操作包括以下两个方面:
1)虚拟租户KEY+应用编号或者虚拟租户KEY+应用编号+dsKey定位数据源;
2)租户KEY隔离数据。
进一步地,其中所述的步骤E:
为了更好的保护内部数据源,不受到外部侵袭(不受外部传入的数据源路由KEY影响),但同时也支持多个数据源同时并发操作,在DAO层增加routeKey实现:routeKey=tenantKey+"_"+appNo 或者tenantKey+"_"+appNo+"_"+dsKey,
然后在properties配置ds.tenant.key.app.no=7cc532d783a7461f227a5da8ea80bfe1_youyi。
进一步地,其中所述的步骤F:
为防止SQL注入增加SQL参数过滤机制,is.enable.db.wallfilter=true(properties配置)表示打开过滤,同时druid里也会启用SQL参数过滤,基础过滤会排除以下参数字段
sql.bad.key.filters=and|exec|execute|insert|create|drop|table|from|grant|use|select|delete|update|order|count|chr|truncate|declare|or|like (properties配置)。
本发明为解决一种汽车配件的多数据源路由实现方法以及其装置,主要采用了以下技术,下面对这些技术进行简单介绍。
1)dubbo技术。dubbo是开源的一个高性能分布式服务框架, 致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2000+个服务提供3000000000+次访问量支持,其功能主要包括:高性能NIO通讯及多协议集s成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。
2)zookeeper技术。zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件,为分布式应用提供一致性服务的软件,比如,配置管理、状态同步、组服务以及统一命名服务等。同时,使用zookeeper来实现分布式系统的配置管理、Leader选举、组管理以及存储一些元信息,并且用Zookeeper watch机制来发现元信息的数据变化同时做出相应操作。
3)nginx技术。nginx由内核和模块组成,nginx的模块从结构上分为核心模块、基础模块和第三方模块,其中核心模块主要包括HTTP模块、EVENT模块和MAIL模块;基础模块主要包括HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块;第三方模块主要包括HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块。
4)数据库技术。数据库是一种计算机辅助管理数据的方法,它研究如何组织和存储数据,如何高效地获取和处理数据。本发明中使用mysql数据库,mysql是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性,提供用于管理、检查、优化数据库操作的管理工具。
下面介绍该方法的几个典型应用场景:
应用场景一:
本发明应用在汽车配件电商平台,在燃油滤清器需要与上门的客户车型匹配,可原厂燃油滤很贵,一般的O2O公司都使用博世的,修理厂并不知道博世的哪款燃油滤适合这个客户的车型,这就需要用数据库来做匹配支持,有数据积累的修理厂可以通过更多的渠道获得数据源信息,没有数据积累的则会与专业的数据库企业进行合作。
应用场景二:
参考图2,该多数据源路由实现装置,具体包含以下几个流程:
步骤201:向数据源管理中心申请注册租户以及应用(提供数据库初始化脚本信息),管理中心返回: 租户KEY以及应用编号APPNO;
步骤202:在应用系统中引用framework-parent.pom的客户端依赖;
<properties>
<framework.version>1.0.2-SNAPSHOT</framework.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<!--框架依赖版本管理声明 -->
<dependency>
<groupId>com.youyi.framework</groupId>
<artifactId>framework-parent</artifactId>
<version>${framework.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--增加多数据源依赖-->
<dependency>
<groupId>com.youyi.framework</groupId>
<artifactId>framework-multi-dao</artifactId>
</dependency>
<!--排除以前单数据源操作组件-->
<dependency>
<groupId>com.youyi.framework</groupId>
<artifactId>framework-all-small</artifactId>
<exclusions>
<exclusion>
<groupId>com.youyi.framework</groupId>
<artifactId>framework-dao</artifactId>
</exclusion>
</exclusions>
</dependency>
步骤203:在(应用服务端(远程或者本址服务端))spring***.xml中引入
<import resource="classpath:applicationContext-framework-multi-ds.xml"/>
步骤204:在xxx.properties文件中配置以下信息:
#数据源服务地址
ds.center.url=http://127.0.0.1:8089/ds/tenant/load.json
#租户所属区域,多个区域用逗号隔开(A,E,D)
ds.tenant.area=A
#https 证书地址(证书网络地址或者本地路径地址,如果为空将从本地classpath中读取)
ds.cert.address=
#客户端证书密码
ds.cert.password=youyis123456
#\u8BF7\u6C42token
ds.rest.token=e170e87437d14da3ad8ec08dc58da239
#应用编号
ds.app.no=dc
步骤205:在应用端的pom.xml中也引入
<dependency>
<groupId>com.youyi.framework</groupId>
<artifactId>framework-multi-dao</artifactId>
</dependency>
<dependency>
<groupId>com.youyi.framework</groupId>
<artifactId>framework-all-small</artifactId>
<exclusions>
<exclusion>
<groupId>com.youyi.framework</groupId>
<artifactId>framework-dao</artifactId>
</exclusion>
</exclusions>
</dependency>
在web.xml中添加请求响应处理
<listener>
<listener-class>com.youyi.framework.dao.adapter.DataSourceRequestListener</listener-class>
</listener>
需要说明的是:使用多数据源路由需framework升级到1.0.2-SNAPSHOT 以上的版本。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
所述领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述到的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,可以采用软件功能单元的形式实现。
需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上对本发明所提供的一种汽车配件的多数据源路由实现方法以及其装置进行了详细介绍,本文中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种汽车配件的多数据源路由实现方法,其特征在于,该方法主要包括:
A、数据源完全由数据控制中心管理;
B、实现一个租户拥有一个独立的数据库实例;
C、实现多个租户共享一个数据库实例,但数据按租户KEY,严格隔离;
D、实现一个租户拥有多个数据库实例;
E、根据@Dao注解routeKey实现与请求线程无关的固定多数据源路由,保证指定的数据源数据的安全性;
F、SQL过滤。
2.根据权利要求1所述的一种汽车配件的多数据源路由实现方法,其特征在于,所述步骤C,具体为:
1)虚拟租户KEY+应用编号或者虚拟租户KEY+应用编号+dsKey定位数据源;
2)租户KEY隔离数据。
3.根据权利要求1所述的一种汽车配件的多数据源路由实现方法,其特征在于,所述步骤E,具体为:为了更好的保护内部数据源,不受到外部侵袭(不受外部传入的数据源路由KEY影响),但同时也支持多个数据源同时并发操作,在DAO层增加routeKey实现:routeKey=tenantKey+"_"+appNo 或者tenantKey+"_"+appNo+"_"+dsKey,然后在properties配置ds.tenant.key.app.no=7cc532d783a7461f227a5da8ea80bfe1_youyi。
4.一种汽车配件的多数据源路由实现装置,其特征在于,该装置主要包括:
A、后台管理;
B、数据源REST服务;
C、客户端支持。
5.根据权利要求4所述的一种汽车配件的多数据源路由实现装置,其特征在于,所述步骤A,具体为:实现租户维护、应用维护、数据源维护、使用统一。
6.根据权利要求4所述的一种汽车配件的多数据源路由实现装置,其特征在于,所述步骤B,具体为:提供远程数据源信息。
7.根据权利要求4所述的一种汽车配件的多数据源路由实现装置,其特征在于,所述步骤C,具体为:主要适配各APP,动态加载数据源以及路由功能。
8.根据权利要求4所述的一种汽车配件的多数据源路由实现装置,其特征在于,所述步骤C,具体为:使用多数据源路由需framework升级到1.0.2-SNAPSHOT 以上版本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710952863.2A CN107729472A (zh) | 2017-10-13 | 2017-10-13 | 一种汽车配件的多数据源路由实现方法以及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710952863.2A CN107729472A (zh) | 2017-10-13 | 2017-10-13 | 一种汽车配件的多数据源路由实现方法以及其装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107729472A true CN107729472A (zh) | 2018-02-23 |
Family
ID=61210786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710952863.2A Pending CN107729472A (zh) | 2017-10-13 | 2017-10-13 | 一种汽车配件的多数据源路由实现方法以及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107729472A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102340533A (zh) * | 2011-06-17 | 2012-02-01 | 中兴通讯股份有限公司 | 多租户系统及多租户系统存取数据的方法 |
CN103399942A (zh) * | 2013-08-14 | 2013-11-20 | 山大地纬软件股份有限公司 | 一种支持SaaS多租户的数据引擎系统及其工作方法 |
CN103605698A (zh) * | 2013-11-06 | 2014-02-26 | 广东电子工业研究院有限公司 | 一种用于分布异构数据资源整合的云数据库系统 |
US20140372578A1 (en) * | 2011-08-29 | 2014-12-18 | Salesforce.Com, Inc. | Mechanism for facilitating spin mode-based dynamic updating of application servers in an on-demand services environment |
CN104580505A (zh) * | 2015-01-26 | 2015-04-29 | 中国联合网络通信集团有限公司 | 一种租户隔离方法及系统 |
CN105069366A (zh) * | 2015-07-06 | 2015-11-18 | 无锡天脉聚源传媒科技有限公司 | 一种账户登录和管理方法及装置 |
CN107203575A (zh) * | 2016-03-18 | 2017-09-26 | 北京京东尚科信息技术有限公司 | 一种用于隔离多租户数据的系统、设备和方法 |
-
2017
- 2017-10-13 CN CN201710952863.2A patent/CN107729472A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102340533A (zh) * | 2011-06-17 | 2012-02-01 | 中兴通讯股份有限公司 | 多租户系统及多租户系统存取数据的方法 |
US20140372578A1 (en) * | 2011-08-29 | 2014-12-18 | Salesforce.Com, Inc. | Mechanism for facilitating spin mode-based dynamic updating of application servers in an on-demand services environment |
CN103399942A (zh) * | 2013-08-14 | 2013-11-20 | 山大地纬软件股份有限公司 | 一种支持SaaS多租户的数据引擎系统及其工作方法 |
CN103605698A (zh) * | 2013-11-06 | 2014-02-26 | 广东电子工业研究院有限公司 | 一种用于分布异构数据资源整合的云数据库系统 |
CN104580505A (zh) * | 2015-01-26 | 2015-04-29 | 中国联合网络通信集团有限公司 | 一种租户隔离方法及系统 |
CN105069366A (zh) * | 2015-07-06 | 2015-11-18 | 无锡天脉聚源传媒科技有限公司 | 一种账户登录和管理方法及装置 |
CN107203575A (zh) * | 2016-03-18 | 2017-09-26 | 北京京东尚科信息技术有限公司 | 一种用于隔离多租户数据的系统、设备和方法 |
Non-Patent Citations (1)
Title |
---|
WEKNOW619: "【Spring】使用Spring的AbstractRoutingDataSource实现多数据源切换", 《HTTPS://WWW.CNBLOGS.COM/WEKNOW619/P/6415900.HTML》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10853356B1 (en) | Persistent metadata catalog | |
CN109716320A (zh) | 用于分布式事件处理系统的图生成 | |
CN110278231A (zh) | 一种数据订阅分发方法及系统 | |
CN110032571A (zh) | 业务流程处理方法、装置、存储介质及计算设备 | |
US20140108415A1 (en) | Method and system of mapreduce implementations on indexed datasets in a distributed database environment | |
CN103034735A (zh) | 一种大数据分布式文件导出方法 | |
US20180084085A1 (en) | Cross platform device virtualization for an iot system | |
DE112013002542T5 (de) | Cloud-basierte Anwendungsressourcendateien | |
CN106503163A (zh) | 基于SaaS应用的全局配置多租户动态数据源系统 | |
CN103605698A (zh) | 一种用于分布异构数据资源整合的云数据库系统 | |
CN106649602B (zh) | 业务对象数据处理方法、装置和服务器 | |
CN107113341A (zh) | 用于数据划分的分布式关系数据库管理系统中事务的高吞吐量处理的系统 | |
CN109902114A (zh) | Es集群数据复用方法、系统、计算机装置及存储介质 | |
CN106933891A (zh) | 访问分布式数据库的方法和分布式数据服务的装置 | |
CN108173839A (zh) | 权限管理方法及系统 | |
CN114296836A (zh) | 远程配置系统 | |
CN106462459A (zh) | 为分布式处理系统管理元数据 | |
Morse et al. | Data distribution management migration from DoD 1.3 to IEEE 1516 | |
CN115858488A (zh) | 基于数据治理的平行迁移方法、装置及可读介质 | |
CN113569257B (zh) | 灰度发布中的用户权限管理方法和装置 | |
CN111639068A (zh) | 一种基于多系统的公共数据池生成方法、装置、设备、和可读存储介质 | |
US9703800B1 (en) | Method and system for calculating changes for a large data set | |
CN105303290A (zh) | 管理制造执行系统中的数据 | |
CN107239568B (zh) | 分布式索引实现方法及装置 | |
US9686118B1 (en) | Abstraction layer for streaming data sources |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180223 |
|
WD01 | Invention patent application deemed withdrawn after publication |