CN109685646B - 一种资金服务方法及其系统 - Google Patents
一种资金服务方法及其系统 Download PDFInfo
- Publication number
- CN109685646B CN109685646B CN201811558214.5A CN201811558214A CN109685646B CN 109685646 B CN109685646 B CN 109685646B CN 201811558214 A CN201811558214 A CN 201811558214A CN 109685646 B CN109685646 B CN 109685646B
- Authority
- CN
- China
- Prior art keywords
- service
- processing
- different
- logic
- business logic
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/03—Credit; Loans; Processing thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- Human Resources & Organizations (AREA)
- General Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Marketing (AREA)
- Entrepreneurship & Innovation (AREA)
- Economics (AREA)
- Physics & Mathematics (AREA)
- Finance (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Technology Law (AREA)
- Data Mining & Analysis (AREA)
- Development Economics (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种资金服务的系统设计方法,以及实施这种资金服务的系统,属于系统设计方法领域。本发明总体架构以领域驱动设计模式为基础,结合单例、工厂等多种设计模式,并设计业务层、基建层等分层设计模式来构建资金通道的系统,其主要模块包括借款人服务模块、内部放款服务模块、外部通知服务模块、公共工具模块、业务逻辑模块等。本发明针对资方不同业务的特性,通过同步请求处理或异步处理来处理业务逻辑,保证其时效性和合理性,并使用协程并发的处理模式,保证系统的高并发能力。此外本发明还结合业务使用多种设计模式,提高了效率和代码可读性。本发明具有极强的扩展性,实现了业务处理的高效性。
Description
技术领域
本发明涉及资金通道设计领域,特别涉及一种资金服务方法和资金服务系统。
背景技术
为便于理解本发明内容,现给出缩略语和关键术语如下定义:
DDD(Domain-Driven Design):领域驱动设计,一套综合软件系统分析和设计的面向对象建模方法;
Modern C++:C++11,C++14,C++17标准的C++标准统称;
cmq(Cloud Message Queue):分布式消息队列服务
Protobuf(Google Protocol Buffer):一种轻便高效的结构化数据存储格式
zmq(ZeroMQ):一种通信服务的消息队列
现有的资金通道系统,是由一个网关服务和多个资金方服务和脚本组成,外部系统请求到网关服务,网关服务会路由到对应的资方服务,资方服务和脚本会根据这些请求的数据和资金接入方做对应的交互和请求。
现有方案的存在的技术问题主要是:
1、系统不支持同一个借款人在同一个资金方同时借多笔款;
2、接入不同的资金方时无法复用之前的服务代码,这样导致很多基本工具代码无法共用,因此不仅会编写许多重复代码,而且代码臃肿不美观;
3、另外因业务逻辑不同,所构造的服务系统也不尽相同,难以维护管理。
发明内容
本发明要解决的技术问题是提供一种资金通道的系统设计方法,通过业务层、基建层的设计步骤,构建资金通道的系统,针对资方不同业务的特性,通过同步请求处理或异步处理,并使用协程并发的处理模式,同时结合业务使用多种设计模式,解决了系统不支持同一个借款人在同一个资金方同时借多笔款的问题,也避免了基本工具代码无法共用,造成编写许多重复代码,同时也造成代码臃肿不美观的问题,同时也便于服务系统的维护管理。
为解决上述技术问题,本发明的技术方案是:提供一种资金服务方法,所述资金服务包括借款人服务、内部放款服务、外部通知服务、公共工具服务和业务逻辑服务,其中,
所述借款人服务,主要负责借款人信息的处理;包括添加借贷人信息、修改借款人信息、查询借贷人信息;
所述内部放款服务,主要负责对内部匹配、放款模块交互;包括进件内部流程处理、开户内部流程处理、放款内部流程处理;
所述外部通知服务,主要负责接收不同资方外部通知和转发通知;包括进件结果外部通知、开户结果外部通知、放款结果外部通知;
所述公共工具服务,主要由各种数据库表操作、加解密一些工具处理;包括数据库处理、加解密处理;
所述业务逻辑服务,主要负责对不同资方的业务逻辑处理;包括业务逻辑A、业务逻辑B。
进一步地,所述的主要负责接收不同资方外部通知和转发通知的外部通知服务,其设计一个常驻进程负责处理不同资方的业务逻辑,当接收到外部的请求时,通过工厂模式将不同的资方请求跳转至常驻进程不同的业务逻辑处理服务中,并根据状态机去实现不同的业务流程。
进一步地,所述的公共工具服务,将所有公共的工具封装为多个工具类,所述的工具类在不改变代码的情况下,供上层的业务逻辑服务、内部放款服务调用。
进一步地,所述的工具类包括:
数据库表的查询、插入等操作封装为一个数据库处理工具类;
加解密处理封装为一个加解密处理工具类;
字符串、时间处理函数封装为一个基础工具类。
进步一地,所述业务逻辑服务包括:
将所有的资方流程抽象为一个基类,每个资金通道子类继承这个基类,并在每个子类中实现其对应资方的业务逻辑;
当资金服务请求不同资方时,将由触发器发起流程通知到常驻进程中,并统一并发去请求不同的资方的业务;
当不同资方请求资金服务时,通过工厂模式将会跳转至不同的资金通道子类中,并进而在资金通道子类实现业务的逻辑处理。
进一步地,所述的业务逻辑服务接入不同资方时:
创建一个常驻进程负责不同资方的业务逻辑,当接收不同资方的请求时,通过外部通知服务并使用工厂模式将不同的资方请求跳转至不同的外部接口模块中;
在外部接口模块中,不同资方各自实现对应的业务逻辑,并在处理中针对业务逻辑调用内部放款服务,实现内部模块的交互;
内部模块交互时,根据业务逻辑处理内部逻辑处理,并调用数据仓库模块处理对应的数据库表;
最后处理完业务流程后,需要主动给不同资方发送请求的时候,通过触发器发起任务并跳转至第一步中的常驻进程进行处理。
较佳地,所述资金服务方法针对资方不同业务的特性,分为同步请求和异步处理,保证对业务逻辑处理的时效性和合理性。
进一步地,所述的外部通知服务模块中负责接收外部资方的通知,当收到通知后,
如果业务逻辑能够处理,则同步请求,及时处理;
如果业务逻辑并不能即时处理,则使用cmq(Cloud Message Queue:分布式消息队列服务)或者zmq(一种通信服务的消息队列)实现异步处理,实现高效的处理效率。
较佳地,所述资金服务方法还包括协程并发的处理模式,保证系统的高并发能力,所述的协程并发的处理模式包括:
当多个资方接入的同时,在所述协程并发的处理模式中控制共享资源不加锁,只需要判断状态,保证了协程的执行效率。
较佳地,所述资金服务方法结合业务使用多种设计模式,提高效率和代码可读性,所述的多种设计模式包括:
在数据库的处理操作、cmq的设计等基础组件中,使用单例模式来实现其类的一个对象成为系统中的唯一实例;
在常驻进程中收到不同资方的请求,使用工厂模式来实现跳转至对应的资方业务处理逻辑。
较佳地,所述资金服务方系统中,业务逻辑模块增加业务逻辑的方法包括:
使用工厂模式,在常驻进程中添加需要增加的业务逻辑。
进一步地,所述资金服务包括应用层、业务层和基建层的设计步骤,
所述的应用层负责不同进程服务之间的传输通信;
所述的业务层负责不同资方的业务逻辑;
所述的基建层负责提供稳定的基建环境。
一种资金服务系统,包括:
借款人服务模块,用于处理借款人信息;包括添加借贷人信息、修改借款人信息、查询借贷人信息;
内部放款服务模块,用于完成内部匹配、放款模块交互;包括进件内部流程处理、开户内部流程处理、放款内部流程处理;
外部通知服务模块,用于接收不同资方外部通知和转发通知;包括进件结果外部通知、开户结果外部通知、放款结果外部通知;
公共工具模块,用于处理各种数据库表操作、加解密一些工具;包括数据库处理、加解密处理;
业务逻辑模块,用于处理不同资方的业务逻辑;包括业务逻辑A、业务逻辑B。
进一步地,所述外部通知服务模块包括一个常驻进程,负责处理不同资方的业务逻辑,当接收到外部的请求时,通过工厂模式将不同的资方请求跳转至常驻进程,进行不同的业务逻辑处理,并根据状态机去实现不同的业务流程。
进一步地,所述公共工具模块将所有公共的工具封装为多个工具类,所述的工具类在不改变代码的情况下,供上层的业务逻辑服务、内部放款服务调用;所述的工具类包括:数据库表的查询、插入等操作封装为一个数据库处理工具类;加解密处理封装为一个加解密处理工具类;字符串、时间处理函数封装为一个基础工具类。
进一步地,所述业务逻辑模块处理:
将所有的资方流程抽象为一个基类,每个资金通道子类继承这个基类,并在每个子类中实现其对应资方的业务逻辑;
当资金服务请求不同资方时,将由触发器发起流程通知到常驻进程中,并统一并发去请求不同的资方的业务;
当不同资方请求资金服务时,通过工厂模式将会跳转至不同的资金通道子类中,并进而在资金通道子类实现业务的逻辑处理。
进一步地,所述的业务逻辑服务接入不同资方时:
创建一个常驻进程负责不同资方的业务逻辑,当接收不同资方的请求时,通过外部通知服务并使用工厂模式将不同的资方请求跳转至不同的外部接口模块中;
在外部接口模块中,不同资方各自实现对应的业务逻辑,并在处理中针对业务逻辑调用内部放款服务,实现内部模块的交互;
内部模块交互时,根据业务逻辑处理内部逻辑处理,并调用数据仓库模块处理对应的数据库表;
最后处理完业务流程后,需要主动给不同资方发送请求的时候,通过触发器发起任务并跳转至第一步中的常驻进程进行处理。
较佳地,所述资金服务系统针对资方不同业务的特性,分为同步请求和异步处理,保证对业务逻辑处理的时效性和合理性。
进一步地,所述的外部通知服务模块负责接收外部资方的通知,当收到通知后,
如果业务逻辑能够处理,则同步请求,及时处理;
如果业务逻辑并不能即时处理,则使用cmq(Cloud Message Queue:分布式消息队列服务)或者zmq(一种通信服务的消息队列)实现异步处理,实现高效的处理效率。
较佳地,所述资金服务系统还包括协程并发的处理模式,保证系统的高并发能力,所述的协程并发的处理模式包括:
当多个资方接入的同时,在所述协程并发的处理模式中控制共享资源不加锁,只需要判断状态,保证了协程的执行效率。
较佳地,所述资金服务系统结合业务使用多种设计模式,提高效率和代码可读性,所述的多种设计模式包括:
在数据库的处理操作、cmq的设计等基础组件中,使用单例模式来实现其类的一个对象成为系统中的唯一实例;
在常驻进程中收到不同资方的请求,使用工厂模式来实现跳转至对应的资方业务处理逻辑。
较佳地,所述资金服务方系统中,业务逻辑模块增加业务逻辑包括:
使用工厂模式,在常驻进程中添加需要增加的业务逻辑。
进一步地,所述资金服务系统包括应用层、业务层和基建层,
所述的应用层负责不同进程服务之间的传输通信;
所述的业务层负责不同资方的业务逻辑;
所述的基建层负责提供稳定的基建环境。
与现有技术相比,本发明技术方案的优点在于:
1.本发明通过分层设计,提高了系统灵活性和扩展性。将整个系统分层设计,例如业务层、基建层等。其中业务层负责不同资方的业务逻辑,常驻进程lending_machine可以到读取由触发器lending_triger发送的cmq消息,从而可以根据消息的内容请求到不同的资方;基建层主要由mysql、redis数据库操作等组成,提供稳定的基建环境。
2、本发明针对资方不同业务的特性,分为同步请求和异步处理,保证对业务逻辑处理的时效性和合理性。例如在外部通知服务lending_notice_srv中负责接收外部资方的通知,当收到通知后,有些业务逻辑并不能即时处理,这时使用cmq或者zmq实现异步消息处理,实现高效的处理效率;
3、本发明采用协程并发的处理模式,保证系统的高并发能力。当多个资方接入的同时,如果使用传统的多线程来处理,通过锁机制控制队列和等待,一不小心就可能发生死锁。而在资金通道的设计中使用协程并发的处理模式(一个线程),去掉了多线程的锁机制,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,保证了协程极高的执行效率。
4、本发明结合业务使用多种设计模式,提高效率和代码可读性。例如其中在数据库的处理操作中,由于数据库的特殊性,使用单例模式来实现不同表的查询、插入等操作;在常驻进程lending_machine中收到不同资方请求的时候,使用了工厂模式来实现跳转至对应的资方业务处理逻辑中。
5、本发明具有极强的扩展性。现资金通道的系统设计封装了多种业务逻辑流程,因需要添加系统中没有的业务逻辑流程时,因使用了工厂模式,只需要在常驻进程lending_machine中添加需要增加的业务逻辑即可,实现业务的高效性。
附图说明
图1是本发明的资金服务设计架构的示意图;
图2是本发明的不同资方接入流程的示意图;
图3是本发明的资金服务系统的示意图;
图4是本发明的不同资方接入模块的示意图;
其中:实线表示同步;虚线表示异步。
具体实施方式
下面结合附图和具体实施例,对本发明的内容作进一步说明。
本发明资金服务设计架构如图1所述:(实线表示同步、虚线表示异步)。
本发明采用DDD领域设计概念,设计了一种资金通道的系统设计方法,包括一个内部放款服务、借款人服务、外部通知服务、公共工具、业务逻辑等部分构成,具体如下:
1、借款人服务,主要负责借款人信息的处理;包括添加借款人信息、查询借款人信息、修改借款人信息等。
2、内部放款服务,主要负责对内部匹配、放款等模块交互;包括进件内部流程处理、开户内部流程处理、放款内部流程处理等。
3、外部通知服务,主要负责接收不同资方外部通知和转发通知;包括进件结果外部通知、开户结果外部通知、放款结果外部通知等。
外部通知服务具体的处理方法是:设计一个常驻进程负责处理不同资方的业务逻辑,当接收到外部的请求时,通过工厂模式将不同的资方请求跳转至常驻进程lending_machine不同的业务逻辑处理服务中,通过状态机去实现不同的业务流程,例如进件、放款结果通知等。
外部通知服务负责接收外部资方的通知,当收到通知后,如果业务逻辑能够处理,则同步请求,及时处理;如果业务逻辑并不能即时处理,则使用cmq(Cloud Message Queue:分布式消息队列服务)或者zmq(一种通信服务的消息队列)实现异步处理,实现高效的处理效率。
4、公共工具服务,主要由各种数据库表操作、加解密等一些工具处理。包括数据库处理、加解密处理等。
公共工具服务具体的处理方法是:将所有公共的工具封装为多个类,例如数据库表A的查询、插入等操作封装为一个类,加解密处理也封装为一个类,这些工具类供上层的业务逻辑、内部放款服务等模块调用,实现一码多用,提高代码的简洁性和高效性;
这些工具类包括:数据库表的查询、插入等操作封装为一个数据库处理工具类;加解密处理封装为一个加解密处理工具类;字符串、时间处理函数封装为一个基础工具类。
5、业务逻辑服务,主要负责对不同资方的业务逻辑处理。包括业务逻辑A、业务逻辑B等。
业务逻辑服务具体的处理方法为:首先将所有的资方流程抽象为一个基类,每个资金通道子类继承这个基类;其次如果是我们请求不同资方时,将由触发器发起流程通知到常驻进程中,并统一并发去请求不同的资方的业务;最后如果当不同的资方请求过来时,就通过工厂模式将会跳转至不同的资金通道子类中,并进而在资金通道子类实现业务的逻辑处理。
当业务逻辑服务接入不同资方时,如图2所示:
创建一个常驻进程负责不同资方的业务逻辑,当接收不同资方的请求时,通过外部通知服务并使用工厂模式将不同的资方请求跳转至不同的外部接口模块中;
在外部接口模块中,不同资方各自实现对应的业务逻辑,并在处理中针对业务逻辑调用内部放款服务,实现内部模块的交互;
内部模块交互时,根据业务逻辑处理内部逻辑处理,并调用数据仓库模块处理对应的数据库表;
最后处理完业务流程后,需要主动给不同资方发送请求的时候,通过触发器发起任务并跳转至第一步中的常驻进程进行处理。
本发明的资金服务方法针对资方不同业务的特性,分为同步请求和异步处理,保证对业务逻辑处理的时效性和合理性。
本发明的资金服务方法还包括协程并发的处理模式,保证系统的高并发能力,所述的协程并发的处理模式包括:当多个资方接入的同时,在所述协程并发的处理模式中控制共享资源不加锁,只需要判断状态,保证了协程的执行效率。
本发明的资金服务方法结合业务使用多种设计模式,提高效率和代码可读性,所述的多种设计模式包括:在数据库的处理操作、cmq的设计等基础组件中,使用单例模式来实现其类的一个对象成为系统中的唯一实例;在常驻进程中收到不同资方的请求,使用工厂模式来实现跳转至对应的资方业务处理逻辑。
本发明的资金服务方法增加业务逻辑的方法包括:使用工厂模式,在常驻进程中添加需要增加的业务逻辑。
当业务逻辑模块接入不同资方时:假设有两个资方A和B同时接入,对应的接入资方A有申请放款、同步放款结果两个步骤(图4中的1、3步骤),对应的接入资方B有申请放款、放款结果异步回调通知、同步放款结果两个步骤(图4中的1、2、3步骤);其次当经过网关处理后,请求channel_lending_srv资金通道服务,将两个资方的数据落地到数据库中,然后经过lending_trigger触发器脚本读取还未处理的数据,发送cmq消息到lending_machine常驻进程中,处理两个资方不同的业务逻辑,而对于接入资方B的步骤2由外部通知服务lending_notice_srv来进行接收,并跳转至常驻进程的业务逻辑。最后经过业务逻辑处理的结果,对每个资方作出不同的结果处理,即成功还是失败。
本发明的资金服务方法包括应用层、业务层和基建层的设计步骤,所述的应用层负责不同进程服务之间的传输通信;所述的业务层负责不同资方的业务逻辑;所述的基建层负责提供稳定的基建环境。
由此可以看出,本发明是一种高效的资金通道系统设计,总体架构以DDD领域驱动设计模式为基础,结合单例、工厂等多种设计模式,并采用协程、cmq消息队列、Protobuf和zmq等工具来提高通信、传输的高效性。
由于每个资方都有着自己的业务逻辑,无法在一个服务系统中实现不同资方的并发接入,本发明主要是为了实现不同资方的高效并发接入,使得新的服务系统可以包容不同的业务逻辑,这样新接入资方时只需要写少量代码即可完成其业务逻辑,使得资金方接入更高效。
本发明的较佳实施例,还包括一个资金服务系统模块系统如图3所示:
1、借款人服务模块,用于处理借款人信息;包括添加借贷人信息、修改借款人信息、查询借贷人信息;
2、内部放款服务模块,用于完成内部匹配、放款模块交互;包括进件内部流程处理、开户内部流程处理、放款内部流程处理;
3、外部通知服务模块,用于接收不同资方外部通知和转发通知;包括进件结果外部通知、开户结果外部通知、放款结果外部通知;
外部通知服务模块包括一个常驻进程,负责处理不同资方的业务逻辑,当接收到外部的请求时,通过工厂模式将不同的资方请求跳转至常驻进程,进行不同的业务逻辑处理,并根据状态机去实现不同的业务流程。
外部通知服务模块负责接收外部资方的通知,当收到通知后,如果业务逻辑能够处理,则同步请求,及时处理;如果业务逻辑并不能即时处理,则使用cmq(Cloud MessageQueue:分布式消息队列服务)或者zmq(一种通信服务的消息队列)实现异步处理,实现高效的处理效率。
4、公共工具模块,用于处理各种数据库表操作、加解密一些工具;包括数据库处理、加解密处理;
公共工具模块将所有公共的工具封装为多个工具类,所述的工具类在不改变代码的情况下,供上层的业务逻辑服务、内部放款服务调用;所述的工具类包括:数据库表的查询、插入等操作封装为一个数据库处理工具类;加解密处理封装为一个加解密处理工具类;字符串、时间处理函数封装为一个基础工具类。
5、业务逻辑模块,用于处理不同资方的业务逻辑;包括业务逻辑A、业务逻辑B;
业务逻辑模块处理:
将所有的资方流程抽象为一个基类,每个资金通道子类继承这个基类,并在每个子类中实现其对应资方的业务逻辑;
当资金服务请求不同资方时,将由触发器发起流程通知到常驻进程中,并统一并发去请求不同的资方的业务;
当不同资方请求资金服务时,通过工厂模式将会跳转至不同的资金通道子类中,并进而在资金通道子类实现业务的逻辑处理。
如图4所示:
创建一个常驻进程负责不同资方的业务逻辑,当接收不同资方的请求时,通过外部通知服务并使用工厂模式将不同的资方请求跳转至不同的外部接口模块中;
在外部接口模块中,不同资方各自实现对应的业务逻辑,并在处理中针对业务逻辑调用内部放款服务,实现内部模块的交互;
内部模块交互时,根据业务逻辑处理内部逻辑处理,并调用数据仓库模块处理对应的数据库表;
最后处理完业务流程后,需要主动给不同资方发送请求的时候,通过触发器发起任务并跳转至第一步中的常驻进程进行处理。
本发明的资金服务系统针对资方不同业务的特性,分为同步请求和异步处理,保证对业务逻辑处理的时效性和合理性。
本发明的资金服务系统还包括协程并发的处理模式,保证系统的高并发能力,所述的协程并发的处理模式包括:当多个资方接入的同时,在所述协程并发的处理模式中控制共享资源不加锁,只需要判断状态,保证了协程的执行效率。
本发明的资金服务系统结合业务使用多种设计模式,提高效率和代码可读性,所述的多种设计模式包括:在数据库的处理操作、cmq的设计等基础组件中,使用单例模式来实现其类的一个对象成为系统中的唯一实例;在常驻进程中收到不同资方的请求,使用工厂模式来实现跳转至对应的资方业务处理逻辑。
本发明的资金服务系统中,业务逻辑模块增加业务逻辑包括:使用工厂模式,在常驻进程中添加需要增加的业务逻辑。
本发明的资金服务系统包括应用层、业务层和基建层,其中,应用层负责不同进程服务之间的传输通信;业务层负责不同资方的业务逻辑;基建层负责提供稳定的基建环境。
在于多种资金通道接入的新型服务系统设计,同时满足多资方并行接入,合理的运用DDD领域驱动模型、单例、工厂等设计模式和协程等方法并针对当前小赢的业务逻辑进行设计,多个资金方并行接入更为高效。
结合图1到4所示,我们可以得出如下结论:
本发明采用分层设计,提高了系统灵活性和扩展性。将整个系统分层设计,例如应用层、业务层、基建层等。其中应用层主要是不同进程服务之间的通信;业务层负责不同资方的业务逻辑处理,由图3可知,常驻进程lending_machine负责读取由外部触发器lending_triger发送的cmq消息,从而可以根据消息的内容请求到不同的资方;基建层主要由mysql、redis数据库操作等组成,提供稳定的基建环境。
本发明针对资方不同业务的特性,分为同步请求和异步处理,保证对业务逻辑处理的时效性和合理性,例如在外部通知服务lending_notice_srv中负责接收外部资方的通知,当收到通知后,有些业务逻辑并不能即时处理,这时使用cmq或者zmq实现异步消息处理,实现高效的处理效率;
本发明还采用协程并发的处理模式,保证系统的高并发能力;当多个资方接入的同时,如果使用传统的多线程来处理,通过锁机制控制队列和等待,一不小心就可能发生死锁。而在资金通道的设计中使用协程并发的处理模式(一个线程),去掉了多线程的锁机制,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,保证了协程极高的执行效率。
本发明结合业务使用多种设计模式,提高效率和代码可读性。例如其中在数据库的处理操作、cmq的设计中,由于这类实体特殊性,在一个系统中只要生成一个实体即可,所以使用单例模式来进行实现;在常驻进程lending_machine中收到不同资方请求的时候,使用了工厂模式来实现跳转至对应的资方业务处理逻辑中。
本发明具有极强的扩展性;现资金通道的系统设计封装了多种业务逻辑流程,因需要添加系统中没有的业务逻辑流程时,因使用了工厂模式,只需要在常驻进程lending_machine中添加需要增加的业务逻辑即可,实现业务的高效性。
Claims (17)
1.一种资金服务方法,所述资金服务包括借款人服务、内部放款服务、外部通知服务、公共工具服务和业务逻辑服务,其特征在于:
所述借款人服务,主要负责借款人信息的处理;包括添加借贷人信息、修改借款人信息、查询借贷人信息;
所述内部放款服务,主要负责对内部匹配、放款模块交互;包括进件内部流程处理、开户内部流程处理、放款内部流程处理;
所述外部通知服务,主要负责接收不同资方外部通知和转发通知;包括进件结果外部通知、开户结果外部通知、放款结果外部通知;其设计一个常驻进程负责处理不同资方的业务逻辑,当接收到外部的请求时,通过工厂模式将不同的资方请求跳转至常驻进程不同的业务逻辑处理服务中,并根据状态机去实现不同的业务流程;
所述公共工具服务,主要由各种数据库表操作、加解密一些工具处理;包括数据库处理、加解密处理;
所述业务逻辑服务,主要负责对不同资方的业务逻辑处理;包括业务逻辑A、业务逻辑B;
业务逻辑服务具体的处理方法为:首先将所有的资方流程抽象为一个基类,每个资金通道子类继承这个基类;其次如果是请求不同资方时,将由触发器发起流程通知到常驻进程中,并统一并发去请求不同的资方的业务;最后如果当不同的资方请求过来时,就通过工厂模式将会跳转至不同的资金通道子类中,并进而在资金通道子类实现业务的逻辑处理;
当业务逻辑服务接入不同资方时,
创建一个常驻进程负责不同资方的业务逻辑,当接收不同资方的请求时,通过外部通知服务并使用工厂模式将不同的资方请求跳转至不同的外部接口模块中;
在外部接口模块中,不同资方各自实现对应的业务逻辑,并在处理中针对业务逻辑调用内部放款服务,实现内部模块的交互;
内部模块交互时,根据业务逻辑处理内部逻辑处理,并调用数据仓库模块处理对应的数据库表;
最后处理完业务流程后,需要主动给不同资方发送请求的时候,通过触发器发起任务并跳转至第一步中的常驻进程进行处理。
2.根据权利要求1所述的资金服务方法,其特征在于:
所述的公共工具服务,将所有公共的工具封装为多个工具类,所述的工具类在不改变代码的情况下,供上层的业务逻辑服务、内部放款服务调用。
3.根据权利要求2所述的资金服务方法,其特征在于:
所述的工具类包括:
数据库表的查询、插入操作封装为一个数据库处理工具类;
加解密处理封装为一个加解密处理工具类;
字符串、时间处理函数封装为一个基础工具类。
4.根据权利要求1所述的资金服务方法,其特征在于:
针对资方不同业务的特性,分为同步请求和异步处理,保证对业务逻辑处理的时效性和合理性。
5.根据权利要求4所述的资金服务方法,其特征在于:
所述的外部通知服务模块中负责接收外部资方的通知,当收到通知后,
如果业务逻辑能够处理,则同步请求,及时处理;
如果业务逻辑并不能即时处理,则使用分布式消息队列服务cmq或者通信服务的消息队列zmq实现异步处理,实现高效的处理效率。
6.根据权利要求1所述的资金服务方法,其特征在于:
还包括协程并发的处理模式,保证系统的高并发能力,所述的协程并发的处理模式包括:
当多个资方接入的同时,在所述协程并发的处理模式中控制共享资源不加锁,只需要判断状态,保证了协程的执行效率。
7.根据权利要求1所述的资金服务方法,其特征在于:
结合业务使用多种设计模式,提高效率和代码可读性,所述的多种设计模式包括:
在数据库的处理操作、cmq的设计这两个基础组件中,使用单例模式来实现其类的一个对象成为系统中的唯一实例;
在常驻进程中收到不同资方的请求,使用工厂模式来实现跳转至对应的资方业务处理逻辑。
8.根据权利要求1所述的资金服务方法,其特征在于:
业务逻辑模块增加业务逻辑的方法包括:
使用工厂模式,在常驻进程中添加需要增加的业务逻辑。
9.根据权利要求1-8中任一项所述的资金服务方法,其特征在于:
所述资金服务包括应用层、业务层和基建层的设计步骤,
所述的应用层负责不同进程服务之间的传输通信;
所述的业务层负责不同资方的业务逻辑;
所述的基建层负责提供稳定的基建环境。
10.一种资金服务系统,包括:
借款人服务模块,用于处理借款人信息;包括添加借贷人信息、修改借款人信息、查询借贷人信息;
内部放款服务模块,用于完成内部匹配、放款模块交互;包括进件内部流程处理、开户内部流程处理、放款内部流程处理;
外部通知服务模块,用于接收不同资方外部通知和转发通知;包括进件结果外部通知、开户结果外部通知、放款结果外部通知;所述外部通知服务模块包括一个常驻进程,负责处理不同资方的业务逻辑,当接收到外部的请求时,通过工厂模式将不同的资方请求跳转至常驻进程,进行不同的业务逻辑处理,并根据状态机去实现不同的业务流程;
公共工具模块,用于处理各种数据库表操作、加解密一些工具;包括数据库处理、加解密处理;
业务逻辑模块,用于处理不同资方的业务逻辑;包括业务逻辑A、业务逻辑B;
业务逻辑服务具体的处理方法为:首先将所有的资方流程抽象为一个基类,每个资金通道子类继承这个基类;其次如果是请求不同资方时,将由触发器发起流程通知到常驻进程中,并统一并发去请求不同的资方的业务;最后如果当不同的资方请求过来时,就通过工厂模式将会跳转至不同的资金通道子类中,并进而在资金通道子类实现业务的逻辑处理;
当业务逻辑服务接入不同资方时,
创建一个常驻进程负责不同资方的业务逻辑,当接收不同资方的请求时,通过外部通知服务并使用工厂模式将不同的资方请求跳转至不同的外部接口模块中;
在外部接口模块中,不同资方各自实现对应的业务逻辑,并在处理中针对业务逻辑调用内部放款服务,实现内部模块的交互;
内部模块交互时,根据业务逻辑处理内部逻辑处理,并调用数据仓库模块处理对应的数据库表;
最后处理完业务流程后,需要主动给不同资方发送请求的时候,通过触发器发起任务并跳转至第一步中的常驻进程进行处理。
11.根据权利要求10所述的资金服务系统,其特征在于:
所述公共工具模块将所有公共的工具封装为多个工具类,所述的工具类在不改变代码的情况下,供上层的业务逻辑服务、内部放款服务调用;所述的工具类包括:数据库表的查询、插入操作封装为一个数据库处理工具类;加解密处理封装为一个加解密处理工具类;字符串、时间处理函数封装为一个基础工具类。
12.根据权利要求10所述的资金服务系统,其特征在于:
针对资方不同业务的特性,分为同步请求和异步处理,保证对业务逻辑处理的时效性和合理性。
13.根据权利要求12所述的资金服务系统,其特征在于:
所述的外部通知服务模块负责接收外部资方的通知,当收到通知后,
如果业务逻辑能够处理,则同步请求,及时处理;
如果业务逻辑并不能即时处理,则使用分布式消息队列服务cmq或者通信服务的消息队列zmq实现异步处理,实现高效的处理效率。
14.根据权利要求10所述的资金服务系统,其特征在于:
还包括协程并发的处理模式,保证系统的高并发能力,所述的协程并发的处理模式包括:
当多个资方接入的同时,在所述协程并发的处理模式中控制共享资源不加锁,只需要判断状态,保证了协程的执行效率。
15.根据权利要求10所述的资金服务系统,其特征在于:
结合业务使用多种设计模式,提高效率和代码可读性,所述的多种设计模式包括:
在数据库的处理操作、cmq的设计这两个基础组件中,使用单例模式来实现其类的一个对象成为系统中的唯一实例;
在常驻进程中收到不同资方的请求,使用工厂模式来实现跳转至对应的资方业务处理逻辑。
16.根据权利要求10所述的资金服务系统,其特征在于:
业务逻辑模块增加业务逻辑包括:
使用工厂模式,在常驻进程中添加需要增加的业务逻辑。
17.根据权利要求10-16中任一项所述的资金服务系统,其特征在于:
所述资金服务系统包括应用层、业务层和基建层,
所述的应用层负责不同进程服务之间的传输通信;
所述的业务层负责不同资方的业务逻辑;
所述的基建层负责提供稳定的基建环境。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811558214.5A CN109685646B (zh) | 2018-12-19 | 2018-12-19 | 一种资金服务方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811558214.5A CN109685646B (zh) | 2018-12-19 | 2018-12-19 | 一种资金服务方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109685646A CN109685646A (zh) | 2019-04-26 |
CN109685646B true CN109685646B (zh) | 2023-03-24 |
Family
ID=66186967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811558214.5A Active CN109685646B (zh) | 2018-12-19 | 2018-12-19 | 一种资金服务方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109685646B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110335142B (zh) * | 2019-06-28 | 2022-04-08 | 苏宁消费金融有限公司 | 一种基于联合贷款的智能流转业务的实现系统 |
CN111091213A (zh) * | 2019-11-28 | 2020-05-01 | 泰康保险集团股份有限公司 | 产品数据处理方法、装置、电子设备及计算机可读介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108389122A (zh) * | 2018-02-12 | 2018-08-10 | 中科柏诚科技(北京)股份有限公司 | 一种互联网贷款系统及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050086176A1 (en) * | 2003-07-31 | 2005-04-21 | John Dahlgren | Method and apparatus for loan management using an electronic portal |
CN106600400A (zh) * | 2016-12-05 | 2017-04-26 | 深圳前海微众银行股份有限公司 | 贷款业务处理方法、装置及系统 |
CN106815016A (zh) * | 2016-12-23 | 2017-06-09 | 四川大学 | 一种基于领域驱动设计的mvvm设计模型 |
CN108346029A (zh) * | 2017-01-23 | 2018-07-31 | 纬创软件(北京)有限公司 | 一种支撑信贷工厂模式的定制化信贷系统 |
-
2018
- 2018-12-19 CN CN201811558214.5A patent/CN109685646B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108389122A (zh) * | 2018-02-12 | 2018-08-10 | 中科柏诚科技(北京)股份有限公司 | 一种互联网贷款系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109685646A (zh) | 2019-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102209276B1 (ko) | 메시징 프로토콜 통신 관리 | |
CN107729139B (zh) | 一种并发获取资源的方法和装置 | |
US7877091B2 (en) | Method and system for executing a container managed application on a processing device | |
US20150312377A1 (en) | System and method for updating service information for across-domain messaging in a transactional middleware machine environment | |
WO2021088641A1 (zh) | 数据发送方法、处理方法、接收方法及其设备、存储介质 | |
CA2843284C (en) | Computer system, computer-implemented method and computer program product for sequencing incoming messages for processing at an application | |
CN109685646B (zh) | 一种资金服务方法及其系统 | |
EP2318914B1 (en) | Method and apparatus for audit logging and role based security using one-way proxy architecture | |
CN104796389A (zh) | 一种基础数据共享系统及其方法 | |
US20120290639A1 (en) | Queueing messages related by affinity set | |
Alliance | Service-based architecture in 5G | |
KR20130059593A (ko) | 클라우드 서비스 컴포넌트간 매쉬업을 통한 통합 클라우드 서비스 시스템 | |
CN103152433A (zh) | 一种分布式服务端框架及其使用、交互、请求处理方法 | |
WO2021238259A1 (zh) | 一种数据传输方法、装置、设备及计算机可读存储介质 | |
CN107896242B (zh) | 一种服务共享方法及装置 | |
CN115080533A (zh) | 基于大数据用于数据交换与共享的中台系统 | |
CN112100260A (zh) | 一种基于接口引擎的多应用数据融合的方法及系统 | |
US20090313644A1 (en) | Method and system for providing access to adapters | |
CN107480302A (zh) | 一种基于企业级应用场景的松耦合数据集成同步实现方法 | |
CN112416414A (zh) | 一种基于状态机的微服务架构容器化轻量级工作流系统 | |
US10536404B2 (en) | Use of email to update records stored in a database server | |
CN115349117B (zh) | 用于多租户无服务器环境的多级高速缓存网格系统 | |
CN104869172B (zh) | 异构系统下多应用的数据交互方法和数据交互系统 | |
US11431823B1 (en) | Systems and methods for context-aware event ordering protocol for distributed service systems | |
Cipolla et al. | Web service based asynchronous service execution environment |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |