本发明涉及金融领域,尤其涉及一种基于金融客户的动态全局水平分群方法、系统以及计算机可读存储介质。
背景技术:
受关系数据库的单库容量限制,单库可存储的金融客户量存在容量瓶颈(通常使用的1t容量),采用单库无法解决大数据时代下金融客户无限增长的问题。
现有技术运用分库分表技术解决客户无限增长问题,但分库分表技术只针对单表,因此存在分布式事务问题,为解决该问题,系统需构建复杂的服务构架,增加了系统开发的复杂度。
技术实现要素:
本发明的目的是解决金融客户无限增长的问题。
为达到上述目的,本发明针对金融领域客户之间的数据交叉少的特点(即两个客户之间所产生的数据几乎没有相互关联性),在关系数据库系统架构的基础上,提出一种基于客户的动态全局水平分群方法,该方法包括:
创建至少两个服务组,为各个服务组分别构建关系数据库;
在用户交互入口层加入动态路由来链接到所述各个服务组,从而构建微服务架构;
将金融客户按维度划分成多个群组,在所述微服务架构下,将各个群组分配到各个服务组所对应的关系数据库中。
所述在用户交互入口层加入动态路由来链接到所述各个服务组的步骤,进一步包括:创建组路由gr2来链接到所述各个服务组,并将所述组路由gr2加入到所述动态路由中。
进一步地,方法还包括在用户交互入口层到任意一个服务组之间的链路上加入中间件,使用所述中间件实现全局客户路由。
进一步地,方法还包括:在任意两个关系数据库之间进行金融客户数据迁移。
所述在任意两个关系数据库之间进行金融客户数据迁移的步骤,进一步包括:用迁移工具对金融客户数据进行动态冷热迁移。
进一步地,方法还包括:锁定数据库管理系统来使同时仅有一个事务能向服务组获取金融客户数据资源。
进一步地,在需要进行灰度发布时,在所述微服务架构下,只在部分服务组中进行发布。
本发明第二方面,还提供一种基于金融客户的动态全局水平分群装置,包括:
创建至少两个服务组,为各个服务组分别构建关系数据库;
在用户交互入口层加入动态路由来链接到所述各个服务组,从而构建微服务架构;
将金融客户按维度划分成多个群组,在所述微服务架构下,将各个群组分配到各个服务组所对应的关系数据库中。
所述在用户交互入口层加入动态路由来链接到所述各个服务组的装置,进一步包括:创建组路由gr2来链接到所述各个服务组,并将所述组路由gr2加入到所述动态路由中。
进一步地,动态全局水平分群装置还包括:在用户交互入口层到任意一个服务组之间的链路上加入中间件,使用所述中间件实现全局客户路由。
进一步地,动态全局水平分群装置还包括:在任意两个关系数据库之间进行金融客户数据迁移。
所述在任意两个关系数据库之间进行金融客户数据迁移的装置,进一步包括:用迁移工具对金融客户数据进行动态冷热迁移。
进一步地,动态全局水平分群装置还包括:锁定数据库管理系统来使同时仅有一个事务能向服务组获取金融客户数据资源。
进一步地,在需要进行灰度发布时,在所述微服务架构下,只在部分服务组中进行发布。
依据本发明的另一个方面,提供了一种电子设备,其中,该电子设备包括:
处理器;以及,
被安排成存储计算机可执行指令的存储器,可执行指令在被执行时使处理器执行上述的方法。
依据本发明的另一个方面,提供了一种计算机可读存储介质,其中,计算机可读存储介质存储一个或多个程序,一个或多个程序当被处理器执行时,实现上述的方法。
本发明针对金融领域客户的特点,在微服务架构下,通过动态全局水平分群来创建多个服务组,并为各个服务组分别构建关系数据库,然后将金融客户按维度划分成多个群组来分配到各个关系数据库中,以此解决金融客户无限增长问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的基于金融客户的动态全局水平分群方法的流程示意图;
图2示出了根据本发明一个实施例的动态全局水平分群方法的实施架构示意图;
图3示出了根据本发明一个实施例的基于金融客户的动态全局水平分群装置的结构示意图;
图4示出了根据本发明一个实施例的电子设备的结构示意图;
图5示出了根据本发明一个实施例的计算机可读存储介质的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的基于金融客户的动态全局水平分群方法的流程示意图。如图1所示,本发明实施例的动态全局水平分群的方法包括:
s101:创建至少两个服务组,为各个服务组分别构建关系数据库;
需要说明的是,服务组(groupservice)包括基于硬件和软件的一个或多个资源,这些资源被服务组中的应用程序服务协同,为客户端提供应用程序服务。服务组数量不构成限定,实际运用中管理员可根据金融客户量进行服务组数量的动态增减。
以每一个服务组即为一个集群,集群与集群之间通过服务层进行调用。
对每个服务组独立构建有自己的关系数据库。关系数据库是客户/服务器数据库,例如sqlserver、oracle和sybase等。各个关系数据库驻留在其对应的服务组中,服务组利用关系数据库对外提供数据存储及计算处理服务。其中各个服务组相当于分散的组件,可分布于各地机房,如在北京机房设置一个或多个服务组,在上海机房设置一个或多个服务组。
s102:在用户交互入口层加入动态路由来链接到所述各个服务组,从而构建微服务架构;
需要说明的是,在步骤s102中,设置组路由gr1,组路由gr1的用户交互入口层加入有动态路由,即在用户交互入口层中根据路由器之间的交换的特定路由信息自动地建立自己的路由表。组路由gr1通过动态路由来与各个集群链接,从而构建出如图2所示的微服务架构。架构中的链路动态可变。
例如,图2中的微服务构架创建两个服务组gs1、gs2,服务组gs1通过服务层调用服务组gs2,服务组gs1、gs2中的客户账户数据通过将自身地址加入至组路由gr1的路由表中,分别与组路由gr1建立链路。
需要说明的是,在微服务构架中,各个服务组独立提供各自的微服务,可独立进行开发、管理和迭代,通过使用云架构和平台式部署、管理功能,对各个服务组进行服务调度。app通过组路由gr1来指向性访问服务组并使用服务组提供的服务,降低系统的耦合性,提供更加灵活的服务支持。
构架中的客户端设备可以是智能手机、平板电脑、个人数字助理(pda)、台式电脑、笔记本电脑等等。客户端设备中设置有客户端软件,即app,客户端软件是客户对接服务端的窗口,以应用的形式存在于客户端设备中。其中,app可以包括代码并且可以是被预先安装在客户端设备上或者可以被下载到客户端设备上。
app可以使用驻留在组路由gr1(grouproute)上的一个或多个服务接口,服务接口通过app发送编码中的访问指示符来在组路由gr1的用户交互入口层寻址。app可以使用不同的访问指示符,比如,不同的url。
s103:将金融客户按维度划分成多个群组,在所述微服务架构下,将各个群组分配到各个服务组所对应的关系数据库中。
需要说明的是,应用本实施例的构架,可将金融客户按维度划分成多个群组,将各个群组分配到各个服务组所对应的关系数据库中,以此解决金融客户无限增长问题。比如,对于两个服务组gs1、gs2,可使每1000万金融客户进入服务组gs1的库,另1000万金融客户则进入服务组gs2的库,若再新增1000万金融客户,则继续创建服务组及其对应数据库并将新增金融客户分配其中。每新增服务组,只需新建路由即可加入至微服务架构中。
本发明实施例针对金融领域客户的特点,在微服务架构下,通过动态全局水平分群来创建多个服务组,并为各个服务组分别构建关系数据库,然后将金融客户按维度划分成多个群组来分配到各个关系数据库中,以此解决金融客户无限增长问题。
在本发明实施例的一种可选的实施方式中,图1所示方法中的s102中所述在用户交互入口层加入动态路由来链接到所述各个服务组具体包括:创建组路由来链接到所述各个服务组,并将所述组路由加入到所述动态路由中。
即在该实施方式中,为了节约资源及降低成本,只将构架中的重要数据(也是主要数据)拆分到多个集群中进行分群存储,次要数据暂不予以分群。对构架中的次要数据,可根据后续实际需求考虑水平分群。在次要数据不分群的场景中,可创建组路由gr2来链接各个服务组,并将组路由gr2加入到组路由gr1的路由表中,如此在微服务调用层交叉调用时,通过双层动态路由,可实现支持一部分客户数据没有分群而一部分客户数据已分群的情况。比如,假设现有张三、李四两位客户,张三与李四的重要数据当量大,次要数据当量小,则可考虑在微服务架构中创建用于存放次要数据的服务组gs3,设定服务组gs1、gs2用于存放重要数据,然后将张三的重要数据存放于服务组gs1,将李四的重要数据存放于服务组gs2,张三和李四两者的次要数据存放于服务组gs3,如此节约系统资源。在该示例的场景下,系统可通过链路gr1-gs1来指向张三的重要数据,通过链路gr1-gs2来指向李四的重要数据,通过链路gr1-gr2-gs3来指向张三和李四的次要数据。
分群后,可在任意两个服务组的库之间进行金融客户数据迁移,如将服务组gr1中的数据迁移至服务组gr2,亦或将服务组gr3中的数据迁移至服务组gr1。迁移操作利用数据迁移工具按指定的策略手动/自动从源迁移到目的地。数据迁移工具进行按需选用,如使用sqlyog、db2db或mysql,或利用java、r、python等编写程序进行数据转移。
数据转移操作可通过数据迁移工具进行冷迁移,比如把整个虚拟机从服务组gs1直接整个传输到服务组gs2,传输过程中保存虚拟机关闭;也可通过数据迁移工具进行热迁移(也称动态迁移),比如把服务组gs1的整个虚拟机的运行状态完整保存下来,同时快速恢复到服务组gs2上,对虚拟机执行平滑过度。
数据迁移工具对外提供用户界面,并授权给管理员(admin)实施图形化迁移操作。用户界面可以基于ui进行人机交互、操作逻辑的整体设计。
为了保证数据一致性,针对服务组中的金融客户数据,在数据库管理系统上加锁,锁定数据库管理系统来使同时仅有一个事务能向服务组获取金融客户数据资源,保证在同一时间只有一个事务能进行修改操作。比如在a事务获得服务组中的金融客户数据资源时,禁止b事务对服务组中的金融客户数据资源进行更改。其中事务指数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
本发明实施例为了进一步提高微服务架构的交互灵活性,在微服务架构中加入中间件层(message-orientedmiddleware),中间件由服务程序构建,如apache、nginx、mq等,利用中间件来对各个服务组进行分布数据访问,实现全局客户路由。中间件可以应用于用户交互入口层到任意一个服务组之间的链路上,比如组路由gr1和服务组gs1之间的交互,亦或是服务组gs1和服务组gs2之间的交互。
可理解的是,通过本实施例的微服务构架,可以实施灰度发布,即有新版本发布时,只在部分服务组中进行发布,使分配至该部分服务组中的客群体验服务组发布的新功能,其余服务组中的客群则依旧体验旧功能。新功能体验获得成功后,再逐步扩大到其余服务组中进行发布。利用灰度发布保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
为实现多活互备,可以在架构中的服务组执行读写操作时,将读写数据备份到其他服务组中,比如在服务组gs1进行读写操作时将数据备份到服务组gs2中,如此在服务组gs1出现异常时可通过服务组gs2实现多活,提示系统稳定性。
图3示出了根据本发明一个实施例的基于金融客户的动态全局水平分群装置的结构示意图。如图3所示,本发明实施例的基于金融客户的动态全局水平分群装置包括:
创建服务组单元31,创建至少两个服务组,为各个服务组分别构建关系数据库;
动态路由单元32,在用户交互入口层加入动态路由来链接到所述各个服务组,从而构建微服务架构;
金融客户分配单元33,将金融客户按维度划分成多个群组,在所述微服务架构下,将各个群组分配到各个服务组所对应的关系数据库中。
本发明实施例针对金融领域客户的特点,在微服务架构下,通过动态全局水平分群来创建多个服务组,并为各个服务组分别构建关系数据库,然后将金融客户按维度划分成多个群组来分配到各个关系数据库中,以此解决金融客户无限增长问题。
在本发明的另一个实施例中,为了进一步提高微服务架构的交互灵活性,图3所示装置的动态路由单元32进一步适于:创建组路由来链接到所述各个服务组,并将所述组路由加入到所述动态路由中。
优选地,在用户交互入口层到任意一个服务组之间的链路上加入中间件,使用所述中间件实现全局客户路由。
优选地,在任意两个服务组的库之间进行金融客户数据迁移,数据转移操作可通过数据迁移工具进行冷迁移。
为了保证数据一致性,针对服务组中的金融客户数据,在数据库管理系统上加锁,锁定数据库管理系统来使同时仅有一个事务能向服务组获取金融客户数据资源,保证在同一时间只有一个事务能进行修改操作。
可理解的是,通过本实施例的微服务构架,可以实施灰度发布。
为实现多活互备,可以在架构中的服务组执行读写操作时,将读写数据备份到其他服务组中。
本发明实施例的基于金融客户的动态全局水平分群装置可以用于执行上述方法实施例,其原理和技术效果类似,此处不再赘述。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的检测电子设备的佩戴状态的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
例如,图4示出了根据本发明一个实施例的电子设备的结构示意图。该电子设备传统上包括处理器41和被安排成存储计算机可执行指令(程序代码)的存储器42。存储器42可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。存储器42具有存储用于执行图1所示的以及各实施例中的任何方法步骤的程序代码44的存储空间43。例如,用于程序代码的存储空间43可以包括分别用于实现上面的方法中的各种步骤的各个程序代码44。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(cd)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为例如图5所述的计算机可读存储介质。该计算机可读存储介质可以具有与图4的电子设备中的存储器42类似布置的存储段、存储空间等。程序代码可以例如以适当形式进行压缩。通常,存储单元存储有用于执行根据本发明的方法步骤的程序代码51,即可以由诸如41之类的处理器读取的程序代码,当这些程序代码由电子设备运行时,导致该电子设备执行上面所描述的方法中的各个步骤。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。