CN110324403A - 动态分库路由方法、装置、服务器及存储介质 - Google Patents
动态分库路由方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN110324403A CN110324403A CN201910436135.5A CN201910436135A CN110324403A CN 110324403 A CN110324403 A CN 110324403A CN 201910436135 A CN201910436135 A CN 201910436135A CN 110324403 A CN110324403 A CN 110324403A
- Authority
- CN
- China
- Prior art keywords
- service group
- service
- group
- routing
- platform
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/302—Route determination based on requested QoS
- H04L45/306—Route determination based on the nature of the carried application
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种动态分库路由方法,包括:设置一个路由配置表,其中,所述路由配置表用于记录多个平台与多个服务组之间的对应关系,及记录所述多个服务组中的每个服务组所对应的端口;当接收到所述多个平台中的其中某个平台发送过来的业务请求时,根据所述某个平台检索所述路由配置表,从所述多个服务组中确定一个目标服务组以及所述目标服务组所对应的端口,所述目标服务组为所述路由配置表所记录的多个服务组中,与所述某个平台对应的服务组;及将所接收到的业务请求发送到所述目标服务组所对应的端口。本发明还提供一种实现所述动态分库路由方法的装置、服务器和存储介质。本发明解决了不能灵活处理量大的交易的技术问题。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种动态分库路由方法、装置、服务器及存储介质。
背景技术
数据库作为单点运行,一旦出现问题则系统整体瘫痪。一般数据库的分表方法与程序的耦合度非常高,不易扩展和开发。然而,通常来讲,互联网电商交易量大,并发高,交易时间非常集中,无分表分库的系统难以承载。
发明内容
鉴于以上内容,有必要提出一种动态分库路由方法、装置、服务器及存储介质,用以解决不能灵活处理量大的交易的技术问题。
本发明的第一方面提供一种动态分库路由方法,应用于通讯服务器中,所述通讯服务器与包括多个服务组的应用服务器连接,所述方法包括:
设置一个路由配置表,其中,所述路由配置表用于记录多个平台与所述多个服务组之间的对应关系,以及记录所述多个服务组中的每个服务组所对应的端口,其中,不同的平台对应不同的服务组;
当接收到所述多个平台中的任一平台发送过来的业务请求时,根据所述发送业务请求的平台检索所述路由配置表,从所述多个服务组中确定一个目标服务组以及所述目标服务组所对应的端口,其中,所述目标服务组为所述路由配置表所记录的多个服务组中,与所述发送业务请求的平台对应的服务组;及
将所接收到的业务请求发送到所述目标服务组所对应的端口。
优选地,所述方法还包括:
定期从所述应用服务器获取所述多个服务组中的每个服务组在预设时间段内的运行状况,其中,所述运行状况包括每个服务组启用最大线程数时的时间;及
根据所述多个服务组中的每个服务组在所述预设时间段内的运行状况调整所述路由配置表。
优选地,所述根据所述多个服务组中的每个服务组在所述预设时间段内的运行状况调整所述路由配置表包括:
统计所述多个服务组中的每个服务组在所述预设时间段内启用最大线程数时的总时长,以得到所述多个服务组中的每个服务组对应的一个总时长;
确定每个服务组所对应的总时长是否超过预定时长;
若所述多个服务组中的每个服务组所对应的总时长都小于或者等于所述预定时长,则确定无需更新所述路由配置表;
若所述多个服务组中至少一个服务组所对应的总时长大于所述预定时长,则确定需更新所述路由配置表,及当确定需更新所述路由配置表时,在所述路由配置表中,将与最长总时长所对应的服务组和与最短总时长所对应的服务组对调。
本发明第二方面提供一种动态分库路由方法,应用于包括多个服务组的应用服务器中,所述应用服务器与通讯服务器和包括多个数据库的数据库服务器连接,所述方法包括:
为所述多个服务组中的每个服务组配置一个目标数据库,其中,所述目标数据库为所述多个数据库中的其中一个数据库,每个目标数据库用于存储多个平台的业务数据,所述多个服务组中的每个服务组对应一个端口;及
实时侦测所述多个服务组分别对应的端口是否接收到从所述通讯服务器所发送过来的业务请求,当所述多个服务组中的某个服务组所对应的端口接收到所述业务请求时,控制所述某个服务组执行所述业务请求。
优选地,所述执行所述业务请求指从与所述某个服务组所对应的目标数据库中读取所述业务请求所请求的数据,或者将所述业务请求所请求存储/更新的数据存储/更新到与所述某个服务组所对应的所述目标数据库。
优选地,所述方法还包括:
统计所述多个服务组中的每个服务组的运行状况,其中,所述运行状况包括每个服务组启用最大线程数时的时间,其中,所述多个服务组中的每个服务组所对应的最大线程数相同或者不同。
本发明第三方面提供一种动态分库路由装置,运行于通讯服务器中,所述通讯服务器与包括多个服务组的应用服务器连接,所述装置包括:
设置模块,用于设置一个路由配置表,其中,所述路由配置表用于记录多个平台与所述多个服务组之间的对应关系,以及记录所述多个服务组中的每个服务组所对应的端口,其中,不同的平台对应不同的服务组;
执行模块,用于当接收到所述多个平台中的任一平台发送过来的业务请求时,根据所述发送业务请求的平台检索所述路由配置表,从所述多个服务组中确定一个目标服务组以及所述目标服务组所对应的端口,其中,所述目标服务组为所述路由配置表所记录的多个服务组中,与所述发送业务请求的平台对应的服务组;及
所述执行模块,还用于将所接收到的业务请求发送到所述目标服务组所对应的端口。
本发明第四方面提供一种动态分库路由装置,运行于包括多个服务组的应用服务器中,所述应用服务器与通讯服务器和包括多个数据库的数据库服务器连接,所述装置包括:
配置模块,用于为所述多个服务组中的每个服务组配置一个目标数据库,其中,所述目标数据库为所述多个数据库中的其中一个数据库,每个目标数据库用于存储多个平台的业务数据,所述多个服务组中的每个服务组对应一个端口;及
控制模块,用于实时侦测所述多个服务组分别对应的端口是否接收到从所述通讯服务器所发送过来的业务请求,当所述多个服务组中的任一服务组所对应的端口接收到所述业务请求时,控制接收到所述业务请求的服务组执行所述业务请求,其中,所述执行所述业务请求是指从与所述接收到所述业务请求的服务组所对应的目标数据库中读取所述业务请求所请求的数据,或者将所述业务请求所请求存储/更新的数据存储/更新到与所述接收到所述业务请求的服务组所对应的所述目标数据库。
本发明第五方面提供一种服务器,所述服务器包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现所述动态分库路由方法。
本发明第六方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述动态分库路由方法。
本发明实施例中所述的动态分库分表方法、装置、服务器及存储介质,通过设置一个路由配置表,其中,所述路由配置表记录多个平台、所述多个服务组,以及所述多个服务组中的每个服务组所对应的端口,其中,不同的平台对应不同的服务组;接收从所述多个平台发送过来的业务请求;当接收到所述多个平台中的其中某个平台发送过来的业务请求时,根据所述某个平台检索所述路由配置表,从所述多个服务组中确定一个目标服务组以及所述目标服务组所对应的端口,其中,所述目标服务组为所述路由配置表所记录的多个服务组中,与所述某个平台对应的服务组;及将所接收到的业务请求发送到所述目标服务组所对应的端口,可以实现动态交易路由,将业务请求分发到不同的服务组端口,有效解决不能灵活处理量大的交易的技术问题。
另外通过为所述多个服务组中的每个服务组配置一个目标数据库,其中,所述目标数据库为所述多个数据库中的其中一个数据库,每个目标数据库用于存储多个平台的业务数据,所述多个服务组中的每个服务组对应一个端口;及实时侦测所述多个服务组分别对应的端口是否接收到从所述通讯服务器所发送过来的业务请求,当所述多个服务组中的某个服务组所对应的端口接收到所述业务请求时,控制所述某个服务组执行所述业务请求,其中,所述执行所述业务请求指从与所述某个服务组所对应的目标数据库中读取所述业务请求所请求的数据,或者将所述业务请求所请求存储/更新的数据存储/更新到与所述某个服务组所对应的所述目标数据库,可以实现动态分库,支撑海量交易,系统处理灵活,能够有效支持交易大并发高的场景。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本发明实施例一提供的动态分库路由方法的应用环境架构图。
图2是本发明实施例二提供的动态分库路由方法的流程图。
图3是本发明实施例三提供的动态分库路由方法的流程图。
图4是本发明实施例四提供的动态分库路由装置的结构图。
图5是本发明实施例五提供的动态分库路由装置的结构图。
图6是本发明实施例六提供的通讯服务器的示意图。
图7是本发明实施例七提供的应用服务器的示意图。
如下具体实施方式将结合上述附图进一步说明本发明。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
实施例一
参阅图1所示,为本发明实施例一提供的动态分库路由方法的应用环境架构图。
本发明的动态分库路由方法应用在互相之间通讯连接的多个服务器所构成的环境中。例如,由通讯服务器3和应用服务器4以及数据库服务器5所构成的环境中。
在一个实施例中,所述通讯服务器3与应用服务器4可以通过有线(例如USB(Universal Serial Bus,通用串行总线)或无线的方式建立通讯连接。所述应用服务器4与数据库服务器5可以通过有线或无线的方式建立通讯连接。
在一个实施例中,所述无线方式可以是传统无线通讯的任何类型,例如无线电、无线保真(Wireless Fidelity,WIFI)、蜂窝、卫星、广播等。无线通讯技术可以包括,但不限于,全球移动通信系统(Global System for Mobile Communications,GSM)、通用分组无线业务(General Packet Radio Service,GPRS)、码分多址(Code Division MultipleAccess,CDMA),宽带码分多址(W-CDMA)、CDMA2000、IMT单载波(IMT Single Carrier)、增强型数据速率GSM演进(Enhanced Data Rates for GSM Evolution,EDGE)、长期演进技术(Long-Term Evolution,LTE)、高级长期演进技术、时分长期演进技术(Time-DivisionLTE,TD-LTE)、高性能无线电局域网(High Performance Radio Local Area Network,HiperLAN)、高性能无线电广域网(High Performance Radio Wide Area Network,HiperWAN)、本地多点派发业务(Local Multipoint Distribution Service,LMDS)、全微波存取全球互通(Worldwide Interoperability for Microwave Access,WiMAX)、紫蜂协议(ZigBee)、蓝牙、正交频分复用技术(Flash Orthogonal Frequency-DivisionMultiplexing,Flash-OFDM)、大容量空分多路存取(High Capacity Spatial DivisionMultiple Access,HC-SDMA)、通用移动电信系统(Universal Mobile TelecommunicationsSystem,UMTS)、通用移动电信系统时分双工(UMTS Time-Division Duplexing,UMTS-TDD)、演进式高速分组接入(Evolved High Speed Packet Access,HSPA+)、时分同步码分多址(Time Division Synchronous Code Division Multiple Access,TD-SCDMA)、演进数据最优化(Evolution-Data Optimized,EV-DO)、数字增强无绳通信(Digital EnhancedCordless Telecommunications,DECT)及其他。
实施例二
图2是本发明实施例二提供的动态分库路由方法的流程图。在本实施例中,所述动态分库路由方法可以应用于通讯服务器中,对于需要进行动态分库路由的通讯服务器,可以直接在通讯服务器上集成本发明的方法所提供的用于动态分库路由的功能,或者以软件开发工具包(Software Development Kit,SDK)的形式运行在通讯服务器上。
如图2所示,所述动态分库路由方法具体包括以下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
步骤S1、通讯服务器设置一个路由配置表,其中,所述路由配置表用于记录多个平台与多个服务组之间的对应关系,以及记录所述多个服务组中的每个服务组所对应的端口,其中,不同的平台对应不同的服务组。
本实施例中,所述多个平台可以是互联网电商平台,或其他需要用到数据库的平台。在一个实施例中,在所述路由配置表中,所述多个平台可以分别采用不同的代码表示。
举例而言,假设所述多个平台包括电商平台A1、电商平台A2、电商平台A3,则在所述路由配置表中可以利用代码“3001”代表电商平台A1,利用代码“3002”代表电商平台A2,利用代码“3003”代表电商平台A3。
举例而言,在所述路由配置表中,可以设置代码“3001”对应服务组B1,服务组B1与端口9001对应;设置代码“3002”对应服务组B2,服务组B2与端口9002对应;设置代码“3003”对应服务组B3,服务组B3与端口9003对应。由此,通过所示路由配置表为所述三个电商平台(即电商平台A1、A2、A3)分别配置了一个服务组。
本实施例中,所述多个服务组可以分别是软件程序模块,运行在应用服务器中,每个服务组用于执行对应平台的业务请求。
本实施例中,应用服务器为所述多个服务组中的每个服务组配置一个目标数据库,每个目标数据库用于存储所述多个平台的业务数据。本实施例中,所述目标数据库为数据库服务器所包括的多个数据库中的其中一个数据库。
本实施例中,所述多个平台的业务数据可以是指电商交易相关的数据,例如订单数量,每笔订单所涉及的金额等数据。
举例而言,应用服务器可以为服务组B1配置目标数据库D1,为服务组B2配置目标数据库D2,为服务组B3配置目标数据库D3,所述目标数据库D1、D2、D3分别用于存储所述电商平台A1、A2、A3的所述业务数据。换句话来讲,所述目标数据库D1用于存储所述电商平台A1、A2、A3的所述业务数据,所述目标数据库D2用于存储所述电商平台A1、A2、A3的所述业务数据,所述目标数据库D3用于存储所述电商平台A1、A2、A3的所述业务数据。
在一个实施例中,所述多个服务组中的每个服务组所对应的最大线程数可以相同或者不同。例如,所述多个服务组中的每个服务组的最大线程数可以都为60、70或其他数值。本实施例中,每个线程数用于响应与服务组所对应的平台所发送的一个业务请求。
在一个实施例中,应用服务器还统计所述多个服务组中的每个服务组的运行状况。其中,所述运行状况包括每个服务组启用最大线程数时的时间。例如,统计到服务组A1在2018/11/11,01:00am至2018/11/12,00:00am期间一直启用最大线程数。
步骤S2、通讯服务器接收从所述多个平台发送过来的业务请求。当接收到所述多个平台中的其中某个平台发送过来的业务请求时,通讯服务器根据所述某个平台检索所述路由配置表,从所述多个服务组中确定一个目标服务组以及所述目标服务组所对应的端口,将所接收到的业务请求发送到所述目标服务组所对应的端口。其中,所述目标服务组为所述路由配置表所记录的多个服务组中,与所述某个平台对应的服务组。
在一个实施例中,所述通讯服务器可以实时侦测从所述多个平台发送过来的所述业务请求。
需要说明的是,所述某个平台为所述路由配置表所记录的多个平台中的任意一个平台。
举例而言,假设通讯服务器接收到电商平台A1发送过来的业务请求,并根据所述电商平台A1检索所述路由配置表,确定目标服务组为服务组B1以及所述服务组B1所对应的端口9001。所述通讯服务器则将所接收到的业务请求发送到所述服务组B1所对应的端口9001。
本实施例中,应用服务器实时侦测所述多个服务组分别对应的端口是否接收到从所述通讯服务器所发送过来的业务请求。当所述多个服务组中的某个服务组(例如,所述目标服务组)所对应的端口接收到所述业务请求时,应用服务器控制所述某个服务组执行所述业务请求。
需要说明的是,所述某个服务组可以为所述多个服务组中的任意一个服务组。
本实施例中,所述执行所述业务请求指从与所述某个服务组所对应的目标数据库中读取所述业务请求所请求的数据,或者将所述业务请求所请求存储/更新的数据存储/更新到与所述某个服务组所对应的所述目标数据库。换句话来讲,所述业务请求可以是指读取数据的请求、存储数据的请求,或者更新数据的请求。
在一个实施例中,当所述执行所述业务请求是指从与所述某个服务组(例如,所述目标服务组)所对应的目标数据库中读取所述业务请求所请求的数据时,应用服务器控制所述某个服务组将所读取的数据返回给所述通讯服务器,所述通讯服务器则将所读取的数据回传给所述某个平台。当所述执行所述业务请求是指将所述业务请求所请求存储/更新的数据存储/更新到与所述某个服务组(例如,所述目标服务组)所对应的目标数据库时,当所述某个服务组将所述业务请求所请求存储/更新的数据存储/更新到与所述某个服务组所对应的目标数据库后,应用服务器还控制所述某个服务组发送一个完成数据更新的通知到所述通讯服务器,所述通讯服务器则将所述完成数据更新的通知回传给所述某个平台。
本实施例中,当数据库服务器所包括的多个数据库中的其中某个数据库(例如所述目标数据库)的数据有更新时,数据库服务器还同步更新所述多个数据库中的其他数据库。
举例而言,假设所述服务组B1在所述多个数据库中的其中某个数据库(例如目标数据库D1)存储了一笔交易数据,则数据库服务器检测到所目标数据库D1存在数据更新时,对所述多个数据库中的其他数据库(例如目标数据库D2和D3)也同步更新,从而实现各个数据库的数据同步更新。即使得所述多个数据库中的每个数据库的数据一致。
在一个实施例中,数据库服务器还根据所述目标数据库所存储的所述多个平台的业务数据的数据量确定是否对所述目标数据库进行分表处理。
需要说明的是,可以于每个目标数据库应用一段时间后再来根据所存储的所述多个平台的业务数据的数据量来确定是否分表。例如,应用所述目标数据库的第一个月内可以不分表,即将所有平台的数据放在同一个公共表中。而在所述目标数据库应用了一个月后则根据所存储的所述多个平台的业务数据的数据量来确定是否分表。
具体地,所述根据所述目标数据库所存储的所述多个平台的业务数据的数据量确定是否对所述目标数据库进行分表处理包括(a1)-(a3):
(a1)定期(例如,每隔一天、每月1日、每月15日)分析所述目标数据库所存储的所述多个平台中的每个平台的业务数据的数据量是否大于一个预设数值。
(a2)若所述多个平台中的每个平台的业务数据的数据量都小于或者等于所述预设数值,则确定不对所述目标数据库分表。若所述多个平台中的至少一个平台的业务数据的数据量大于所述预设数值,则确定对所述目标数据库分表。
(a3)当确定对所述目标数据库分表时,新建一个数据库表,将业务数据的数据量大于所述预设数值的平台所对应的业务数据存储在所述新建的数据库表。
步骤S3、通讯服务器定期(例如每日00:00am)从所述应用服务器获取所述多个服务组中的每个服务组在预设时间段(例如,最近一天、最近一周、最近一个月)内的运行状况。
如前面所述,所述运行状况包括每个服务组启用最大线程数时的时间。
步骤S4、通讯服务器根据所述多个服务组中的每个服务组在所述预设时间段内的运行状况调整所述路由配置表。
在一个实施例中,所述根据所述多个服务组中的每个服务组在所述预设时间段内的运行状况调整所述路由配置表包括(b1)-(b3):
(b1)统计所述多个服务组中的每个服务组在所述预设时间段内启用最大线程数时的总时长,从而为所述多个服务组中的每个服务组统计到一个总时长,确定每个服务组所对应的总时长是否超过预定时长。
(b2)若所述多个服务组中的每个服务组所对应的总时长都小于或者等于所述预定时长,则确定无需更新所述路由配置表。若所述多个服务组中至少一个服务组所对应的总时长大于所述预定时长,则确定需更新所述路由配置表。
(b3)当确定需更新所述路由配置表,在所述路由配置表中,将与最长总时长所对应的服务组和与最短总时长所对应的服务组对调。
举例而言,假设在所述步骤(b1)中统计得出服务组B1所对应的总时长最长,服务组B3所对应的总时长最短,则在所述路由配置表中,调整设置为所述服务组B1与电商平台A3对应,以及所述服务组B3与电商平台A1对应。
综上所述,本发明实施例中所述的动态分库路由方法,通过设置一个路由配置表,其中,所述路由配置表记录多个平台、所述多个服务组,以及所述多个服务组中的每个服务组所对应的端口,其中,不同的平台对应不同的服务组;接收从所述多个平台发送过来的业务请求;当接收到所述多个平台中的其中某个平台发送过来的业务请求时,根据所述某个平台检索所述路由配置表,从所述多个服务组中确定一个目标服务组以及所述目标服务组所对应的端口,其中,所述目标服务组为所述路由配置表所记录的多个服务组中,与所述某个平台对应的服务组;及将所接收到的业务请求发送到所述目标服务组所对应的端口,可以实现动态交易路由,将业务请求分发到不同的服务组端口,有效解决不能灵活处理量大的交易的技术问题。
实施例三
图3是本发明实施例三提供的用于动态分库路由方法的流程图。
在本实施例中,所述用于动态分库路由方法可以应用于应用服务器中,对于需要进行动态分库路由方法的应用服务器,可以直接在应用服务器上集成本发明的方法所提供的用于动态分库路由的功能,或者以软件开发工具包(Software Development Kit,SDK)的形式运行在应用服务器上。
如图3所示,所述用于动态分库路由方法具体包括以下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
步骤S21、应用服务器为所述多个服务组中的每个服务组配置一个目标数据库,所述目标数据库为数据库服务器所包括的多个数据库中的其中一个数据库。每个目标数据库用于存储所述多个平台的业务数据。
如前面所述,所述多个平台的业务数据可以是指电商交易相关的数据,例如订单数量,每笔订单所涉及的金额等数据。
举例而言,应用服务器可以为服务组B1配置目标数据库D1,为服务组B2配置目标数据库D2,为服务组B3配置目标数据库D3,所述目标数据库D1、D2、D3分别用于存储所述电商平台A1、A2、A3的所述业务数据。换句话来讲,所述目标数据库D1用于存储所述电商平台A1、A2、A3的所述业务数据,所述目标数据库D2用于存储所述电商平台A1、A2、A3的所述业务数据,所述目标数据库D3用于存储所述电商平台A1、A2、A3的所述业务数据。
在一个实施例中,所述多个服务组中的每个服务组所对应的最大线程数可以相同或者不同。例如,所述多个服务组中的每个服务组的最大线程数可以都为60、70或其他数值。本实施例中,每个线程数用于响应与服务组所对应的平台所发送的一个业务请求。
在一个实施例中,应用服务器还统计所述多个服务组中的每个服务组的运行状况。其中,所述运行状况包括每个服务组启用最大线程数时的时间。例如,统计到服务组A1在2018/11/11,01:00am至2018/11/12,00:00am期间一直启用最大线程数。
步骤S22、应用服务器实时侦测所述多个服务组分别对应的端口是否接收到从所述通讯服务器所发送过来的业务请求。当所述多个服务组中的某个服务组(例如,前面所述的目标服务组)所对应的端口接收到所述业务请求时,应用服务器控制所述某个服务组执行所述业务请求。所述执行所述业务请求是指从与所述某个服务组所对应的目标数据库中读取所述业务请求所请求的数据,或者将所述业务请求所请求存储/更新的数据存储/更新到与所述某个服务组所对应的所述目标数据库。
换句话来讲,所述业务请求可以是指读取数据的请求、存储数据的请求,或者更新数据的请求。
在一个实施例中,当所述执行所述业务请求是指从与所述某个服务组(例如所述目标服务组)所对应的目标数据库中读取所述业务请求所请求的数据时,应用服务器控制所述某个服务组将所读取的数据返回给所述通讯服务器,所述通讯服务器则将所读取的数据回传给所述某个平台。当所述执行所述业务请求是指将所述业务请求所请求存储/更新的数据存储/更新到与所述某个服务组(例如,所述目标服务组)所对应的目标数据库时,当所述某个服务组将所述业务请求所请求存储/更新的数据存储/更新到与所述某个服务组所对应的目标数据库后,应用服务器还控制所述某个服务组发送一个完成数据更新的通知到所述通讯服务器,所述通讯服务器则将所述完成数据更新的通知回传给所述某个平台。
综上所述,本发明实施例中所述的动态分库路由方法,通过为所述多个服务组中的每个服务组配置一个目标数据库,其中,所述目标数据库为所述多个数据库中的其中一个数据库,每个目标数据库用于存储多个平台的业务数据,所述多个服务组中的每个服务组对应一个端口;及实时侦测所述多个服务组分别对应的端口是否接收到从所述通讯服务器所发送过来的业务请求,当所述多个服务组中的某个服务组所对应的端口接收到所述业务请求时,控制所述某个服务组执行所述业务请求,其中,所述执行所述业务请求指从与所述某个服务组所对应的目标数据库中读取所述业务请求所请求的数据,或者将所述业务请求所请求存储/更新的数据存储/更新到与所述某个服务组所对应的所述目标数据库,可以实现动态分库,支撑海量交易,系统处理灵活,能够有效支持交易大并发高的场景。
上述图2和图3详细介绍了本发明的动态分库路由方法,下面结合图4至图7,分别对实现所述动态分库路由方法的软件装置的功能模块以及实现所述动态分库路由方法的硬件装置架构进行介绍。
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
实施例四
参阅图4所示,是本发明实施例四提供的动态分库路由装置的结构图。
在一些实施例中,所述动态分库路由装置30运行于通讯服务器中。所述通讯服务器通过网络连接了应用服务器,所述应用服务器通过网络连接了数据库服务器。所述动态分库路由装置30可以包括多个由程序代码段所组成的功能模块。所述动态分库路由装置30中的各个程序段的程序代码可以存储于通讯服务器的存储器中,并由所述至少一个处理器所执行,以执行(详见图2描述)动态分库路由。
本实施例中,所述动态分库路由装置30根据其所执行的功能,可以被划分为多个功能模块。所述功能模块可以包括:设置模块301、接收模块302、执行模块303。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在本实施例中,关于各模块的功能将在后续的实施例中详述。
设置模块301设置一个路由配置表,其中,所述路由配置表用于记录多个平台与多个服务组之间的对应关系,以及记录所述多个服务组中的每个服务组所对应的端口,其中,不同的平台对应不同的服务组。
本实施例中,所述多个平台可以是互联网电商平台,或其他需要用到数据库的平台。在一个实施例中,在所述路由配置表中,所述多个平台可以分别采用不同的代码表示。
举例而言,假设所述多个平台包括电商平台A1、电商平台A2、电商平台A3,则在所述路由配置表中可以利用代码“3001”代表电商平台A1,利用代码“3002”代表电商平台A2,利用代码“3003”代表电商平台A3。
举例而言,在所述路由配置表中,设置模块301可以设置代码“3001”对应服务组B1,服务组B1与端口9001对应;设置代码“3002”对应服务组B2,服务组B2与端口9002对应;设置代码“3003”对应服务组B3,服务组B3与端口9003对应。由此,通过所示路由配置表为所述三个电商平台(即电商平台A1、A2、A3)分别配置了一个服务组。
本实施例中,所述多个服务组可以分别是软件程序模块,运行在应用服务器中,每个服务组用于执行对应平台的业务请求。
本实施例中,应用服务器为所述多个服务组中的每个服务组配置一个目标数据库,每个目标数据库用于存储所述多个平台的业务数据。本实施例中,所述目标数据库为数据库服务器所包括的多个数据库中的其中一个数据库。
本实施例中,所述多个平台的业务数据可以是指电商交易相关的数据,例如订单数量,每笔订单所涉及的金额等数据。
举例而言,应用服务器可以为服务组B1配置目标数据库D1,为服务组B2配置目标数据库D2,为服务组B3配置目标数据库D3,所述目标数据库D1、D2、D3分别用于存储所述电商平台A1、A2、A3的所述业务数据。换句话来讲,所述目标数据库D1用于存储所述电商平台A1、A2、A3的所述业务数据,所述目标数据库D2用于存储所述电商平台A1、A2、A3的所述业务数据,所述目标数据库D3用于存储所述电商平台A1、A2、A3的所述业务数据。
在一个实施例中,所述多个服务组中的每个服务组所对应的最大线程数可以相同或者不同。例如,所述多个服务组中的每个服务组的最大线程数可以都为60、70或其他数值。本实施例中,每个线程数用于响应与服务组所对应的平台所发送的一个业务请求。
在一个实施例中,应用服务器还统计所述多个服务组中的每个服务组的运行状况。其中,所述运行状况包括每个服务组启用最大线程数时的时间。例如,统计到服务组A1在2018/11/11,01:00am至2018/11/12,00:00am期间一直启用最大线程数。
接收模块302接收从所述多个平台发送过来的业务请求。当接收模块302接收到所述多个平台中的其中某个平台发送过来的业务请求时,执行模块303根据所述某个平台检索所述路由配置表,从所述多个服务组中确定一个目标服务组以及所述目标服务组所对应的端口。执行模块303将所接收到的业务请求发送到所述目标服务组所对应的端口。其中,所述目标服务组为所述路由配置表所记录的多个服务组中,与所述某个平台对应的服务组。
在一个实施例中,所述接收模块302可以实时侦测从所述多个平台发送过来的所述业务请求。
需要说明的是,所述某个平台为所述路由配置表所记录的多个平台中的任意一个平台。
举例而言,假设接收模块302接收到电商平台A1发送过来的业务请求,执行模块303根据所述电商平台A1检索所述路由配置表,确定目标服务组为服务组B1以及所述服务组B1所对应的端口9001。所述执行模块303则将所接收到的业务请求发送到所述服务组B1所对应的端口9001。
本实施例中,应用服务器实时侦测所述多个服务组分别对应的端口是否接收到从所述通讯服务器所发送过来的业务请求。当所述多个服务组中的某个服务组(例如,所述目标服务组)所对应的端口接收到所述业务请求时,应用服务器控制所述某个服务组执行所述业务请求。
需要说明的是,所述某个服务组可以为所述多个服务组中的任意一个服务组。
本实施例中,所述执行所述业务请求指从与所述某个服务组所对应的目标数据库中读取所述业务请求所请求的数据,或者将所述业务请求所请求存储/更新的数据存储/更新到与所述某个服务组所对应的所述目标数据库。换句话来讲,所述业务请求可以是指读取数据的请求、存储数据的请求,或者更新数据的请求。
在一个实施例中,当所述执行所述业务请求是指从与所述某个服务组(例如,所述目标服务组)所对应的目标数据库中读取所述业务请求所请求的数据时,应用服务器控制所述某个服务组将所读取的数据返回给所述通讯服务器,所述执行模块303则将所读取的数据回传给所述某个平台。当所述执行所述业务请求是指将所述业务请求所请求存储/更新的数据存储/更新到与所述某个服务组(例如,所述目标服务组)所对应的目标数据库时,当所述某个服务组将所述业务请求所请求存储/更新的数据存储/更新到与所述某个服务组所对应的目标数据库后,应用服务器还控制所述某个服务组发送一个完成数据更新的通知到所述通讯服务器,所述执行模块303则将所述完成数据更新的通知回传给所述某个平台。
本实施例中,当数据库服务器所包括的多个数据库中的其中某个数据库(例如所述目标数据库)的数据有更新时,数据库服务器还同步更新所述多个数据库中的其他数据库。
举例而言,假设所述服务组B1在所述多个数据库中的其中某个数据库(例如目标数据库D1)存储了一笔交易数据,则数据库服务器检测到所目标数据库D1存在数据更新时,对所述多个数据库中的其他数据库(例如目标数据库D2和D3)也同步更新,从而实现各个数据库的数据同步更新。即使得所述多个数据库中的每个数据库的数据一致。
在一个实施例中,数据库服务器还根据所述目标数据库所存储的所述多个平台的业务数据的数据量确定是否对所述目标数据库进行分表处理。
需要说明的是,可以于每个目标数据库应用一段时间后再来根据所存储的所述多个平台的业务数据的数据量来确定是否分表。例如,应用所述目标数据库的第一个月内可以不分表,即将所有平台的数据放在同一个公共表中。而在所述目标数据库应用了一个月后则根据所存储的所述多个平台的业务数据的数据量来确定是否分表。
具体地,所述根据所述目标数据库所存储的所述多个平台的业务数据的数据量确定是否对所述目标数据库进行分表处理包括(a1)-(a3):
(a1)定期(例如,每隔一天、每月1日、每月15日)分析所述目标数据库所存储的所述多个平台中的每个平台的业务数据的数据量是否大于一个预设数值。
(a2)若所述多个平台中的每个平台的业务数据的数据量都小于或者等于所述预设数值,则确定不对所述目标数据库分表。若所述多个平台中的至少一个平台的业务数据的数据量大于所述预设数值,则确定对所述目标数据库分表。
(a3)当确定对所述目标数据库分表时,新建一个数据库表,将业务数据的数据量大于所述预设数值的平台所对应的业务数据存储在所述新建的数据库表。
执行模块303定期(例如每日00:00am)从所述应用服务器获取所述多个服务组中的每个服务组在预设时间段(例如,最近一天、最近一周、最近一个月)内的运行状况。
如前面所述,所述运行状况包括每个服务组启用最大线程数时的时间。
执行模块303根据所述多个服务组中的每个服务组在所述预设时间段内的运行状况调整所述路由配置表。
在一个实施例中,所述根据所述多个服务组中的每个服务组在所述预设时间段内的运行状况调整所述路由配置表包括(b1)-(b3):
(b1)统计所述多个服务组中的每个服务组在所述预设时间段内启用最大线程数时的总时长,从而为所述多个服务组中的每个服务组统计到一个总时长,确定每个服务组所对应的总时长是否超过预定时长。
(b2)若所述多个服务组中的每个服务组所对应的总时长都小于或者等于所述预定时长,则确定无需更新所述路由配置表。若所述多个服务组中至少一个服务组所对应的总时长大于所述预定时长,则确定需更新所述路由配置表。
(b3)当确定需更新所述路由配置表,在所述路由配置表中,将与最长总时长所对应的服务组和与最短总时长所对应的服务组对调。
举例而言,假设在所述步骤(b1)中统计得出服务组B1所对应的总时长最长,服务组B3所对应的总时长最短,则在所述路由配置表中,调整设置为所述服务组B1与电商平台A3对应,以及所述服务组B3与电商平台A1对应。
综上所述,本发明实施例中所述的动态分库路由装置,通过设置一个路由配置表,其中,所述路由配置表记录多个平台、所述多个服务组,以及所述多个服务组中的每个服务组所对应的端口,其中,不同的平台对应不同的服务组;接收从所述多个平台发送过来的业务请求;当接收到所述多个平台中的其中某个平台发送过来的业务请求时,根据所述某个平台检索所述路由配置表,从所述多个服务组中确定一个目标服务组以及所述目标服务组所对应的端口,其中,所述目标服务组为所述路由配置表所记录的多个服务组中,与所述某个平台对应的服务组;及将所接收到的业务请求发送到所述目标服务组所对应的端口,可以实现动态交易路由,将业务请求分发到不同的服务组端口,有效解决不能灵活处理量大的交易的技术问题。
实施例五
参阅图5所示,是本发明实施例五提供的动态分库路由装置的结构图。
在一些实施例中,所述动态分库路由装置40运行于应用服务器中。所述应用服务器通过网络连接了通讯服务器和数据库服务器。所述动态分库路由装置40可以包括多个由程序代码段所组成的功能模块。所述动态分库路由装置40中的各个程序段的程序代码可以存储于应用服务器的存储器中,并由所述至少一个处理器所执行,以执行(详见图3描述)动态分库路由的功能。
本实施例中,所述动态分库路由装置40根据其所执行的功能,可以被划分为多个功能模块。所述功能模块可以包括:配置模块401、控制模块402。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在本实施例中,关于各模块的功能将在后续的实施例中详述。
配置模块401为所述多个服务组中的每个服务组配置一个目标数据库,所述目标数据库为数据库服务器所包括的多个数据库中的其中一个数据库。每个目标数据库用于存储所述多个平台的业务数据。
如前面所述,所述多个平台的业务数据可以是指电商交易相关的数据,例如订单数量,每笔订单所涉及的金额等数据。
举例而言,配置模块401可以为服务组B1配置目标数据库D1,为服务组B2配置目标数据库D2,为服务组B3配置目标数据库D3,所述目标数据库D1、D2、D3分别用于存储所述电商平台A1、A2、A3的所述业务数据。换句话来讲,所述目标数据库D1用于存储所述电商平台A1、A2、A3的所述业务数据,所述目标数据库D2用于存储所述电商平台A1、A2、A3的所述业务数据,所述目标数据库D3用于存储所述电商平台A1、A2、A3的所述业务数据。
在一个实施例中,所述多个服务组中的每个服务组所对应的最大线程数可以相同或者不同。例如,所述多个服务组中的每个服务组的最大线程数可以都为60、70或其他数值。本实施例中,每个线程数用于响应与服务组所对应的平台所发送的一个业务请求。
在一个实施例中,配置模块401还统计所述多个服务组中的每个服务组的运行状况。其中,所述运行状况包括每个服务组启用最大线程数时的时间。例如,统计到服务组A1在2018/11/11,01:00am至2018/11/12,00:00am期间一直启用最大线程数。
控制模块402实时侦测所述多个服务组分别对应的端口是否接收到从所述通讯服务器所发送过来的业务请求。当所述多个服务组中的某个服务组(例如,前面所述的目标服务组)所对应的端口接收到所述业务请求时,控制模块402控制所述某个服务组执行所述业务请求。所述执行所述业务请求是指从与所述某个服务组所对应的目标数据库中读取所述业务请求所请求的数据,或者将所述业务请求所请求存储/更新的数据存储/更新到与所述某个服务组所对应的所述目标数据库。
换句话来讲,所述业务请求可以是指读取数据的请求、存储数据的请求,或者更新数据的请求。
在一个实施例中,当所述执行所述业务请求是指从与所述某个服务组(例如所述目标服务组)所对应的目标数据库中读取所述业务请求所请求的数据时,控制模块402控制所述某个服务组将所读取的数据返回给所述通讯服务器,所述通讯服务器则将所读取的数据回传给所述某个平台。当所述执行所述业务请求是指将所述业务请求所请求存储/更新的数据存储/更新到与所述某个服务组(例如,所述目标服务组)所对应的目标数据库时,当所述某个服务组将所述业务请求所请求存储/更新的数据存储/更新到与所述某个服务组所对应的目标数据库后,控制模块402还控制所述某个服务组发送一个完成数据更新的通知到所述通讯服务器,所述通讯服务器则将所述完成数据更新的通知回传给所述某个平台。
综上所述,本发明实施例中所述的动态分库路由装置,通过为所述多个服务组中的每个服务组配置一个目标数据库,其中,所述目标数据库为所述多个数据库中的其中一个数据库,每个目标数据库用于存储多个平台的业务数据,所述多个服务组中的每个服务组对应一个端口;及实时侦测所述多个服务组分别对应的端口是否接收到从所述通讯服务器所发送过来的业务请求,当所述多个服务组中的某个服务组所对应的端口接收到所述业务请求时,控制所述某个服务组执行所述业务请求,其中,所述执行所述业务请求指从与所述某个服务组所对应的目标数据库中读取所述业务请求所请求的数据,或者将所述业务请求所请求存储/更新的数据存储/更新到与所述某个服务组所对应的所述目标数据库,可以实现动态分库,支撑海量交易,系统处理灵活,能够有效支持交易大并发高的场景。
实施例六
参阅图6所示,为本发明实施例六提供的通讯服务器的结构示意图。在本发明较佳实施例中,所述通讯服务器3包括存储器31、至少一个处理器32、至少一条通信总线33。
本领域技术人员应该了解,图6示出的通讯服务器的结构并不构成本发明实施例的限定,既可以是总线型结构,也可以是星形结构,所述通讯服务器3还可以包括比图示更多或更少的其他硬件或者软件,或者不同的部件布置。
在一些实施例中,所述通讯服务器3包括一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的终端,其硬件包括但不限于微处理器、专用集成电路、可编程门阵列、数字处理器及嵌入式设备等。
需要说明的是,所述通讯服务器3仅为举例,其他现有的或今后可能出现的电子产品如可适应于本发明,也应包含在本发明的保护范围以内,并以引用方式包含于此。
在一些实施例中,所述存储器31用于存储程序代码和各种数据,例如安装在所述通讯服务器3中的动态分库路由装置30,并在通讯服务器3的运行过程中实现高速、自动地完成程序或数据的存取。所述存储器31包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-OnlyMemory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子擦除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他存储介质。
在一些实施例中,所述至少一个处理器32可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述至少一个处理器32是所述通讯服务器3的控制核心(Control Unit),利用各种接口和线路连接整个通讯服务器3的各个部件,通过运行或执行存储在所述存储器31内的程序或者模块,以及调用存储在所述存储器31内的数据,以执行通讯服务器3的各种功能和处理数据,例如执行动态分库路由的功能。
在一些实施例中,所述至少一条通信总线33被设置为实现所述存储器31以及所述至少一个处理器32等之间的连接通信。
尽管未示出,所述通讯服务器3还可以包括给各个部件供电的电源(比如电池),优选的,电源可以通过电源管理装置与所述至少一个处理器32逻辑相连,从而通过电源管理装置实现管理充电、放电、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述通讯服务器3还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分。
在进一步的实施例中,结合图4,所述至少一个处理器32可执行所述通讯服务器3的操作装置以及安装的各类应用程序(如所述的动态分库路由装置30)、程序代码等,例如,上述的各个模块。
所述存储器31中存储有计算机程序的程序代码,且所述至少一个处理器32可调用所述存储器31中存储的程序代码以执行相关的功能。例如,图4中所述的各个模块是存储在所述存储器31中的程序代码,并由所述至少一个处理器32所执行,从而实现所述各个模块的功能以达到动态分库路由的目的。
在本发明的一个实施例中,所述存储器31存储多个指令,所述多个指令被所述至少一个处理器32所执行以实现动态分库路由。
具体地,所述至少一个处理器32对上述指令的具体实现方法可参考图2对应实施例中相关步骤的描述,在此不赘述。
实施例七
参阅图7所示,为本发明实施例七提供的应用服务器的结构示意图。在本发明较佳实施例中,所述应用服务器4包括存储器41、至少一个处理器42、至少一条通信总线43。
本领域技术人员应该了解,图7示出的应用服务器的结构并不构成本发明实施例的限定,既可以是总线型结构,也可以是星形结构,所述应用服务器4还可以包括比图示更多或更少的其他硬件或者软件,或者不同的部件布置。
在一些实施例中,所述应用服务器4包括一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的终端,其硬件包括但不限于微处理器、专用集成电路、可编程门阵列、数字处理器及嵌入式设备等。
需要说明的是,所述应用服务器4仅为举例,其他现有的或今后可能出现的电子产品如可适应于本发明,也应包含在本发明的保护范围以内,并以引用方式包含于此。
在一些实施例中,所述存储器41用于存储程序代码和各种数据,例如安装在所述应用服务器4中的动态分库路由装置40,并在应用服务器4的运行过程中实现高速、自动地完成程序或数据的存取。所述存储器41包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-OnlyMemory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子擦除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
在一些实施例中,所述至少一个处理器42可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述至少一个处理器42是所述应用服务器4的控制核心(Control Unit),利用各种接口和线路连接整个应用服务器4的各个部件,通过运行或执行存储在所述存储器41内的程序或者模块,以及调用存储在所述存储器41内的数据,以执行应用服务器4的各种功能和处理数据,例如执行动态分库路由的功能。
在一些实施例中,所述至少一条通信总线43被设置为实现所述存储器41以及所述至少一个处理器42等之间的连接通信。
尽管未示出,所述应用服务器4还可以包括给各个部件供电的电源(比如电池),优选的,电源可以通过电源管理装置与所述至少一个处理器42逻辑相连,从而通过电源管理装置实现管理充电、放电、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述应用服务器4还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分。
在进一步的实施例中,结合图5,所述至少一个处理器42可执行所述应用服务器4的操作装置以及安装的各类应用程序(如所述的动态分库路由装置40)、程序代码等,例如,上述的各个模块。
所述存储器41中存储有计算机程序的程序代码,且所述至少一个处理器42可调用所述存储器41中存储的程序代码以执行相关的功能。例如,图5中所述的各个模块是存储在所述存储器41中的程序代码,并由所述至少一个处理器42所执行,从而实现所述各个模块的功能以达到动态分库路由的目的。
在本发明的一个实施例中,所述存储器41存储多个指令,所述多个指令被所述至少一个处理器42所执行以实现多设备的应用程式的测试。
具体地,所述至少一个处理器42对上述指令的具体实现方法可参考图3对应实施例中相关步骤的描述,在此不赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (10)
1.一种动态分库路由方法,应用于通讯服务器中,所述通讯服务器与包括多个服务组的应用服务器连接,其特征在于,所述方法包括:
设置一个路由配置表,其中,所述路由配置表用于记录多个平台与所述多个服务组之间的对应关系,以及记录所述多个服务组中的每个服务组所对应的端口,其中,不同的平台对应不同的服务组;
当接收到所述多个平台中的任一平台发送过来的业务请求时,根据所述发送业务请求的平台检索所述路由配置表,从所述多个服务组中确定一个目标服务组以及所述目标服务组所对应的端口,其中,所述目标服务组为所述路由配置表所记录的多个服务组中,与所述发送业务请求的平台对应的服务组;及
将所接收到的业务请求发送到所述目标服务组所对应的端口。
2.如权利要求1所述的动态分库路由方法,其特征在于,所述方法还包括:
定期从所述应用服务器获取所述多个服务组中的每个服务组在预设时间段内的运行状况,其中,所述运行状况包括每个服务组启用最大线程数时的时间;及
根据所述多个服务组中的每个服务组在所述预设时间段内的运行状况调整所述路由配置表。
3.如权利要求2所述的动态分库路由方法,其特征在于,所述根据所述多个服务组中的每个服务组在所述预设时间段内的运行状况调整所述路由配置表包括:
统计所述多个服务组中的每个服务组在所述预设时间段内启用最大线程数时的总时长,以得到所述多个服务组中的每个服务组对应的总时长;
确定每个服务组所对应的总时长是否超过预定时长;
若所述多个服务组中的每个服务组所对应的总时长都小于或者等于所述预定时长,则确定无需更新所述路由配置表;
若所述多个服务组中至少一个服务组所对应的总时长大于所述预定时长,则确定需更新所述路由配置表;及
当确定需更新所述路由配置表时,在所述路由配置表中,将与最长总时长所对应的服务组和与最短总时长所对应的服务组对调。
4.一种动态分库路由方法,应用于包括多个服务组的应用服务器中,所述应用服务器与通讯服务器和包括多个数据库的数据库服务器连接,其特征在于,所述方法包括:
为所述多个服务组中的每个服务组配置一个目标数据库,其中,所述目标数据库为所述多个数据库中的其中一个数据库,每个目标数据库用于存储多个平台的业务数据,所述多个服务组中的每个服务组对应一个端口;及
实时侦测所述多个服务组分别对应的端口是否接收到从所述通讯服务器所发送过来的业务请求,当所述多个服务组中的某个服务组所对应的端口接收到所述业务请求时,控制所述某个服务组执行所述业务请求。
5.如权利要求4所述的动态分库路由方法,其特征在于,所述执行所述业务请求指从与所述某个服务组所对应的目标数据库中读取所述业务请求所请求的数据,或者将所述业务请求所请求存储/更新的数据存储/更新到与所述某个服务组所对应的所述目标数据库。
6.如权利要求4所述的动态分库路由方法,其特征在于,所述方法还包括:
统计所述多个服务组中的每个服务组的运行状况,其中,所述运行状况包括每个服务组启用最大线程数时的时间,其中,所述多个服务组中的每个服务组所对应的最大线程数相同或者不同。
7.一种动态分库路由装置,运行于通讯服务器中,所述通讯服务器与包括多个服务组的应用服务器连接,其特征在于,所述装置包括:
设置模块,用于设置一个路由配置表,其中,所述路由配置表用于记录多个平台与所述多个服务组之间的对应关系,以及记录所述多个服务组中的每个服务组所对应的端口,其中,不同的平台对应不同的服务组;
执行模块,用于当接收到所述多个平台中的任一平台发送过来的业务请求时,根据所述发送业务请求的平台检索所述路由配置表,从所述多个服务组中确定一个目标服务组以及所述目标服务组所对应的端口,其中,所述目标服务组为所述路由配置表所记录的多个服务组中,与所述发送业务请求的平台对应的服务组;及
所述执行模块,还用于将所接收到的业务请求发送到所述目标服务组所对应的端口。
8.一种动态分库路由装置,运行于包括多个服务组的应用服务器中,所述应用服务器与通讯服务器和包括多个数据库的数据库服务器连接,其特征在于,所述装置包括:
配置模块,用于为所述多个服务组中的每个服务组配置一个目标数据库,其中,所述目标数据库为所述多个数据库中的其中一个数据库,每个目标数据库用于存储多个平台的业务数据,所述多个服务组中的每个服务组对应一个端口;及
控制模块,用于实时侦测所述多个服务组分别对应的端口是否接收到从所述通讯服务器所发送过来的业务请求,当所述多个服务组中的任一服务组所对应的端口接收到所述业务请求时,控制接收到所述业务请求的服务组执行所述业务请求,其中,所述执行所述业务请求是指从与所述接收到所述业务请求的服务组所对应的目标数据库中读取所述业务请求所请求的数据,或者将所述业务请求所请求存储/更新的数据存储/更新到与所述接收到所述业务请求的服务组所对应的所述目标数据库。
9.一种服务器,其特征在于,所述服务器包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1至3中任意一项所述动态分库路由方法或实现如权利要求4至6任意一项所述动态分库路由方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至3中任意一项所述动态分库路由方法或实现如权利要求4至6任意一项所述动态分库路由方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910436135.5A CN110324403A (zh) | 2019-05-23 | 2019-05-23 | 动态分库路由方法、装置、服务器及存储介质 |
PCT/CN2019/103386 WO2020232895A1 (zh) | 2019-05-23 | 2019-08-29 | 动态分库路由方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910436135.5A CN110324403A (zh) | 2019-05-23 | 2019-05-23 | 动态分库路由方法、装置、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110324403A true CN110324403A (zh) | 2019-10-11 |
Family
ID=68119370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910436135.5A Pending CN110324403A (zh) | 2019-05-23 | 2019-05-23 | 动态分库路由方法、装置、服务器及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110324403A (zh) |
WO (1) | WO2020232895A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112597222A (zh) * | 2020-12-16 | 2021-04-02 | 中国建设银行股份有限公司 | 金融数据库连接处理方法、装置、设备及存储介质 |
CN113938525A (zh) * | 2021-08-30 | 2022-01-14 | 武汉武钢绿色城市技术发展有限公司 | 5g泛终端接入管理和资源调度平台服务器、系统及方法 |
WO2023131058A1 (zh) * | 2022-01-05 | 2023-07-13 | 阿里云计算有限公司 | 一种企业数字中台中资源服务应用的调度系统和方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115801666A (zh) * | 2022-11-29 | 2023-03-14 | 中国建设银行股份有限公司 | 交易链路的切换方法、装置、电子设备及计算机存储介质 |
CN117648383B (zh) * | 2024-01-30 | 2024-06-11 | 中国人民解放军国防科技大学 | 一种异构数据库实时数据同步方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040193619A1 (en) * | 2003-03-28 | 2004-09-30 | Srinivasan Venkatachary | System and method for efficiently searching a forwarding database that is split into a bounded number of sub-databases having a bounded size |
CN106055587A (zh) * | 2016-05-21 | 2016-10-26 | 乐视控股(北京)有限公司 | 一种分库数据库系统及其路由方法 |
CN106326252A (zh) * | 2015-06-24 | 2017-01-11 | 中兴通讯股份有限公司 | 数据库的数据处理方法及装置 |
CN107798038A (zh) * | 2017-05-05 | 2018-03-13 | 平安科技(深圳)有限公司 | 数据响应方法及数据响应设备 |
CN108052615A (zh) * | 2017-12-15 | 2018-05-18 | 泰康保险集团股份有限公司 | 访问请求的处理方法、装置、介质及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170223136A1 (en) * | 2016-01-29 | 2017-08-03 | AppDynamics, Inc. | Any Web Page Reporting and Capture |
CN108055312B (zh) * | 2017-12-07 | 2021-07-09 | 畅捷通信息技术股份有限公司 | 路由方法及其装置与计算机装置及其可读存储介质 |
-
2019
- 2019-05-23 CN CN201910436135.5A patent/CN110324403A/zh active Pending
- 2019-08-29 WO PCT/CN2019/103386 patent/WO2020232895A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040193619A1 (en) * | 2003-03-28 | 2004-09-30 | Srinivasan Venkatachary | System and method for efficiently searching a forwarding database that is split into a bounded number of sub-databases having a bounded size |
CN106326252A (zh) * | 2015-06-24 | 2017-01-11 | 中兴通讯股份有限公司 | 数据库的数据处理方法及装置 |
CN106055587A (zh) * | 2016-05-21 | 2016-10-26 | 乐视控股(北京)有限公司 | 一种分库数据库系统及其路由方法 |
CN107798038A (zh) * | 2017-05-05 | 2018-03-13 | 平安科技(深圳)有限公司 | 数据响应方法及数据响应设备 |
CN108052615A (zh) * | 2017-12-15 | 2018-05-18 | 泰康保险集团股份有限公司 | 访问请求的处理方法、装置、介质及电子设备 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112597222A (zh) * | 2020-12-16 | 2021-04-02 | 中国建设银行股份有限公司 | 金融数据库连接处理方法、装置、设备及存储介质 |
CN113938525A (zh) * | 2021-08-30 | 2022-01-14 | 武汉武钢绿色城市技术发展有限公司 | 5g泛终端接入管理和资源调度平台服务器、系统及方法 |
CN113938525B (zh) * | 2021-08-30 | 2024-03-19 | 宝信软件(武汉)有限公司 | 5g泛终端接入管理和资源调度平台服务器、系统及方法 |
WO2023131058A1 (zh) * | 2022-01-05 | 2023-07-13 | 阿里云计算有限公司 | 一种企业数字中台中资源服务应用的调度系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2020232895A1 (zh) | 2020-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110324403A (zh) | 动态分库路由方法、装置、服务器及存储介质 | |
US10412021B2 (en) | Optimizing placement of virtual machines | |
CN105700961B (zh) | 业务容器创建方法及装置 | |
CN106233276B (zh) | 网络可访问块存储装置的协调准入控制 | |
CN102693209B (zh) | 信息处理系统 | |
Dobson et al. | Optimal workflow decisions for investigators in systems with interruptions | |
CN109697153A (zh) | 监控方法、监控系统及计算机可读存储介质 | |
CN109558234A (zh) | 一种定时任务调度方法和装置 | |
CN107070972A (zh) | 一种分布式文件处理方法及装置 | |
CN108364146A (zh) | 物流配送仿真方法及装置 | |
JPH02247768A (ja) | 分散処理システム及び分散処理連携方法 | |
CN105408881A (zh) | 大规模网络中的带宽计量 | |
CN105468546B (zh) | 互连电路的数据处理装置和方法 | |
US20210201213A1 (en) | Reservation and waitlist management using precision table turn-time analysis | |
CN108701132A (zh) | 资源管理系统和方法 | |
CN102025753B (zh) | 一种服务器数据资源负载均衡处理方法及设备 | |
CN109840262A (zh) | 数据统计方法及相关装置 | |
CN109918392A (zh) | 结构化查询语言定位方法、装置、服务器及存储介质 | |
CN109947568A (zh) | 定时任务处理方法、系统、计算机设备及存储介质 | |
CN109885636A (zh) | 一种用户画像方法和服务器 | |
CN109542627A (zh) | 节点切换方法、装置、管理机、节点设备和分布式系统 | |
CN109558239A (zh) | 一种任务调度方法、装置、系统、计算机设备和存储介质 | |
CN109634630A (zh) | 应用程序更新方法、装置、电子设备及存储介质 | |
CN110276515A (zh) | 任务分配方法、装置、终端及存储介质 | |
Li et al. | Co-Scheduler: A coflow-aware data-parallel job scheduler in hybrid electrical/optical datacenter networks |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191011 |