CN108170411A - 一种数据中间层系统及其实现方法 - Google Patents

一种数据中间层系统及其实现方法 Download PDF

Info

Publication number
CN108170411A
CN108170411A CN201711175460.8A CN201711175460A CN108170411A CN 108170411 A CN108170411 A CN 108170411A CN 201711175460 A CN201711175460 A CN 201711175460A CN 108170411 A CN108170411 A CN 108170411A
Authority
CN
China
Prior art keywords
data
towards
interface function
entity
stream system
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.)
Granted
Application number
CN201711175460.8A
Other languages
English (en)
Other versions
CN108170411B (zh
Inventor
夏云
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lianjia Beijing Technology Co Ltd
Original Assignee
Lianjia Beijing Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Lianjia Beijing Technology Co Ltd filed Critical Lianjia Beijing Technology Co Ltd
Priority to CN201711175460.8A priority Critical patent/CN108170411B/zh
Publication of CN108170411A publication Critical patent/CN108170411A/zh
Application granted granted Critical
Publication of CN108170411B publication Critical patent/CN108170411B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种数据中间层系统及其实现方法,所述实现方法包括:配置面向实体层的统一接口,用以接受所述实体层中各目标实体的数据接入请求;基于各所述目标实体对应的实体属性,分别配置对应的面向上游系统的接口函数,并定义各所述面向上游系统的接口函数间的依赖关系,用以获取所述上游系统中对应的数据信息,并将所述数据信息写入降级redis;构建数据处理内部业务逻辑,用以基于所述数据接入请求,调用对应的所述面向上游系统的接口函数;构建自动降级业务逻辑,用以当所述数据处理内部业务逻辑执行出现异常时,自动调用降级redis,获取降级数据实施降级处理。本发明能够有效实现自动降级处理功能,从而有效降低开发难度,提高开发效率。

Description

一种数据中间层系统及其实现方法
技术领域
本发明涉及数据处理技术领域,更具体地,涉及一种数据中间层系统及其实现方法。
背景技术
传统的PHP MVC框架在大型网站开发中有广泛的应用。一般来说,MVC中的M(即model模型)负责与上游系统进行数据交换,上游系统如Mysql数据库、Redis数据库、HTTP接口和RPC接口等。
对于存在多种实体的业务类型,每个实体不可避免的都需要一个model来进行描述。这里所描述的实体,表示可以聚类抽象为某个类别的概念,比如订单系统中的消费者、商品、商家等,或者是房产系统里的城市、商圈、小区等。参考图1,为根据现有技术的一种多实体MVC模型数据交换示意图。假设描述各个实体的数据均来自多个上游系统,则如图1所示,每个model都需要直接对多个上游系统进行数据请求(如下图)。
上述现有技术的处理方式,会直接导致以下技术问题的出现:
1)若某个上游系统接口发生更改,则需要对涉及该系统的多个model分别进行修改;
2)若需要对某个上游系统进行降级处理,则需要对所有涉及该系统的model均进行处理,这在大型系统开发中实现困难。
发明内容
为了克服上述问题或者至少部分地解决上述问题,本发明提供一种数据中间层系统及其实现方法,以达到有效提高实体model的稳定性,并实现自动降级处理功能,从而有效降低开发难度,提高开发效率的目的。
第一方面,本发明提供一种数据中间层的实现方法,包括:S1,配置面向实体层的统一接口,用以接受所述实体层中各目标实体的数据接入请求;S2,基于各所述目标实体对应的实体属性,分别配置各所述实体属性对应的面向上游系统的接口函数,并定义各所述面向上游系统的接口函数间的依赖关系,用以获取所述上游系统中对应的数据信息,并将所述数据信息写入降级redis;S3,构建数据处理内部业务逻辑,用以基于所述数据接入请求,调用对应的所述面向上游系统的接口函数;S4,构建自动降级业务逻辑,用以当所述数据处理内部业务逻辑执行出现异常时,自动调用降级redis,获取降级数据实施降级处理。
进一步的,所述实现方法还包括:构建并发请求业务逻辑,用以根据所述目标实体的多个所述数据接入请求,采用异步协程方式或者curl_multi_*类函数,向所述上游系统并发请求对应的数据信息。
进一步的,所述实现方法还包括:基于所述实体属性对应的上游系统的性能指标,配置所述实体属性对应的面向上游系统的接口函数的缓存策略。
进一步的,所述实现方法还包括:构建数据处理异常业务逻辑,用以当所述面向上游系统的接口函数调用失败时,发出处理异常消息。
进一步的,所述实现方法还包括:分别为各所述目标实体分配一个唯一对应的编码标识;相应的,步骤S2中所述获取所述上游系统中对应的数据信息的步骤进一步包括:基于所述编码标识和所述数据接入请求对应的实体属性,向所述上游系统请求对应的数据信息。
其中,所述S2的步骤中还包括:配置所述降级redis,并设置所述降级redis的数据失效时间大于设定阈值。
其中,所述S3的步骤进一步包括:S31,构建各所述面向上游系统的接口函数的依赖关系检测业务逻辑,以及所述依赖关系是否成环形的判断业务逻辑;S32,构建在所述依赖关系为非环形时,基于所述依赖关系和所述数据接入请求,优先调用被依赖的面向上游系统的接口函数的业务逻辑。
第二方面,本发明提供一种数据中间层系统,包括:面向实体层的统一接口模块,用于接受实体层中各目标实体的数据接入请求;面向上游系统的接口函数模块,用于获取上游系统中对应的数据信息,并将所述数据信息写入降级redis;所述面向上游系统的接口函数模块通过基于各所述目标实体对应的实体属性进行配置获取,且定义了各所述面向上游系统的接口函数间的依赖关系;数据处理内部业务逻辑模块,用于基于所述数据接入请求,调用对应的所述面向上游系统的接口函数;自动降级业务逻辑模块,用于当数据处理内部业务逻辑执行出现异常时,自动调用降级redis,获取降级数据实施降级处理。
进一步的,所述控制系统还包括:并发请求业务逻辑模块,用于根据所述目标实体的多个所述数据接入请求,采用异步协程方式或者curl_multi_*类函数,向所述上游系统并发请求对应的数据信息。
第三方面,本发明提供一种基于数据中间层的数据处理方法,包括:S01,利用面向实体层的统一接口,获取实体层中各目标实体的数据接入请求;其中,所述面向实体层的统一接口为事先在所述数据中间层中配置的面向所述实体层的接口函数;S02,基于所述数据接入请求和各面向上游系统的接口函数间的依赖关系,执行对应的数据处理内部业务逻辑,调用对应的面向上游系统的接口函数;其中,所述面向上游系统的接口函数为事先基于各所述目标实体对应的实体属性,分别对应各所述实体属性配置的面向上游系统的接口函数;S03,通过所述面向上游系统的接口函数,向上游系统请求对应的数据信息,并将所述数据信息写入降级redis;S04,当判断数据处理内部业务逻辑执行出现异常时,自动调用降级redis,获取降级数据实施降级处理。
本发明提供的一种数据中间层系统及其实现方法,通过分别设置数据中间层面向实体层和面向上游系统层的接口函数,并构建自动降级的业务逻辑,实现由数据中间层直接负责和上游系统进行数据交换,实体层读取数据中间层获取的数据信息,并在数据处理存在异常时自动降级处理,能够有效提高实体model的稳定性,并实现自动降级处理功能,从而有效降低开发难度,提高开发效率。
附图说明
图1为根据现有技术的一种多实体MVC模型数据交换示意图;
图2为本发明实施例一种数据中间层的实现方法的流程图;
图3为本发明实施例一种基于数据中间层的多实体数据交换示意图;
图4为本发明实施例一种构建数据处理内部业务逻辑的处理过程流程图;
图5为本发明实施例一种城市实体的实体属性构成示意图;
图6为本发明实施例一种城市实体的实体属性程序实现示意图;
图7为本发明实施例一种基于上层逻辑控制业务降级的处理过程流程图;
图8为本发明实施例一种数据中间层系统的结构示意图;
图9为本发明实施例一种基于数据中间层的数据处理方法的流程图;
图10为本发明实施例另一种基于数据中间层的数据处理方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
作为本发明实施例的一个方面,本实施例提供一种数据中间层的实现方法,参考图2,为本发明实施例一种数据中间层的实现方法的流程图,包括:
S1,配置面向实体层的统一接口,用以接受所述实体层中各目标实体的数据接入请求。
可以理解为,数据中间层的具体含义为,把传统实体层与上游系统进行数据交换的部分下移到一个特定的层级,由该层级负责进行相应的数据处理。一般来说,传统的数据交换通常为由实体层向上游系统发送数据信息获取请求,上游系统根据该请求将相应的数据信息下发到实体层。
参考图3,为本发明实施例一种基于数据中间层的多实体数据交换示意图。图中各实体向数据中间层发送数据接入请求,再由数据中间层分别向对应的上游系统请求数据信息。可见,数据中间层中需要具备相应的数据接入请求获取功能。因此,步骤S1具体实现数据中间层面向实体层的数据接口,即定义相应的统一接口函数,并配置各接口函数的实现逻辑。对于多目标实体系统,通过面向实体层的统一接口获取各目标实体的数据接入请求。
S2,基于各所述目标实体对应的实体属性,分别配置各所述实体属性对应的面向上游系统的接口函数,并定义各所述面向上游系统的接口函数间的依赖关系,用以获取所述上游系统中对应的数据信息,并将所述数据信息写入降级redis。
可以理解为,根据上述步骤,数据中间层在获取目标实体的数据接入请求时,需要根据该数据接入请求向对应的上游系统请求对应的数据信息,因此需要配置数据中间层面向上游系统的接口函数。通常实体层请求获取的都是目标实体的某方面属性信息。
因此,步骤S2具体根据各目标实体对应的实体属性,配置各实体属性对应的面向上游系统的接口函数,该接口函数即为面向上游系统的接口函数。同时定义各面向上游系统的接口函数间的相互依赖关系。即注册获取目标实体某方面属性信息的接口函数和各接口函数间依赖系。在数据交换过程中,面向上游系统的接口函数从上游系统获取对应的数据信息,并将该数据信息写入降级redis。
例如,指定目标实体的基本信息entity_basic_info由getEntityBasicInfo函数获取,该函数没有依赖关系;指定实体的统计信息entity_stat_info由getEntityStatInfo函数获取,该函数依赖于函数getEntityBasicInfo。一个实体通常都有多方面信息,在此需要一一注册,并指明依赖关系。
在一个实施例中,所述S2的步骤中还包括:配置所述降级redis,并设置所述降级redis的数据失效时间大于设定阈值。
可以理解为,为了避免在上游系统降级时对每个实体分别进行降级处理,并实现自动降级,将降级处理处理移植到数据中间层。具体在数据中间层中配置降级redis。为了应对网络抖动、服务异常等情况下的服务降级,根据实际需要,将降级redis的数据失效时间取值设置成大于某给定设定阈值。
S3,构建数据处理内部业务逻辑,用以基于所述数据接入请求,调用对应的所述面向上游系统的接口函数。
可以理解为,在根据上述步骤分别配置了数据中间层的面向实体层和面向上游系统的接口之后,需要建立数据中间层具体的数据处理内部业务逻辑。该数据处理内部业务逻辑能够实现根据实体层的数据接入请求,调用对应的面向上游系统的接口函数,实现对相应上游系统的访问和数据信息请求。
其中可选的,所述S3的进一步处理步骤参考图4,为本发明实施例一种构建数据处理内部业务逻辑的处理过程流程图,包括:
S31,构建各所述面向上游系统的接口函数的依赖关系检测业务逻辑,以及所述依赖关系是否成环形的判断业务逻辑。
可以理解为,针对各目标实体注册了很多接口函数,这些接口函数之间也或多或少有所依赖。在发出数据请求之前,需要检测各接口函数间依赖关系,并判断各依赖关系是否成环。因此,为了实现这种处理功能,本步骤构建数据中间层对应的依赖关系检测业务逻辑,以及通过梳理各依赖关系,判断各依赖关系间是否构成环形通路的判断业务逻辑。
S32,构建在所述依赖关系为非环形时,基于所述依赖关系和所述数据接入请求,优先调用被依赖的面向上游系统的接口函数的业务逻辑。
可以理解为,在对上述各依赖关系进行梳理之后,若各依赖关系不构成环形通路,则需要按各依赖关系首先调用被依赖的接口函数,以方便依赖的接口函数引用该被依赖的接口函数。因此在上述步骤构建依赖关系检测和环形判断业务逻辑之后,本步骤按设定规则构建接口函数调用业务逻辑。具体的业务逻辑实现:在依赖关系为非环形时,基于依赖关系和数据接入请求,优先调用被依赖的面向上游系统的接口函数。
S4,构建自动降级业务逻辑,用以当所述数据处理内部业务逻辑执行出现异常时,自动调用降级redis,获取降级数据实施降级处理。
可以理解为,为了实现数据中间层的自动降级功能,本步骤构建数据中间层的自动降级业务逻辑。在面向上游系统的接口函数正常请求到数据时,数据中间层将这部分数据写入降级redis中,失效时间可以设置久一些。当面向上游系统的接口函数请求异常时,数据中间层请求降级redis获取降级数据,同时写入缓存,在降级的同时防止上游服务长时间异常对redis负载过大。
本发明实施例提供的一种数据中间层实现方法,通过分别设置数据中间层面向实体层和面向上游系统层的接口函数,并构建自动降级的业务逻辑,实现由数据中间层直接负责和上游系统进行数据交换,实体层读取数据中间层获取的数据信息,并在数据处理存在异常时自动降级的处理功能,能够有效提高实体model的稳定性,并实现自动降级处理功能,从而有效降低开发难度,提高开发效率。
进一步的,所述实现方法还包括:构建并发请求业务逻辑,用以根据所述目标实体的多个所述数据接入请求,采用异步协程方式或者curl_multi_*类函数,向所述上游系统并发请求对应的数据信息。
可以理解为,目标实体的所属信息可能非常多。假设目标实体为城市,参考图5,为本发明实施例一种城市实体的实体属性构成示意图,城市下的行政区列表、商圈列表、地铁线列表、地铁站列表、城市的优质小区以及城市的房产市场统计信息等均可看作该实体的属性信息。实体层在调用数据中间层时,需要指明所需的信息。
例如,参考图6,为本发明实施例一种城市实体的实体属性程序实现示意图。为获取城市的地铁线和地铁站,在调用数据中间层(命名为OmniBox::getCity)时参数为城市编号以及一个数组。数组中列出信息所代表的常量array(OmniBox::city_subway,OmniBox::city_subway_stations。这样的调用方式有两个优势:其一可定制化,不同的model用不同的参数可以获取不同的信息,其二入口统一,只要是依据城市编码获取信息,都可以使用统一入口OmniBox::getCity。
当实体层需要请求某个目标实体的N类属性信息时,面向实体层的统一接口获取实体层的对应数据接入请求。该数据接入请求到了数据中间层之后,为了提高数据中间层的吞吐能力,提高数据请求效率,数据中间层采用并发请求方式向对应上游系统请求数据。针对PHP语言,要实现数据并发请求,一般有两个途径,其一利用curl_multi_*类函数,其二采用异步协程(要求PHP版本高于5.5)。二者相比,前者主要是针对HTTP请求的多并发,如果是mysql或者redis的上游系统,还需要进行一层HTTP API的封装。
其中异步协程与操作系统的进程调度类似,但相比操作系统由OS统一调度不同,它是一种程序自我控制自我调度的方式。用异步协程实现的并发结构由一个调度器加上若干任务组成(即对接上游系统接口的函数),调度器先后将任务激活,然后轮询任务是否完成。例如,激活任务A时,若A执行完成,则返回数据,移出任务队列;若A未完成(比如等待IO),则任务挂起,接着轮询B。以此类推,直到所有任务完成(或者未完成超时、返回错误、执行降级策略)。
curl_multi_*类函数的数据处理原理为,IO多路复用,同时创建和监听多个socket请求,一旦某个socket请求完成,通知对应的回调函数进行处理。
因此本实施例构建数据中间层的并发请求业务逻辑,当数据接入请求要求获取目标实体的多个属性信息时,根据所述目标实体的多个所述数据接入请求,采用异步协程方式或者curl_multi_*类函数,向所述上游系统并发请求对应的数据信息。
本发明实施例提供的一种数据中间层实现方法,能够有效缩短服务端的响应时间,增大服务端的吞吐量。
进一步的,所述实现方法还包括:基于所述实体属性对应的上游系统的性能指标,配置所述实体属性对应的面向上游系统的接口函数的缓存策略。
可以理解为,传统MVC处理系统中,每个上游系统的性能不同,数据的及时性要求不同,因此缓存时间会有所差别,需要在model里分别进行定义。由于每个特定的目标实体的每个信息都交由一个特定的接口函数来处理,不同的信息上游系统性能不同,这个信息的时效性也有差别,可以在接口函数内进行缓存策略定义,缓存时间可以区别设置。具体本实施例基于各实体属性对应的上游系统的性能指标,配置各实体属性对应的面向上游系统的接口函数的缓存策略。
本发明实施例提供的一种数据中间层实现方法,通过配置数据请求接口函数的缓存策略,能够使数据中间层在获取实体层的请求数据时,适应上游系统处理性能进行相应缓存处理,提高目标实体的稳定性。
在一个实施例中,所述实现方法还包括:构建数据处理异常业务逻辑,用以当所述面向上游系统的接口函数调用失败时,发出处理异常消息。
可以理解为,在根据上述面向上游系统的接口函数中,不仅定义数据信息获取实现逻辑,而且包括处理调用失败的情形。本实施例中定义特定的异常entity_exception,用于在调用上游系统失败时向上抛出异常消息。
进一步的,所述实现方法还包括:分别为各所述目标实体分配一个唯一对应的编码标识;相应的,步骤S2中所述获取所述上游系统中对应的数据信息的步骤进一步包括:基于所述编码标识和所述数据接入请求对应的实体属性,向所述上游系统请求对应的数据信息。
可以理解为,本发明实施例中的数据中间层是基于目标实体的,每一个目标实体的所有相关数据处理均放在该实体的数据中间层中,且有专用的降级redis进行降级数据的备份。在进行这个归类的过程中,为了区分单一实体,在数据中间层中,分别为各目标实体分配一个唯一对应的编码标识。
具体进行数据请求时,根据什么编码标识id来获取信息,那实体就是什么。例如,根据城市编码获取城市的地铁线信息,那么实体为城市;根据地铁线编号获取地铁站信息,那么实体为地铁线;根据地铁站获取所属地铁线信息,那么实体为地铁站。实体之间的关联所属关系可能是一对多,甚至多对多,但是依据什么id来获取关系信息,实体就是什么。
请求目标实体信息的接口函数直接与上游系统进行信息交互,上游系统可以是mysql、solr、redis和rpc等。接口函数一般都是直接通过实体id向上游系统请求特定信息,缓存时使用无锁的Yac cache或cache key。一般调用时采用面向上游系统的接口函数+实体id的形式。
另外,如果某个业务数据希望通过上层逻辑控制进行业务降级,可以不进行降级处理而将空数据返回给上层。参考图7,为本发明实施例一种基于上层逻辑控制业务降级的处理过程流程图。
一般流程:1→2(表示命中缓存直接返回);
缓存失效请求正常:1→3→4→5→2(请求成功写备份redis,写缓存);
缓存失效请求失败:1→3→4→5→2(请求降级数据,并写缓存)。
作为本发明实施例的另一个方面,本实施例提供一种数据中间层系统,参考图8,为本发明实施例一种数据中间层系统的结构示意图,包括:面向实体层的统一接口模块1、面向上游系统的接口函数模块2、数据处理内部业务逻辑模块3和自动降级业务逻辑模块4。其中,
面向实体层的统一接口模块1用于接受实体层中各目标实体的数据接入请求。面向上游系统的接口函数模块2用于获取上游系统中对应的数据信息,并将所述数据信息写入降级redis;所述面向上游系统的接口函数模块通过基于各所述目标实体对应的实体属性进行配置获取,且定义了各所述面向上游系统的接口函数间的依赖关系。数据处理内部业务逻辑模块3用于基于所述数据接入请求,调用对应的所述面向上游系统的接口函数。自动降级业务逻辑模块4用于当数据处理内部业务逻辑执行出现异常时,自动调用降级redis,获取降级数据实施降级处理。
可以理解为,对于本实施例中的数据中间层系统,为了分别与实体层和上游系统进行数据交互,至少包括面向实体层的统一接口模块1和面向上游系统的接口函数模块2。其中面向实体层的统一接口模块1用于接受实体层中各目标实体的数据接入请求。面向上游系统的接口函数模块2用于获取上游系统中对应的数据信息,并将所述数据信息写入降级redis;所述面向上游系统的接口函数模块通过基于各所述目标实体对应的实体属性进行配置获取,且定义了各所述面向上游系统的接口函数间的依赖关系。
一般来说,传统的数据交换通常为由实体层向上游系统发送数据信息获取请求,上游系统根据该请求将相应的数据信息下发到实体层。数据中间层系统则通过各实体向数据中间层发送数据接入请求,再由数据中间层分别向对应的上游系统请求数据信息。因此数据中间层中需要具备相应的数据接入请求获取功能。具有由面向实体层的统一接口模块1实现。对于多目标实体系统,通过面向实体层的统一接口获取各目标实体的数据接入请求。
数据中间层在获取目标实体的数据接入请求时,需要根据该数据接入请求向对应的上游系统请求对应的数据信息。通常实体层请求获取的都是目标实体的某方面属性信息。在数据交换过程中,面向上游系统的接口函数模块2从上游系统获取对应的数据信息,并将该数据信息写入降级redis。
另外,在通过面向实体层的统一接口模块1获取数据接入请求之后,还要确定调用哪些面向上游系统的接口函数,且需考虑在向上游系统请求数据失败时,上游系统降级之后的处理问题,因此本实施例数据中间层还包括数据处理内部业务逻辑模块3和自动降级业务逻辑模块4。
数据处理内部业务逻辑模块3中的数据处理内部业务逻辑能够实现根据实体层的数据接入请求,调用对应的面向上游系统的接口函数,实现对相应上游系统的访问和数据信息请求。
在面向上游系统的接口函数正常请求到数据时,自动降级业务逻辑模块4将这部分数据写入降级redis中,失效时间可以设置久一些。当面向上游系统的接口函数请求异常时,自动降级业务逻辑模块4请求降级redis获取降级数据,同时写入缓存,在降级的同时防止上游服务长时间异常对redis负载过大。
本发明实施例提供的一种数据中间层系统,通过分别设置数据中间层面向实体层和面向上游系统层的接口函数模块,以及自动降级的业务逻辑模块,实现由数据中间层直接负责和上游系统进行数据交换,实体层读取数据中间层获取的数据信息,并在数据处理存在异常时自动降级的处理功能,能够有效提高实体model的稳定性,并实现自动降级处理功能,从而有效降低开发难度,提高开发效率。
进一步的,参考上述图8,所述控制系统还包括:并发请求业务逻辑模块5,用于根据所述目标实体的多个所述数据接入请求,采用异步协程方式或者curl_multi_*类函数,向所述上游系统并发请求对应的数据信息。
可以理解为,目标实体的所属信息可能非常多。假设目标实体为城市,城市下的行政区列表、商圈列表、地铁线列表、地铁站列表、城市的优质小区以及城市的房产市场统计信息等均可看作该实体的属性信息。实体层在调用数据中间层时,需要指明所需的信息。当实体层需要请求某个目标实体的N类属性信息时,面向实体层的统一接口获取实体层的对应数据接入请求,该数据接入请求到了数据中间层之后,为了提高数据中间层的吞吐能力,并发请求业务逻辑模块5根据所述目标实体的多个所述数据接入请求,采用异步协程方式,向所述上游系统并发请求对应的数据信息。
本发明实施例提供的一种数据中间层系统,能够有效缩短服务端的响应时间,增大服务端的吞吐量。
作为本发明实施例的又一个方面,本实施例提供一种基于数据中间层的数据处理方法,参考图9,为本发明实施例一种基于数据中间层的数据处理方法的流程图,包括:
S01,利用面向实体层的统一接口,获取实体层中各目标实体的数据接入请求;其中,所述面向实体层的统一接口为事先在所述数据中间层中配置的面向所述实体层的接口函数。
可以理解为,在数据中间层中事先配置了面向实体层的接口函数,即面向实体层的统一接口,可以通过该面向实体层的统一接口接受实体层中各目标实体的数据接入请求。本步骤数据中间层具体通过调用面向实体层的统一接口,读取实体层中各目标实体的数据接入请求。
S02,基于所述数据接入请求和各面向上游系统的接口函数间的依赖关系,执行对应的数据处理内部业务逻辑,调用对应的面向上游系统的接口函数;其中,所述面向上游系统的接口函数为事先基于各所述目标实体对应的实体属性,分别对应各所述实体属性配置的面向上游系统的接口函数。
可以理解为,在所述的数据中间层中,事先基于各目标实体对应的实体属性,分别对应各实体属性配置了面向上游系统的接口函数,即对应的面向实体层的接口函数。在上述步骤获取实体层各目标实体的数据接入请求之后,需要根据数据接入请求和各面向上游系统的接口函数间的依赖关系,通过数据中间层实现数据处理内部业务逻辑,调用对应的面向上游系统的接口函数,通过被调用的各接口函数向上游系统进行相应数据信息的请求。
S03,通过所述面向上游系统的接口函数,向上游系统请求对应的数据信息,并将所述数据信息写入降级redis。
可以理解为,在上述步骤通过实现数据处理内部业务逻辑,调用相应的面向上游系统的接口函数之后,各面向上游系统的接口函数会根据内部定义的实现逻辑访问相应的上游系统,向上游系统请求相应的数据信息。在成功获取数据接入请求对应的数据信息之后,将该数据信息写入降级redis。
S04,当判断数据处理内部业务逻辑执行出现异常时,自动调用降级redis,获取降级数据实施降级处理。
可以理解为,根据上述步骤,在面向上游系统的接口函数正常请求到数据时,数据中间层将这部分数据写入降级redis中,失效时间可以设置久一些。当面向上游系统的接口函数请求异常时,数据中间层请求降级redis获取降级数据,同时写入缓存,在降级的同时防止上游服务长时间异常对redis负载过大。
本发明实施例提供的一种基于数据中间层的数据处理方法,通过实现由数据中间层直接负责和上游系统进行数据交换,实体层读取数据中间层获取的数据信息,并在数据处理存在异常时自动降级的处理功能,能够有效提高实体model的稳定性,并实现自动降级处理功能,从而有效降低开发难度,提高开发效率。
参考图9,为本发明实施例另一种基于数据中间层的数据处理方法的流程图,在基于上述实施例的基础上,本实施例还包括当对应的上游系统处理性能不同时,根据上游系统处理性能高低进行个性化缓存;以及在实体层的数据接入请求对应多个实体属性时,进行基于异步协程的并发请求。通过并发请求分别获取对应的多个实体属性数据信息。另外还包括,对调用异常进行检测,当检测到调用异常时,发出调用异常消息。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种数据中间层的实现方法,其特征在于,包括:
S1,配置面向实体层的统一接口,用以接受所述实体层中各目标实体的数据接入请求;
S2,基于各所述目标实体对应的实体属性,分别配置各所述实体属性对应的面向上游系统的接口函数,并定义各所述面向上游系统的接口函数间的依赖关系,用以获取所述上游系统中对应的数据信息,并将所述数据信息写入降级redis;
S3,构建数据处理内部业务逻辑,用以基于所述数据接入请求,调用对应的所述面向上游系统的接口函数;
S4,构建自动降级业务逻辑,用以当所述数据处理内部业务逻辑执行出现异常时,自动调用降级redis,获取降级数据实施降级处理。
2.根据权利要求1所述的实现方法,其特征在于,还包括:
构建并发请求业务逻辑,用以根据所述目标实体的多个所述数据接入请求,采用异步协程方式或者curl_multi_*类函数,向所述上游系统并发请求对应的数据信息。
3.根据权利要求1或2所述的实现方法,其特征在于,还包括:
基于所述实体属性对应的上游系统的性能指标,配置所述实体属性对应的面向上游系统的接口函数的缓存策略。
4.根据权利要求3所述的实现方法,其特征在于,还包括:
构建数据处理异常业务逻辑,用以当所述面向上游系统的接口函数调用失败时,发出处理异常消息。
5.根据权利要求1所述的实现方法,其特征在于,还包括:分别为各所述目标实体分配一个唯一对应的编码标识;
相应的,步骤S2中所述获取所述上游系统中对应的数据信息的步骤进一步包括:
基于所述编码标识和所述数据接入请求对应的实体属性,向所述上游系统请求对应的数据信息。
6.根据权利要求1所述的实现方法,其特征在于,所述S2的步骤中还包括:
配置所述降级redis,并设置所述降级redis的数据失效时间大于设定阈值。
7.根据权利要求1所述的实现方法,其特征在于,所述S3的步骤进一步包括:
S31,构建各所述面向上游系统的接口函数的依赖关系检测业务逻辑,以及所述依赖关系是否成环形的判断业务逻辑;
S32,构建在所述依赖关系为非环形时,基于所述依赖关系和所述数据接入请求,优先调用被依赖的面向上游系统的接口函数的业务逻辑。
8.一种数据中间层系统,其特征在于,包括:
面向实体层的统一接口模块,用于接受实体层中各目标实体的数据接入请求;
面向上游系统的接口函数模块,用于获取上游系统中对应的数据信息,并将所述数据信息写入降级redis;所述面向上游系统的接口函数模块通过基于各所述目标实体对应的实体属性进行配置获取,且定义了各所述面向上游系统的接口函数间的依赖关系;
数据处理内部业务逻辑模块,用于基于所述数据接入请求,调用对应的所述面向上游系统的接口函数;
自动降级业务逻辑模块,用于当数据处理内部业务逻辑执行出现异常时,自动调用降级redis,获取降级数据实施降级处理。
9.根据权利要求8所述的控制系统,其特征在于,还包括:
并发请求业务逻辑模块,用于根据所述目标实体的多个所述数据接入请求,采用异步协程方式或者curl_multi_*类函数,向所述上游系统并发请求对应的数据信息。
10.一种基于数据中间层的数据处理方法,其特征在于,包括:
S01,利用面向实体层的统一接口,获取实体层中各目标实体的数据接入请求;
其中,所述面向实体层的统一接口为事先在所述数据中间层中配置的面向所述实体层的接口函数;
S02,基于所述数据接入请求和各面向上游系统的接口函数间的依赖关系,执行对应的数据处理内部业务逻辑,调用对应的面向上游系统的接口函数;
其中,所述面向上游系统的接口函数为事先基于各所述目标实体对应的实体属性,分别对应各所述实体属性配置的面向上游系统的接口函数;
S03,通过所述面向上游系统的接口函数,向上游系统请求对应的数据信息,并将所述数据信息写入降级redis;
S04,当判断数据处理内部业务逻辑执行出现异常时,自动调用降级redis,获取降级数据实施降级处理。
CN201711175460.8A 2017-11-22 2017-11-22 一种数据中间层系统及其实现方法 Active CN108170411B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711175460.8A CN108170411B (zh) 2017-11-22 2017-11-22 一种数据中间层系统及其实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711175460.8A CN108170411B (zh) 2017-11-22 2017-11-22 一种数据中间层系统及其实现方法

Publications (2)

Publication Number Publication Date
CN108170411A true CN108170411A (zh) 2018-06-15
CN108170411B CN108170411B (zh) 2020-10-09

Family

ID=62527276

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711175460.8A Active CN108170411B (zh) 2017-11-22 2017-11-22 一种数据中间层系统及其实现方法

Country Status (1)

Country Link
CN (1) CN108170411B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103051706A (zh) * 2012-12-19 2013-04-17 新浪网技术(中国)有限公司 应用于动态网站的动态网页请求处理系统和方法
CN104794147A (zh) * 2013-12-30 2015-07-22 深圳键桥通讯技术股份有限公司 异构数据库访问方法
US9292261B1 (en) * 2015-02-16 2016-03-22 United Technologies Corporation Revision management tools for a multi-user CAx environment
CN106844485A (zh) * 2016-12-23 2017-06-13 航天星图科技(北京)有限公司 一种企业异构数据库智能集成的系统及方法
CN107222567A (zh) * 2017-07-07 2017-09-29 北京京东尚科信息技术有限公司 处理数据请求的方法、装置及服务集群

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103051706A (zh) * 2012-12-19 2013-04-17 新浪网技术(中国)有限公司 应用于动态网站的动态网页请求处理系统和方法
CN104794147A (zh) * 2013-12-30 2015-07-22 深圳键桥通讯技术股份有限公司 异构数据库访问方法
US9292261B1 (en) * 2015-02-16 2016-03-22 United Technologies Corporation Revision management tools for a multi-user CAx environment
CN106844485A (zh) * 2016-12-23 2017-06-13 航天星图科技(北京)有限公司 一种企业异构数据库智能集成的系统及方法
CN107222567A (zh) * 2017-07-07 2017-09-29 北京京东尚科信息技术有限公司 处理数据请求的方法、装置及服务集群

Also Published As

Publication number Publication date
CN108170411B (zh) 2020-10-09

Similar Documents

Publication Publication Date Title
CN109845303A (zh) 网络切片的管理方法及管理单元
CN106599711A (zh) 一种数据库访问控制方法,及装置
CN105468302B (zh) 一种处理数据的方法、装置及系统
CN101159005A (zh) 管理智能物件网与企业应用间交互服务质量的方法和系统
CN111770162A (zh) 网络带宽限制方法、装置、主节点及存储介质
CN104734915A (zh) 一种复合多进程多线程的多网络并发动态仿真方法
CN107194674A (zh) 一种基于事项业务规则的智能分发调度系统
CN110389843A (zh) 一种业务调度方法、装置、设备及可读存储介质
CN108667903B (zh) 数据发送方法、装置和存储介质
CN106445411A (zh) 一种数据读取方法、装置及分布式存储系统
CN114157334B (zh) 一种卫星通信接入系统和传输分析方法
CN108170411A (zh) 一种数据中间层系统及其实现方法
US6754658B1 (en) Database server processing system, method, program and program storage device
CN108429642A (zh) 一种拓扑结构识别方法、系统、设备及计算机存储介质
CN109639599B (zh) 网络资源调度方法及系统、存储介质及调度设备
CN115002112A (zh) 面向行业的多云融合方法及系统
CN112351106B (zh) 一种含事件网格的服务网格平台及其通信方法
WO2022016767A1 (zh) 数据队列的处理方法及装置
CN112540855B (zh) 通信域的集中式管理方法
CN115242898B (zh) 协议栈与物理层进程间的通信方法及装置
CN107797862B (zh) 一种实现QoS策略模板化的方法
CN110166368A (zh) 一种云存储网络带宽控制系统及方法
CN110475341A (zh) 一种进行资源分配的方法和装置
CN115988087B (zh) 基于总线的服务调用方法、装置、电子设备和存储介质
CN117880329B (zh) 一种物联网设备多网关接入方法

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 100085 Floor 102-1, Building No. 35, West Second Banner Road, Haidian District, Beijing

Applicant after: Seashell Housing (Beijing) Technology Co.,Ltd.

Address before: 100085 Floor 102-1, Building No. 35, West Second Banner Road, Haidian District, Beijing

Applicant before: LIANJIA(BEIJING) TECHNOLOGY Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant