一种服务的调用方法和服务器与流程

文档序号:11843291阅读:352来源:国知局
一种服务的调用方法和服务器与流程

本发明涉及互联网领域,尤其涉及一种服务的调用方法和服务器。



背景技术:

在配置后台的服务器的网络框架时,开发者会根据业务的类型确定一个网络框架,网络框架分为多线程或单线程,例如,在应对多客户机的网络应用中,开发者会在服务器使用多线程的网络框架。多线程的目的是让每个连接都拥有独立的线程,防止一个连接的阻塞而影响其他的连接。在配置服务器的网络框架时具体使用多线程还是单线程,开发者会根据服务器运行的业务灵活的选择其中的一种。

目前这种单一的网络框架的服务器在无法在处理用户的业务请求时,无法根据业务特点来区分运行,导致服务器的处理效率低下。同时,服务器的程序结构单一,功能不清晰,难以维护。



技术实现要素:

本发明实施例所要解决的技术问题在于,提供一种服务的调用方法和服务器。可解决现有技术中服务器的处理效率低和难以维护的问题。

为了解决上述技术问题,本发明实施例提供了一种服务的调用方法,服务器包括业务接口层和功能接口层,所述业务接口层采用单线程异步的工作机制,所述功能接口层采用多线程异步的工作机制,所述方法包括:

所述服务器通过所述业务接口层接收业务请求;

所述服务器识别所述业务请求的类型;

如果所述业务请求为服务请求,向所述功能接口层发送功能调用请求,所述功能调用请求用于在所述功能接口层中调用所述业务请求对应的至少一个原子操作;

在所述至少一个原子操作全部调用成功之后,向所述业务接口层返回调用 结果。

相应地,本发明实施例还提供了一种服务器,包括:

接收模块、识别模块、调用模块和返回模块,其中,所述接收模块、所述识别模块和所述调用模块位于业务接口层中,所述返回模块位于功能接口层中,所述业务接口层采用单线程异步的工作机制,所述功能接口层采用多线程异步的工作机制;

所述接收模块,用于通过所述业务接口层接收业务请求;

所述识别模块,用于识别所述业务请求的类型;

所述调用模块,用于如果所述业务请求为服务请求,向所述功能接口层发送功能调用请求,所述功能调用请求用于在所述功能接口层中调用所述业务请求对应的至少一个原子操作;

所述返回模块,用于在所述至少一个原子操作全部调用成功之后,向所述业务接口层返回调用结果。

实施本发明实施例,具有如下有益效果:

通过业务接口层接收业务请求,如果业务请求的类型为服务请求,向功能接口层调用业务请求对应的至少一个原子操作,接收功能接口层返回的调用接口。这样通过对服务器的层次的划分和工作机制的配置,使服务器的系统结构清晰,不同类型的业务请求交给对应的层去处理,优化了服务器的处理效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种服务的调用方法的流程示意图;

图2是本发明实施例提供的一种服务的调用方法的另一流程示意图;

图3是本发明实施例提供的一种服务器的一种网络框架的结构示意图;

图4是本发明实施例提供的一种服务器的结构示意图;

图5是本发明实施例提供的一种服务器的另一结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明实施例中,服务器用于响应前端的业务请求,服务器划分为3个层次,业务接口层(Service)、功能接口层(Server)和任务作业层(Mon),其中业务接口层采用单线程异步的工作机制,功能接口层采用多线程异步的工作机制,任务作业层采用多线程同步的工作机制。业务接口层用于向外部提供事务性的接口,用户可以通过事务性的接口调用功能接口层中的原子操作,功能接口层中包含多个原子操作,原子操作为服务器中功能单一的操作,一般为慢速操作,任务作业层用于响应用户触发的作业任务,作业任务为一个非实时性的任务,处理过程需要耗费很长的时间。通过对服务器的层次的划分和工作机制的配置,用作后台的服务器的系统结构清晰,特定的业务请求交给对应的层去处理,优化了服务器的处理效率。

参见图1,为本发明实施例提供的一种服务的调用方法的流程示意图,在本发明实施例中,所述方法包括:

S101、服务器通过业务接口层接收业务请求。

