CN107729370A - 微服务多数据源连接实现方法 - Google Patents
微服务多数据源连接实现方法 Download PDFInfo
- Publication number
- CN107729370A CN107729370A CN201710815397.3A CN201710815397A CN107729370A CN 107729370 A CN107729370 A CN 107729370A CN 201710815397 A CN201710815397 A CN 201710815397A CN 107729370 A CN107729370 A CN 107729370A
- Authority
- CN
- China
- Prior art keywords
- burst
- micro services
- implementation method
- data source
- rule
- 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/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
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)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种微服务多数据源连接实现方法,包括:从Zookeeper注册中心获取可用的数据库列表;判断所述数据库列表是否有分片规则,如果有分片规则,则获取分片字段的值,并匹配分片函数,得到对应的分片列表;处理分片列表中所有分片;返回结果数据,本发明通过分片规则将每个库建立自己的从库,进行主从复制,通过设置的虚拟地址链接到每个库,提高系统的可用性和容灾能力,提供了连接多库、逻辑水平切分以及数据库装备自动切换等功能。
Description
技术领域
本发明属于数据处理领域,具体涉及的是一种微服务多数据源连接实现方法。
背景技术
目前,对于互联网海量数据的存储以及处理,按使用场景,分为OLTP与OLAP,其中,OLTP即:联机事务处理,比如即时交易,强调快速响应与处理,OLAP即:联机分析处理,比如BI,强调多维数据分析,对于这些数据的存储,主要有两种解决方案,即基于SQL的关系型数据库,和NoSQL的非关系型数据库。
NoSQL的非关系型数据库在某些特定场景下有奇效,比如键值存储(Redis,ROMA,Memcached)数据库应用在排行更新,会话保存,面向文档的数据库(MongoDB、couchDB)应用在日志记录,面向列的数据库(Cassandra、Hbase)在博客中的应用。关系型数据库最大的问题在于速度与可扩展性上,而这些NoSQL的非关系型数据库一般部署简单、支持扩展而且速度极高。
但是,NoSQL的非关系型数据库目前还是只能做为SQL关系型数据库在某些特定应用场景的补充,不能完全替代严谨规范的SQL关系型数据库。
SQL关系型数据库一般不支持大规模自动扩展,单库上面存在着性能瓶颈,为了提升性能以及可以存储数据的量,我们需要分库分表。
为此本发明实现一套微服务下分库分表情况下连接多数据源的方法迫在眉睫。
发明内容
本发明的目的在于克服现有技术存在的以上问题,提供一种微服务多数据源连接实现方法。
为实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:
一种微服务多数据源连接实现方法,包括:
从Zookeeper注册中心获取可用的数据库列表;
判断所述数据库列表是否有分片规则,如果有分片规则,则获取分片字段的值,并匹配分片函数,得到对应的分片列表;
处理分片列表中所有分片;
返回结果数据。
较佳的,所述从Zookeeper注册中心获取可用的数据库列表前包括:
微服务中的各个服务器之间自行通信。
较佳的,所述从Zookeeper注册中心获取可用的数据库列表,具体包括:
数据库管理中心从Zookeeper注册中和性能中获取可用的所述数据库列表;
所述数据库管理中心获取从对应的列表中后将对应调用的连接返回。
较佳的,所述数据库管理中心是微服务需要调用的数据库。
较佳的,所述数据库管理中心调用可用列表的地址为虚地址,负载均衡节点将主从库视为一个节点库。
较佳的,所述判断所述数据库列表是否有分片规则,如果有分片规则,则获取分片字段的值,并匹配分片函数,得到对应的分片列表前包括:
设置分片规则。
较佳的,所述设置分片规则,具体包括:
所述分片规则为分片字段+分片函数。
较佳的,所述分片字段为起源模型,所述分片函数为字符串枚举方式。
较佳的,所述处理分片列表中所有分片,具体包括:
将数据库列表中的一个表分为三个分片。
较佳的,所述三个分片设于两台数据库服务器上。
较佳的,所述返回结果数据后包括:
将所述结果数据输出到客户端。
本发明的有益效果是:
本发明通过数据库全部都注册在Zookeeper注册中心上,从zookeeper注册中心获取可用的数据库列表,获取链接逻辑连接对应的库,通过分片规则将每个库建立自己的从库,进行主从复制,通过设置的虚拟地址链接到每个库,提高系统的可用性和容灾能力,本发明提供了连接多库、逻辑水平切分以及数据库装备自动切换等功能。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明微服务多数据源连接实现方法的流程示意图;
图2为图1中的工作原理示意图;
图3为图1中分片的流程示意图。
具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
下面将参考附图并结合实施例,来详细说明本发明。
参照图1、图2和图3所示,其分别为本发明微服务多数据源连接实现方法的流程示意图,图1中的工作原理示意图和图1中分片的流程示意图,一种微服务多数据源连接实现方法,包括:
S1:从Zookeeper注册中心获取可用的数据库列表;
S2:判断所述数据库列表是否有分片规则,如果有分片规则,则获取分片字段的值,并匹配分片函数,得到对应的分片列表;
S3:处理分片列表中所有分片;
S4:返回结果数据;
S5:结果数据输出到客户端。
于本实施例中,所述S1前包括:
微服务中的各个服务器之间自行通信。
于本实施例中,所述S1具体包括:
数据库管理中心从Zookeeper注册中和性能中获取可用的所述数据库列表;
所述数据库管理中心获取从对应的列表中后将对应调用的连接返回。
于本实施例中,所述数据库管理中心是微服务需要调用的数据库,此外,所述数据库管理中心调用可用列表的地址为虚地址,负载均衡节点将主从库视为一个节点库。
于本实施例中,所述S2前包括:
设置分片规则。
其中,所述设置分片规则,具体包括:
所述分片规则为分片字段+分片函数,所述分片字段为起源模型,所述分片函数为字符串枚举方式。
于本实施例中,最佳的,将数据库列表中的一个表分为三个分片,其中,所述三个分片设于两台数据库服务器上。
于本实施例中,当主库宕机后从库立马切换为主库,负责均衡自动将请求发送到新的库上,此外,对于所有的数据库有个总的监控管理中心,对数据库的状态与负载情况进行监控。
于本实施例中,请参照图2和图3,具体过程为:一个表被分为三个分片datanode(简称dn),这三个分片是分布在两台DB Server上(DataHost),即datanode=database@datahost方式,因此,可以用一台到N台数据库服务器来分片,分片规则为(sharding rule)典型的字符串枚举分片规则,一个规则的定义是分片字段(sharding column)+分片函数(rule function),这里的分片字段为prov,分片函数为字符串枚举方式。
当我们收到一个SQL时,会先解析这个SQL,查找涉及到的表,然后看此表的定义,如果有分片规则,则获取到SQL里分片字段的值,并匹配分片函数,得到该SQL对应的分片列表,然后将SQL发往这些分片去执行,最后收集和处理所有分片返回的结果数据,并输出到客户端。
其中,以select*from Orders where provice=?语句为例,查到provice=shanghai,按照分片函数,shanghai返回dn1,于是SQL就发给了MySQL1,去取DB1上的查询结果,并返回给用户。如果上述SQL改为select*from Orders where provice in(‘shanghai’,‘beijing’),那么,SQL就会发给MySQL1与MySQL2去执行,然后结果集合并后输出给用户。
本发明通过数据库全部都注册在Zookeeper注册中心上,从zookeeper注册中心获取可用的数据库列表,获取链接逻辑连接对应的库,通过分片规则将每个库建立自己的从库,进行主从复制,通过设置的虚拟地址链接到每个库,提高系统的可用性和容灾能力,本发明提供了连接多库、逻辑水平切分以及数据库装备自动切换等功能。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
需要说明的是,本发明中提出的各种新的改进,既可以独立实现,也可以进行相互结合实现,还可以结合为一种新的飞行器结构,各个技术特征之间也可以彼此组合使用,在此不做赘述。
需要说明的是,在本发明提及的所有文献都在本申请中引用作为参考,就如同每一篇文献被单独引用作为参考那样。此外应理解,在阅读了本发明的上述讲授内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
并且,在本专利的权利要求书和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本专利的权利要求书和说明书中,如果提到根据某要素执行某行为,则是指至少根据该要素执行该行为的意思,其中包括了两种情况:仅根据该要素执行该行为、和根据该要素和其它要素执行该行为。
虽然通过参照本发明的某些优选实施例,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (11)
1.一种微服务多数据源连接实现方法,其特征在于,包括:
从Zookeeper注册中心获取可用的数据库列表;
判断所述数据库列表是否有分片规则,如果有分片规则,则获取分片字段的值,并匹配分片函数,得到对应的分片列表;
处理分片列表中所有分片;
返回结果数据。
2.根据权利要求1所述的微服务多数据源连接实现方法,其特征在于,所述从Zookeeper注册中心获取可用的数据库列表前包括:
微服务中的各个服务器之间自行通信。
3.根据权利要求1所述的微服务多数据源连接实现方法,其特征在于,所述从Zookeeper注册中心获取可用的数据库列表,具体包括:
数据库管理中心从Zookeeper注册中和性能中获取可用的所述数据库列表;
所述数据库管理中心获取从对应的列表中后将对应调用的连接返回。
4.根据权利要求3所述的微服务多数据源连接实现方法,其特征在于,所述数据库管理中心是微服务需要调用的数据库。
5.根据权利要求3或4所述的微服务多数据源连接实现方法,其特征在于,所述数据库管理中心调用可用列表的地址为虚地址,负载均衡节点将主从库视为一个节点库。
6.根据权利要求1所述的微服务多数据源连接实现方法,其特征在于,所述判断所述数据库列表是否有分片规则,如果有分片规则,则获取分片字段的值,并匹配分片函数,得到对应的分片列表前包括:
设置分片规则。
7.根据权利要求6所述的微服务多数据源连接实现方法,其特征在于,所述设置分片规则,具体包括:
所述分片规则为分片字段+分片函数。
8.根据权利要求7所述的微服务多数据源连接实现方法,其特征在于,所述分片字段为起源模型,所述分片函数为字符串枚举方式。
9.根据权利要求1所述的微服务多数据源连接实现方法,其特征在于,所述获取分片字段的值,并匹配分片函数,得到对应的分片列表,具体包括:
将数据库列表中的一个表分为三个分片。
10.根据权利要求9所述的微服务多数据源连接实现方法,其特征在于,所述三个分片设于两台数据库服务器上。
11.根据权利要求1所述的微服务多数据源连接实现方法,其特征在于,所述返回结果数据后包括:
将所述结果数据输出到客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710815397.3A CN107729370A (zh) | 2017-09-12 | 2017-09-12 | 微服务多数据源连接实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710815397.3A CN107729370A (zh) | 2017-09-12 | 2017-09-12 | 微服务多数据源连接实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107729370A true CN107729370A (zh) | 2018-02-23 |
Family
ID=61205975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710815397.3A Pending CN107729370A (zh) | 2017-09-12 | 2017-09-12 | 微服务多数据源连接实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107729370A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656968A (zh) * | 2018-11-15 | 2019-04-19 | 中国建设银行股份有限公司 | 分布式环境下的数据查询方法、装置及存储介质 |
CN110059102A (zh) * | 2019-04-25 | 2019-07-26 | 四川师范大学 | 基于同构型分布式数据库一体化crud操控适配解析器的方法 |
CN110427428A (zh) * | 2019-08-06 | 2019-11-08 | 中国工商银行股份有限公司 | 分布式服务调用方法及系统 |
CN110825459A (zh) * | 2019-11-08 | 2020-02-21 | 深圳前海环融联易信息科技服务有限公司 | 枚举常量热加载方法、装置、计算机设备及存储介质 |
CN110928949A (zh) * | 2019-11-18 | 2020-03-27 | 湖南亚信安慧科技有限公司 | 基于分布式数据库的自定义数据分片方法、装置及设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140122510A1 (en) * | 2012-10-31 | 2014-05-01 | Samsung Sds Co., Ltd. | Distributed database managing method and composition node thereof supporting dynamic sharding based on the metadata and data transaction quantity |
CN104408174A (zh) * | 2014-12-12 | 2015-03-11 | 用友软件股份有限公司 | 数据库路由装置和方法 |
US9171044B2 (en) * | 2010-02-16 | 2015-10-27 | Oracle International Corporation | Method and system for parallelizing database requests |
CN105404638A (zh) * | 2015-09-28 | 2016-03-16 | 高新兴科技集团股份有限公司 | 一种解决分布式跨库分片表关联查询的方法 |
CN105721200A (zh) * | 2016-01-21 | 2016-06-29 | 北京乐动卓越科技有限公司 | 主从式服务器系统的应用方法及该系统 |
US20160203168A1 (en) * | 2015-01-09 | 2016-07-14 | Kiran Gangadharappa | Updating distributed shards without compromising on consistency |
CN105930387A (zh) * | 2016-04-14 | 2016-09-07 | 北京思特奇信息技术股份有限公司 | 一种基于数据路由、分库分表的数据操作系统及方法 |
CN106055587A (zh) * | 2016-05-21 | 2016-10-26 | 乐视控股(北京)有限公司 | 一种分库数据库系统及其路由方法 |
CN106407302A (zh) * | 2016-08-30 | 2017-02-15 | 东华大学 | 支持通过简单sql调用中间件数据库特有功能的方法 |
-
2017
- 2017-09-12 CN CN201710815397.3A patent/CN107729370A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9171044B2 (en) * | 2010-02-16 | 2015-10-27 | Oracle International Corporation | Method and system for parallelizing database requests |
US20140122510A1 (en) * | 2012-10-31 | 2014-05-01 | Samsung Sds Co., Ltd. | Distributed database managing method and composition node thereof supporting dynamic sharding based on the metadata and data transaction quantity |
CN104408174A (zh) * | 2014-12-12 | 2015-03-11 | 用友软件股份有限公司 | 数据库路由装置和方法 |
US20160203168A1 (en) * | 2015-01-09 | 2016-07-14 | Kiran Gangadharappa | Updating distributed shards without compromising on consistency |
CN105404638A (zh) * | 2015-09-28 | 2016-03-16 | 高新兴科技集团股份有限公司 | 一种解决分布式跨库分片表关联查询的方法 |
CN105721200A (zh) * | 2016-01-21 | 2016-06-29 | 北京乐动卓越科技有限公司 | 主从式服务器系统的应用方法及该系统 |
CN105930387A (zh) * | 2016-04-14 | 2016-09-07 | 北京思特奇信息技术股份有限公司 | 一种基于数据路由、分库分表的数据操作系统及方法 |
CN106055587A (zh) * | 2016-05-21 | 2016-10-26 | 乐视控股(北京)有限公司 | 一种分库数据库系统及其路由方法 |
CN106407302A (zh) * | 2016-08-30 | 2017-02-15 | 东华大学 | 支持通过简单sql调用中间件数据库特有功能的方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656968A (zh) * | 2018-11-15 | 2019-04-19 | 中国建设银行股份有限公司 | 分布式环境下的数据查询方法、装置及存储介质 |
CN110059102A (zh) * | 2019-04-25 | 2019-07-26 | 四川师范大学 | 基于同构型分布式数据库一体化crud操控适配解析器的方法 |
CN110427428A (zh) * | 2019-08-06 | 2019-11-08 | 中国工商银行股份有限公司 | 分布式服务调用方法及系统 |
CN110825459A (zh) * | 2019-11-08 | 2020-02-21 | 深圳前海环融联易信息科技服务有限公司 | 枚举常量热加载方法、装置、计算机设备及存储介质 |
CN110825459B (zh) * | 2019-11-08 | 2023-11-03 | 深圳前海环融联易信息科技服务有限公司 | 枚举常量热加载方法、装置、计算机设备及存储介质 |
CN110928949A (zh) * | 2019-11-18 | 2020-03-27 | 湖南亚信安慧科技有限公司 | 基于分布式数据库的自定义数据分片方法、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729370A (zh) | 微服务多数据源连接实现方法 | |
KR101592479B1 (ko) | 그래프 데이터용 분산형 캐시 | |
Dowler et al. | Table access protocol version 1.0 | |
CN104123374B (zh) | 分布式数据库中聚合查询的方法及装置 | |
CN102971732B (zh) | 键/值存储器的集成分级查询处理的系统结构 | |
US7523130B1 (en) | Storing and retrieving objects on a computer network in a distributed database | |
US7337163B1 (en) | Multidimensional database query splitting | |
US7756889B2 (en) | Partitioning of nested tables | |
CN106326361B (zh) | 一种基于HBase数据库的数据查询方法及装置 | |
US20100332510A1 (en) | System and method for semantic exposure of data stored in a dynamic schema | |
US20080059441A1 (en) | System and method for enterprise-wide dashboard reporting | |
US8880463B2 (en) | Standardized framework for reporting archived legacy system data | |
US20200042510A1 (en) | Method and device for correlating multiple tables in a database environment | |
WO2004107206A1 (en) | A data processing method and system | |
CN104008199B (zh) | 一种数据查询方法 | |
CN108509437A (zh) | 一种ElasticSearch查询加速方法 | |
CN106708996A (zh) | 用于对关系数据库进行全文搜索的方法及系统 | |
CN111858760B (zh) | 一种异构数据库的数据处理方法及装置 | |
US20180157690A1 (en) | Data publishing service with low-latency read access | |
US20140019454A1 (en) | Systems and Methods for Caching Data Object Identifiers | |
CN106095964A (zh) | 一种对数据进行可视化归档与搜索的方法 | |
CN107590257A (zh) | 一种数据库管理方法及装置 | |
CN103345527B (zh) | 数据智能统计系统 | |
US6976015B2 (en) | Method for extracting data from a relational database using a reduced query | |
US11567969B2 (en) | Unbalanced partitioning of database for application data |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180223 |