具体的,用户通过前端系统向服务器的业务接口层发送业务请求,服务器通过业务接口层接收业务请求。业务接口层采用单线程异步的工作方式处理业务请求,即业务接口层采用单线程工作机制,即业务接口层每次只能处理一个业务请求,业务接口层每接收到一个业务请求就发往功能接口层,业务接口层同时又采用异步的工作机制,即业务接口层向功能接口层发送完功能调用请求后,又可以重新处理另一个业务请求,并不会等到功能接口层返回调用结果后才开始处理另一业务请求。其中,另一个业务请求可能来自同一用户的业务请求或不同用户的业务请求。

S102、所述服务器识别所述业务请求的类型。

具体的,业务请求中可携带表示其类型的类型字段,服务器接收到业务请求后提取类型字段,根据类型字段识别业务请求的类型,其中业务请求的类型根据执行时间的长短分为服务请求和作业任务,服务请求的执行时间通常比较 段,作业任务的执行时间通常比较长。例如,获取用户状态的业务请求为服务请求,转账操作的请求为作业任务,一个业务请求具体属于服务请求还是作业任务可以预先根据执行时间的长短来确定。

S103、如果所述业务请求为服务请求,向所述功能接口层发送功能调用请求,所述功能调用请求用于在所述功能接口层中调用所述服务请求对应的至少一个原子操作。

具体的,根据S102识别的业务请求的类型,如果业务请求为服务请求,服务器的业务接口层查询业务请求对应的至少一个原子操作,向功能接口层发送携带对应的至少一个原子操作的函数名的功能调用请求,功能接口层接收功能调用请求,执行功能调用请求中的至少一个原子操作。功能接口层采用多线程异步的工作机制处理接收到的功能调用请求,具体的处理过程为:

功能接口层包含多个原子操作,每个原子操作的功能是单一为解耦的,业务接口层采用的单线程异步的工作机制,这样会导致业务接口层会不断的向功能接口层发送功能调用请求,以调用功能接口层的原子操作,不同的功能调用请求调用的原子操作可能会相同,这样功能接口层采用多线程的工作机制才能处理同时调用多个相同的原子操作的要求。功能接口层中的原子操作为慢速的操作,执行过程耗时非常长,为了减少服务器的CPU资源的消耗,功能接口层在执行原子操作的过程中利用自身的硬件能力来执行,并不消耗服务器的CPU资源,只是在开始执行和结束原子操作的时候通知CPU该原子操作的执行状态,因此功能接口层采用的是异步的工作机制。其中,功能接口层可以采用Leader/Follow的工作机制来处理业务接口层的功能调用请求。

S104、在所述至少一个原子操作全部调用成功之后,向所述业务接口层返回调用结果。

具体的,业务请求是事务性的,在业务请求对应的至少一个原子操作全部调用成功后,功能接口层向业务接口层返回调用结果,由业务接口层向调用结果通知给用户。

实施本发明的实施例,通过业务接口层接收业务请求,如果业务请求的类型为服务请求,向功能接口层调用业务请求对应的至少一个原子操作,接收功能接口层返回的调用接口。这样通过对服务器的层次的划分和工作机制的配置,使服务器的系统结构清晰,不同类型的业务请求交给对应的层去处理,优化了 服务器的处理效率。

参见图2,为本发明实施例提供的一种服务的调用方法的另一流程示意图,在本发明实施例中,所述方法包括:

S201、服务器通过业务接口层接收业务请求。

具体的,服务器包括业务接口层、功能接口层和任务作业层,每个层采用不同的工作机制。服务器通过业务接口层接收用户通过前端系统发送的业务请求,业务接口层用于向外部提供一个相对友好的功能接口,用户通过功能接口调用后台服务器相应的功能。业务接口层采用单线程异步的工作机制,具体过程为:业务接口层接收来自前端系统的大量的业务请求,业务接口层可以根据业务请求到来的先后顺序每次只处理一个业务请求,即单线程的工作机制,为了防止业务请求在调用对应的至少一个原子操作发生阻塞,业务接口层在将业务请求转发到功能接口层或作业任务层之后,即可以重新处理另一个线程,不需要等待上一个线程的调用结果返回,即异步的工作机制。这样,在业务接口层使用单线程异步的工作机制可以方式一个业务请求阻塞导致无法在响应新的业务请求,提高处理效率。

示例性的,业务接口层根据时间的先后顺序接收到的业务请求为operation request1、operation request2、……、operation requestn,业务接口层每次只处理一个业务请求,业务接口层将operation request1转发给功能接口层或作业任务层之后,就开始处理operation request2,将operation request2转发给功能接口层或作业任务层之前,就开始处理operation request3,依次类推,采用单线程异步的工作机制处理接收到的业务请求,防止阻塞在单一的线程中,提高处理效率。

S202、获取所述业务请求中携带的类型字段。

具体的,业务请求中携带类型字段,类型字段用于表示业务请求的类型,例如,业务请求中携带的类型字段为:operation request(task),task字段表示业务请求为作业任务,operation request(service),service字段表示业务请求为服务请求。

S203、根据所述类型字段识别所述业务请求的类型。

具体的,根据S202的识别结果,如果业务请求为服务请求,执行S204,如果业务请求为作业任务,执行S205。

S204、向所述功能接口层发送功能调用请求,所述功能调用请求用于在所 述功能接口层中调用所述服务请求对应的至少一个原子操作。

具体的,服务器预先提供已封装的操作函数,不同的操作函数对应的原子操作是不相同的,用户向服务器发送业务请求即为调用服务器的业务接口层中提供的操作函数。服务器的业务接口层查询业务请求对应的至少一个原子操作,服务器的业务接口层向业务接口层发送携带对应的至少一个原子操作的函数名的功能调用请求。功能接口层采用多线程异步的工作机制处理业务接口层发送的功能调用请求,具体的处理过程为:

功能接口层包含多个原子操作,每个原子操作的功能是单一为解耦的,业务接口层采用的单线程异步的工作机制,这样会导致业务接口层会不断的向功能接口层发送功能调用请求,以调用功能接口层的原子操作,不同的功能调用请求调用的原子操作可能会相同,这样功能接口层采用多线程的工作机制才能处理同时调用多个相同的原子操作的要求。功能接口层中的原子操作为慢速的操作,执行过程耗时非常长,为了减少服务器的CPU资源的消耗,功能接口层在执行原子操作的过程中利用自身的硬件能力来执行,并不消耗服务器的CPU资源,只是在开始执行和结束原子操作的时候通知CPU该原子操作的执行状态,因此功能接口层采用的是异步的工作机制。

示例性的,服务器的业务接口层查询到operation request1对应的至少一个原子操作为Server1、Server2和Server3,operation request2对应的至少一个原子操作为Server1、Server3和Server5,业务接口层依次向功能接口层发送功能调用请求Function call request1(Server1,Server2,Server3)和Function call request2(Server1,Server3,Server5),可以看出Function call request1和Function call request2均需要调用原子操作Server1和Server3,这时功能接口层需要开启多线程的工作机制。功能接口层中的原子操作一般为慢速操作,例如,大文件的读写操作、数据库的读写操作等,耗时较长,功能接口层采用异步的方式来执行原子操作,具体为利用功能接口层自身的硬件资源来执行原子操作,不需要调用服务器的CPU的资源,功能接口层在开始执行和结束执行某个原子操作时,只需要通知CPU,在执行结束后,生成调用成功或失败的消息。

S205、将所述业务请求写入所述任务作业层的任务表中。

具体的,根据S202识别的业务请求的类型,将业务请求写入任务作业层的任务表中,任务表中存储的业务请求的最大数量可以根据处理能力进行设置, 任务表可以是一个先进先出的队列,新到来的业务请求放置在队列的尾部,任务作业层每次读取队列的头部的业务请求。

S206、当满足所述业务请求的执行条件时,确定所述业务请求对应的至少一个作业阶段,并控制所述任务作业层执行所述至少一个作业阶段。

具体的,可以通过状态值的转换对任务表中的业务请求进行处理,任务表中的每个业务请求设置一个状态值,任务作业层周期性的读取任务表中的业务请求的状态值,当状态值符合预设值时,确定业务请求对应的至少一个作业阶段,并控制任务作业层执行所述至少一个作业阶段。任务作业层采用多线程同步的工作机制来处理任务表中的业务请求,即同时可以处理多个业务请求,针对一个业务请求,该业务请求对应的所有的作业阶段均成功执行后,向业务接口层返回执行结果,由业务接口层向用户呈现。其中,在执行每个作业阶段的过程中也会去调用功能接口层中的原子操作,调用的方式操作服务请求,此处不再赘述。

示例性的,作业表中最大可存储100个业务请求,任务作业层每间隔1s读取业务请求的状态值,如果业务请求的状态值为1,查询业务请求的至少一个作业阶段,业务请求为转账业务请求,转账业务请求对应的作业阶段包括:账号获取阶段、审核阶段、账户余额更新阶段,功能接口层依次执行上述三个作业阶段,在所有的作业阶段全部成功执行后,向业务接口层返回执行结果;如果不是全部成功执行,则回滚到转账操作之前的状态,通知作业任务表的转账操作的状态值变为0。

S207、所述至少一个原子操作是否全部调用成功。

具体的,服务请求为事务性的操作,如果至少一个原子操作全部调用成功,执行S208,否则,执行S209。

S208、向所述业务接口层返回调用结果。

S209、向所述业务接口层返回失败消息。

其中,调用失败后,恢复到调用至少一个原子操作之前的状态。

实施本发明的实施例,通过业务接口层接收业务请求,如果业务请求的类型为服务请求,向功能接口层调用业务请求对应的至少一个原子操作,接收功能接口层返回的调用接口。这样通过对服务器的层次的划分和工作机制的配置,使服务器的系统结构清晰,不同类型的业务请求交给对应的层去处理,优化了 服务器的处理效率。

参见图3,为本发明实施例提供的一种服务器的网络框架的结构示意图,在本发明实施例中,以广告消息的群发过程来说明本发明实施例的服务器的工作原理:

服务器包括业务接口层Service、功能接口层Server和任务作业层Mon、业务接口层采用单线程异步的工作机制,功能接口层采用多线程异步的工作机制,任务作业层采用多线程同步的工作机制。业务接口层提供多种操作功能、包括获取广告主资料、获取用户标签、获取群发素材和定向推广等,用户向业务接口层发送定向推广的业务请求,业务接口确定定向推广为作业任务,将定向推广放入到作业任务层的作业表中,作业任务表周期性的读取定向周期性的匹配定向推广的状态值,当状态值为1时,确定定向推广对应的作业阶段为预算计费、审核、通知和发送4个作业阶段。在4个作业阶段全部成功执行后,即完成定向推广的业务请求;如果业务请求为服务请求,确定服务请求对应的至少一个原子操作,调用功能接口层中的至少一个原子操作,在所有的原子操作调用成功后,向业务接口层返回调用结果。

参见图4,为本发明实施例提供的一种服务器的结构示意图,在本发明实施例中,所述服务器包括接收模块40、识别模块41、调用模块42和返回模块43,其中所述接收模块40、识别模块41和调用模块42位于业务接口层中,所述业务接口层采用单线程异步的工作机制,所述返回模块43位于功能接口层中,所述功能接口层采用多线程异步的工作机制。

接收模块40,用于通过所述业务接口层接收业务请求。

识别模块41,用于识别所述业务请求的类型。

调用模块42,用于如果所述业务请求为服务请求,向所述功能接口层发送功能调用请求,所述功能调用请求用于在所述功能接口层中调用所述业务请求对应的至少一个原子操作。

返回模块43,用于在所述至少一个原子操作全部调用成功之后,向所述业务接口层返回调用结果。

本发明实施例和方法实施例一基于同一构思,其带来的技术效果也相同,具体过程请参照方法实施例一的描述,此处不再赘述。

进一步的,参见图5,为本发明实施例提供的一种服务器的另一结构示意图, 在本发明实施例中,所述服务器除包括接收模块40、识别模块41、调用模块42和返回模块43之外,还包括:写入模块44、执行模块45和失败返回模块46,其中,所述写入模块44位于业务接口层中,执行模块45位于任务作业层中,失败返回模块46位于功能接口层中,任务作业层采用多线程同步的工作机制。

写入模块44,用于如果所述业务请求为作业任务,将所述业务请求写入所述任务作业层的任务表中。

执行模块45,用于当满足所述业务请求的执行条件时,确定所述业务请求对应的至少一个作业阶段,并控制所述任务作业层依次执行所述至少一个作业阶段。

失败返回模块46,用于如果所述至少一个原子操作中没有全部调用成功,向所述业务接口层返回失败消息;其中,所述失败返回模块位于功能接口层中。

可选的,所述识别模块用于获取所述业务请求中携带的类型字段,根据所述类型字段识别所述业务请求的类型。

可选的所述执行模块用于控制所述任务作业层根据预设周期读取所述作业表中的所述业务请求的状态值;

如果读取的状态值为预设值,确定所述业务请求对应的至少一个作业阶段,并控制所述任务作业层依次执行所述至少一个作业阶段。

可选的,所述功能接口层中的原子操作包括:文件读写操作、数据库操作和支付操作。

本发明实施例和方法实施例二基于同一构思,其带来的技术效果也相同,具体请参照方法实施例二的描述,此处不再赘述。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1