CN107632889A - 一种实现服务降级的方法、设备及计算机可读存储介质 - Google Patents

一种实现服务降级的方法、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN107632889A
CN107632889A CN201710507677.8A CN201710507677A CN107632889A CN 107632889 A CN107632889 A CN 107632889A CN 201710507677 A CN201710507677 A CN 201710507677A CN 107632889 A CN107632889 A CN 107632889A
Authority
CN
China
Prior art keywords
service
thread
dependence
resources
thread resources
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
Application number
CN201710507677.8A
Other languages
English (en)
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.)
Nubia Technology Co Ltd
Original Assignee
Nubia 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 Nubia Technology Co Ltd filed Critical Nubia Technology Co Ltd
Priority to CN201710507677.8A priority Critical patent/CN107632889A/zh
Publication of CN107632889A publication Critical patent/CN107632889A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明实施例提供了一种实现服务降级的方法、设备及计算机可读存储介质,包括:与相关技术相比,本发明实施例技术方案包括:为各依赖服务分配相互隔离的线程资源;各依赖服务在分配的线程资源上进行用户请求的响应处理。本发明实施例为各依赖服务分配相互隔离的线程资源,避免了服务雪崩,提升了网站运行的稳定性。

Description

一种实现服务降级的方法、设备及计算机可读存储介质
技术领域
本发明涉及互联网技术,尤指一种实现服务降级的方法、设备及计算机可读存储介质。
背景技术
目前,大型网站对大并发访问主要采用缓存、限流和降级三种方式进行处理。服务端在通过限流和缓存逐层过滤之后,最终流向业务层进行执行。当业务层出现服务问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,则需要进行服务降级。
服务降级主要从服务端链路考虑,即根据用户访问的服务调用链路来确定哪里需要降级。降级的策略包含自动开关降级、人工开关降级、读服务降级、写服务降级和多级降级。其中,自动开关降级策略可以根据系统负载、资源使用情况及服务质量等指标来进行降级,具体可分为超时降级、统计失败次数降级以及故障降级。超时降级是指当访问的数据库、超文本传输协议(http)服务、远程调用响应慢或者长时间响应慢,如果服务不是核心服务可以在超时后自动降级。统计失败次数降级是指依赖一些不稳定的应用程序编程接口(API),比如调用外部第三方接入方服务,当失败调用次数达到一定阀值自动降级;然后通过异步线程去探测服务是否恢复了,则取消降级。故障降级是指要调用的远程服务挂掉了(网络故障、域名系统(DNS)故障、http服务返回错误的状态码、远程过程调用协议(rpc)服务抛出异常),则可以直接降级。上述三种降级方式都是通过在业务逻辑层上做判断进行降级处理和恢复,耦合度比较高。在网站高峰期间,如果高并发的流量涌入容易导致服务雪崩效应(服务雪崩效应是一种因服务提供者的不可用导致服务调用者的不可用,并不可用被逐渐放大的过程,服务雪崩效应产生的过程主要是以下三个阶段造成服务提供者不可用、重试加大流量、服务调用者不可用)。
在一个高度服务化的系统中,一个业务逻辑通常会依赖多个服务,业务逻辑所依赖的服务简称为依赖服务。比如在业务逻辑为商品详情服务时,依赖服务包括:商品服务、价格服务、商品评论服务、推荐服务等。商品详情服务呈现的内容包括商品的详细信息、商品的价格、用户对商品的评论以及产品推荐等,在页面渲染业务逻辑时,需要呈现上述信息,高度服务化的系统会把上述的几项内容独立成相应的系统服务,因而相应的在页面呈现时需要调用相关的系统服务,因而统称为依赖服务。图1为相关技术中业务逻辑和依赖服务的组成示意图,如图1所示,业务逻辑为商品详情服务,依赖服务包括:商品服务、价格服务、商品评论服务、推荐服务;其中,调用四个依赖服务时会共享商品详情服务的线程池,如果其中一个依赖服务不可用,该依赖服务就会出现在线程池里,线程池内的所有线程都因等待响应而被阻塞,从而造成服务雪崩。而服务雪崩会造成服务异常,影响整个网站的正常运行。
发明内容
针对上述技术问题,本发明实施例提供了一种实现服务降级的方法、设备及计算机可读存储介质,能够避免依赖服务无响应造成的雪崩,提升网络稳定性。
本发明实施例提供了一种实现服务降级的方法,包括:
为各依赖服务分配相互隔离的线程资源;
各依赖服务在分配的线程资源上进行用户请求的响应处理。
可选的,所述为各依赖服务分配相互隔离的线程资源的步骤包括:
为业务逻辑依赖的每一个所述依赖服务分配独立的线程池,以使该依赖服务获得与其他依赖服务相互隔离的线程资源;或,
为业务逻辑依赖的每一个所述依赖服务通过信号量分配线程资源,以使该依赖服务获得与其他依赖服务相互隔离的资源。
可选的,所述为业务逻辑依赖的每一个依赖服务分配独立的线程池的步骤包括:
将分配给业务逻辑的线程资源,按照预设策略为各依赖服务对应的线程池分别分配相应个数的线程。
可选的,所述各依赖服务在分配的线程资源上进行用户请求的响应处理的步骤包括:
所述依赖服务对应的线程池中不包含用于进行响应处理的线程资源时,所述依赖服务向业务逻辑反馈第一预设信息;
所述依赖服务对应的线程池中包含用于进行响应处理的线程资源,且线程资源在第一预设时长内被分配时,所述依赖服务通过分配的线程资源向业务逻辑响应用户请求;
所述依赖服务对应的线程池中包含用于进行响应处理的线程资源,但线程资源在第一预设时长内未被分配时,向业务逻辑反馈第二预设信息。
可选的,向业务逻辑反馈第二预设信息后,所述方法还包括:
所述线程资源在第二预设时长内被分配时,所述依赖服务通过分配的线程资源向业务逻辑响应用户请求。
另一方面,本发明实施例还提供一种实现服务降级的设备,所述设备包括处理器、存储器及通信总线;
所述通信总线用于实现处理器和存储器之间的连接通信;
所述处理器用于执行存储器中存储的服务降级程序,以实现以下步骤:
为各依赖服务分配相互隔离的线程资源;
各依赖服务在分配的线程资源上进行用户请求的响应处理。
可选的,所述处理器用于执行存储器中存储的为各依赖服务分配相互隔离的线程资源包括:
为业务逻辑依赖的每一个所述依赖服务分配独立的线程池,以使该依赖服务获得与其他依赖服务相互隔离的线程资源;或,
为业务逻辑依赖的每一个所述依赖服务通过信号量分配线程资源,以使该依赖服务获得与其他依赖服务相互隔离的资源。
可选的,所述处理器用于执行存储器中存储的为业务逻辑依赖的每一个依赖服务分配独立的线程池包括:
将分配给业务逻辑的线程资源,按照预设策略为各依赖服务对应的线程池分别分配相应个数的线程。
可选的,所述处理器用于执行存储器中存储的各依赖服务在分配的线程资源上进行用户请求的响应处理包括:
所述依赖服务对应的线程池中不包含用于进行响应处理的线程资源时,所述依赖服务向业务逻辑反馈第一预设信息;
所述依赖服务对应的线程池中包含用于进行响应处理的线程资源,且线程资源在第一预设时长内被分配时,所述依赖服务通过分配的线程资源向业务逻辑响应用户请求;
所述依赖服务对应的线程池中包含用于进行响应处理的线程资源,但线程资源在第一预设时长内未被分配时,向业务逻辑反馈第二预设信息。
再一方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行以实现上述的服务降级的方法。
与相关技术相比,本发明实施例技术方案包括:从预设服务器获取根据历史服务降级数据训练生成的在各场景对通知进行处理的服务降级模型;根据获取的服务降级模型,对接收到的通知进行处理。本发明实施例根据历史服务降级数据生成服务降级模型,实现了根据不同场景进行服务降级,提升了用户的使用体验。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为相关技术中业务逻辑和依赖服务的组成示意图;
图2为本发明实施例应用服务器的结构示意图;
图3为本发明实施例实现服务降级的方法的流程图;
图4为本发明实施例通过线程池为各依赖分配线程资源的示意图;
图5为本发明实施例通过线程池和信号量为依赖服务分配线程资源的示意图;
图6为本发明实施例进行响应处理的信息流向示意图;
图7为本发明实施例进行响应处理的示意图;
图8为本发明另一实施例实现服务降级的方法的流程图;
图9为本发明实施例实现服务降级的设备的结构框图。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
终端可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(Personal Digital Assistant,PDA)、便捷式媒体播放器(Portable Media Player,PMP)、导航装置、可穿戴设备、智能手环、计步器等移动终端,以及诸如数字TV、台式计算机等固定终端。
如图2所示,为本发明实施例应用服务器的结构示意图,包括:输入输出(IO)总线、处理器40、存储器41、内存42和通信装置43。其中,
输入输出(IO)总线分别与自身所属的服务器的其它部件(处理器40、存储器41、内存42和通信装置43)连接,并且为其它部件提供传送线路。
处理器40通常控制自身所属的服务器的总体操作。例如,处理器40执行计算和确认等操作。其中,处理器40可以是中央处理器(CPU)。
通信装置43,通常包括一个或多个组件,其允许自身所属的服务器与无线通信系统或网络之间的无线电通信。
存储器41存储处理器40可读、处理器可执行的软件代码,其包含用于控制处理器40执行本文描述的功能的指令(即软件执行功能)。
图3为本发明实施例实现服务降级的方法的流程图,如图3所示,包括:
步骤300、为各依赖服务分配相互隔离的线程资源;
可选的,本发明实施例为各依赖服务分配相互隔离的线程资源的步骤包括:
为业务逻辑依赖的每一个所述依赖服务分配独立的线程池,以使该依赖服务获得与其他依赖服务相互隔离的线程资源;或,
为业务逻辑依赖的每一个所述依赖服务通过信号量分配线程资源,以使该依赖服务获得与其他依赖服务相互隔离的资源。
需要说明的是,一个业务逻辑通常会依赖多个服务,业务逻辑所依赖的服务简称为依赖服务。比如在业务逻辑为商品详情服务时,依赖服务包括:商品服务、价格服务、商品评论服务、推荐服务等;对于一个业务逻辑依赖的依赖服务,可以通过线程池或信号量的方式分配线程资源;当然,对于一个业务逻辑依赖的依赖服务,可以只通过线程池为每一个依赖服务分配相应的线程资源,也可以只通过信号量为每一个依赖服务分配相应的线程资源。图4为本发明实施例通过线程池为各依赖分配线程资源的示意图,如图4所示,业务逻辑为商品详情服务,依赖服务包括:商品服务、价格服务、商品评论服务、推荐服务;其中,分配给业务逻辑的线程个数为100,本发明实施例为商品服务、价格服务、商品评论服务和推荐服务分别建立对应的线程池后,根据依赖服务的信息量和访问频率,为商品服务对应的线程池分配40个线程,为价格服务对应的线程池分配20个线程,为商品评价服务对应的线程池分配20个线程,为推荐服务对应的线程池分配剩余的20个线程;本发明实施例也可以将分配给业务逻辑的部分线程进行预留处理,根据各依赖服务的信息量和访问频率进行再分配,还可以对已经分配的线程进行调整。将线程分配至各线程池的方法为相关技术中已有的实现方法,在此不做赘述。图5为本发明实施例通过线程池和信号量为依赖服务分配线程资源的示意图,如图5所示,业务逻辑为商品详情服务,依赖服务包括:商品服务、价格服务、商品评论服务、推荐服务;其中,分配给业务逻辑的线程个数为100,本发明实施例为商品服务、价格服务、商品评论服务和推荐服务分别建立对应的线程池后,根据依赖服务的信息量和访问频率,为商品服务对应的线程池分配40个线程,为价格服务对应的线程池分配20个线程,为商品评价服务对应的线程池分配20个线程,推荐服务通过信号量方式分配线程资源,由于业务逻辑还有20个线程未被分配,本发明实施例可以设置信号量的初始值为20,当接收到用户请求时,如果信号量取值大于0,则对信号量作减一处理后,为用户请求分配线程,通过分配的线程直接访问启动的依赖服务的客户端,以进行响应处理,完成响应处理后,对信号量进行加一处理;如果信号量小于0,则用户请求无法响应,可以通过向业务逻辑反馈第三预设信息,实现友好提示处理;这里,通过信号量方式分配线程后,利用通过信号量分配的线程进行响应处理可以采用相关技术中已有的实现方式实现。图6为本发明实施例进行响应处理的信息流向示意图,如图6所示,采用线程池为依赖服务分配线程资源时,通过分配给依赖服务的线程池的资源,访问依赖服务对应的客户端,通过客户端实现用户请求的响应处理;采用信号量为依赖服务分配线程资源时,用户请求直接访问客户端,通过客户端直接实现用户请求的响应处理。
需要说明的是,业务逻辑和依赖服务为本领域技术人员公知的定义,其中,业务是指一个实体单元向另一个实体单元提供的服务;逻辑是指根据已有的信息推出合理的结论的规律;业务逻辑是指一个实体单元为了向另一个实体单元提供服务,应该具备的规则与流程。在软件系统架构中,软件一般分为三个层次:表示层、业务逻辑层和数据访问层;其中,表示层:负责界面和交互;业务逻辑层:负责定义业务逻辑(规则、工作流、数据完整性等),接收来自表示层的用户请求,逻辑判断后,向数据访问层提交请求,并传递数据访问结果,业务逻辑层实际上是一个中间件,起着承上启下的重要作用;数据访问层:负责数据读取;业务逻辑的内容包括四个部分:领域实体:定义了业务中的对象,对象有属性和行为;业务规则:定义了需要完成一个动作,必须满足的条件;数据完整性:某些数据不可少;工作流:定义了领域实体之间的交互关系。本发明实施例依赖服务根据业务逻辑接收到的用户请求进行反馈,通过依赖服务获得呈现用户请求对应的信息。
可选的,本发明实施例为业务逻辑依赖的每一个依赖服务分配独立的线程池的步骤包括:
将分配给业务逻辑的线程资源,按照预设策略为各依赖服务对应的线程池分别分配相应个数的线程。
步骤301、各依赖服务在分配的线程资源上进行用户请求的响应处理。
本发明实施例通过为各依赖服务分配相互隔离的线程资源,避免了服务雪崩,提升了网站运行的稳定性。
可选的,本发明实施例各依赖服务在分配的线程资源上进行用户请求的响应处理的步骤包括:
所述依赖服务对应的线程池中不包含用于进行响应处理的线程资源时,所述依赖服务向业务逻辑反馈第一预设信息;
这里,第一预设信息可以是本领域技术人员根据依赖服务的内容设定的友好提示界面,例如、依赖服务为商品服务时,向用户显示排队中、或访问无响应、或访问错误的提示。
所述依赖服务对应的线程池中包含用于进行响应处理的线程资源,且线程资源在第一预设时长内被分配时,所述依赖服务通过分配的线程资源向业务逻辑响应用户请求;
所述依赖服务对应的线程池中包含用于进行响应处理的线程资源,但线程资源在第一预设时长内未被分配时,向业务逻辑反馈第二预设信息;
这里,第二预设信息可以是本领域技术人员根据依赖服务的内容设定的友好提示界面,例如、依赖服务为商品服务时,向用户显示访问超时,请稍后重试的友好提示信息。
需要说明的是,按照相关技术的处理流程,为依赖服务分配线程资源后,线程会启动与依赖服务通讯的客户端,用户请求通过启动的客户端进行响应处理。
图7为本发明实施例进行响应处理的示意图,如图7所示,通过第一文本框反馈第一预设信息,通过第二文本框反馈第二预设信息。
可选的,向业务逻辑反馈第二预设信息后,本发明实施例方法还包括:
所述线程资源在第二预设时长内被分配时,所述依赖服务通过分配的线程资源向业务逻辑响应用户请求。
与相关技术相比,本发明实施例技术方案包括:为各依赖服务分配相互隔离的线程资源;各依赖服务在分配的线程资源上进行用户请求的响应处理。本发明实施例通过为各依赖服务分配相互隔离的线程资源,避免了服务雪崩,提升了网站运行的稳定性。
图8为本发明另一实施例实现服务降级的方法的流程图,如图8所示,包括:
步骤800、确定分配给业务逻辑的线程;
步骤801、根据确定的分配给业务逻辑的线程,为各依赖服务分配相互隔离的线程资源;
可选的,本发明实施例为各依赖服务分配相互隔离的线程资源的步骤包括:
为业务逻辑依赖的每一个所述依赖服务分配独立的线程池,以使该依赖服务获得与其他依赖服务相互隔离的线程资源;或,
为业务逻辑依赖的每一个所述依赖服务通过信号量分配线程资源,以使该依赖服务获得与其他依赖服务相互隔离的资源。
需要说明的是,对于一个业务逻辑依赖的依赖服务,可以通过线程池或信号量的方式分配线程资源;当然,对于一个业务逻辑依赖的依赖服务,可以只通过线程池为每一个依赖服务分配相应的线程资源,也可以只通过信号量为每一个依赖服务分配相应的线程资源。本发明实施例通过线程池为各依赖分配线程资源时,如果业务逻辑为商品详情服务,依赖服务包括:商品服务、价格服务、商品评论服务、推荐服务;其中,分配给业务逻辑的线程个数为100,本发明实施例为商品服务、价格服务、商品评论服务和推荐服务分别建立对应的线程池后,根据依赖服务的信息量和访问频率,为商品服务对应的线程池分配40个线程,为价格服务对应的线程池分配20个线程,为商品评价服务对应的线程池分配20个线程,为推荐服务对应的线程池分配剩余的20个线程;本发明实施例也可以将分配给业务逻辑的部分线程进行预留处理,根据各依赖服务的信息量和访问频率进行再分配,还可以对已经分配的线程进行调整。将线程分配至各线程池的方法为相关技术中已有的实现方法,在此不做赘述。本发明实施例还可以通过线程池和信号量为依赖服务分配线程资源,假设业务逻辑为商品详情服务,依赖服务包括:商品服务、价格服务、商品评论服务、推荐服务;其中,分配给业务逻辑的线程个数为100,本发明实施例为商品服务、价格服务、商品评论服务和推荐服务分别建立对应的线程池后,根据依赖服务的信息量和访问频率,为商品服务对应的线程池分配40个线程,为价格服务对应的线程池分配20个线程,为商品评价服务对应的线程池分配20个线程,推荐服务通过信号量方式分配线程资源,由于业务逻辑还有20个线程未被分配,本发明实施例可以设置信号量的初始值为20,当接收到用户请求时,如果信号量取值大于0,则对信号量作减一处理后,为用户请求分配线程,通过分配的线程直接访问启动的依赖服务的客户端,以进行响应处理,完成响应处理后,对信号量进行加一处理;如果信号量小于0,则用户请求无法响应,可以通过向业务逻辑反馈第三预设信息,实现友好提示处理;这里,通过信号量方式分配线程后,利用通过信号量分配的线程进行响应处理可以采用相关技术中已有的实现方式实现。
可选的,本发明实施例为业务逻辑依赖的每一个依赖服务分配独立的线程池的步骤包括:
将分配给业务逻辑的线程资源,按照预设策略为各依赖服务对应的线程池分别分配相应个数的线程。
步骤802、各依赖服务在分配的线程资源上进行用户请求的响应处理。
需要说明的是,业务逻辑和依赖服务为本领域技术人员公知的定义,其中,业务是指一个实体单元向另一个实体单元提供的服务;逻辑是指根据已有的信息推出合理的结论的规律;业务逻辑是指一个实体单元为了向另一个实体单元提供服务,应该具备的规则与流程。在软件系统架构中,软件一般分为三个层次:表示层、业务逻辑层和数据访问层;其中,表示层:负责界面和交互;业务逻辑层:负责定义业务逻辑(规则、工作流、数据完整性等),接收来自表示层的用户请求,逻辑判断后,向数据访问层提交请求,并传递数据访问结果,业务逻辑层实际上是一个中间件,起着承上启下的重要作用;数据访问层:负责数据读取;业务逻辑的内容包括四个部分:领域实体:定义了业务中的对象,对象有属性和行为;业务规则:定义了需要完成一个动作,必须满足的条件;数据完整性:某些数据不可少;工作流:定义了领域实体之间的交互关系。本发明实施例依赖服务根据业务逻辑接收到的用户请求进行反馈,通过依赖服务获得呈现用户请求对应的信息。
本发明实施例通过为各依赖服务分配相互隔离的线程资源,避免了服务雪崩,提升了网站运行的稳定性。
可选的,本发明实施例各依赖服务在分配的线程资源上进行用户请求的响应处理的步骤包括:
所述依赖服务对应的线程池中不包含用于进行响应处理的线程资源时,所述依赖服务向业务逻辑反馈第一预设信息;
这里,第一预设信息可以是本领域技术人员根据依赖服务的内容设定的友好提示界面,例如、依赖服务为商品服务时,向用户显示排队中、或访问无响应、或访问错误的提示。
所述依赖服务对应的线程池中包含用于进行响应处理的线程资源,且线程资源在第一预设时长内被分配时,所述依赖服务通过分配的线程资源向业务逻辑响应用户请求;
所述依赖服务对应的线程池中包含用于进行响应处理的线程资源,但线程资源在第一预设时长内未被分配时,向业务逻辑反馈第二预设信息;
这里,第二预设信息可以是本领域技术人员根据依赖服务的内容设定的友好提示界面,例如、依赖服务为商品服务时,向用户显示访问超时,请稍后重试的友好提示信息。
需要说明的是,按照相关技术的处理流程,为依赖服务分配线程资源后,线程会启动与依赖服务通讯的客户端,用户请求通过启动的客户端进行响应处理。
可选的,本发明实施例处理器用于执行存储器中存储的向业务逻辑反馈第二预设信息后,处理器还用于执行存储器中存储的:线程资源在第二预设时长内被分配时,所述依赖服务通过分配的线程资源向业务逻辑响应用户请求。
与相关技术相比,本发明实施例技术方案包括:为各依赖服务分配相互隔离的线程资源;各依赖服务在分配的线程资源上进行用户请求的响应处理。本发明实施例通过为各依赖服务分配相互隔离的线程资源,避免了服务雪崩,提升了网站运行的稳定性。
图9为本发明实施例实现服务降级的设备的结构框图,如图9所示,设备包括处理器、存储器及通信总线;
所述通信总线用于实现处理器和存储器之间的连接通信;
所述处理器用于执行存储器中存储的服务降级程序,以实现以下步骤:
为各依赖服务分配相互隔离的线程资源;
各依赖服务在分配的线程资源上进行用户请求的响应处理。
需要说明的是,本发明实施例的设备可以是应用服务器。服务器包括:输入输出总线、处理器、存储器、内存和通信装置;其中,
输入输出总线分别与自身所属的服务器的其它部件(处理器、存储器、内存和通信装置)连接,并且为其它部件提供传送线路。
处理器通常控制自身所属的服务器的总体操作。例如,处理器执行计算和确认等操作。其中,处理器可以是中央处理器(CPU)。
通信装置,通常包括一个或多个组件,其允许自身所属的服务器与无线通信系统或网络之间的无线电通信。
存储器存储处理器可读、处理器可执行的软件代码,其包含用于控制处理器执行本文描述的功能的指令(即软件执行功能)。
需要说明的是,业务逻辑和依赖服务为本领域技术人员公知的定义,其中,业务是指一个实体单元向另一个实体单元提供的服务;逻辑是指根据已有的信息推出合理的结论的规律;业务逻辑是指一个实体单元为了向另一个实体单元提供服务,应该具备的规则与流程。在软件系统架构中,软件一般分为三个层次:表示层、业务逻辑层和数据访问层;其中,表示层:负责界面和交互;业务逻辑层:负责定义业务逻辑(规则、工作流、数据完整性等),接收来自表示层的用户请求,逻辑判断后,向数据访问层提交请求,并传递数据访问结果,业务逻辑层实际上是一个中间件,起着承上启下的重要作用;数据访问层:负责数据读取;业务逻辑的内容包括四个部分:领域实体:定义了业务中的对象,对象有属性和行为;业务规则:定义了需要完成一个动作,必须满足的条件;数据完整性:某些数据不可少;工作流:定义了领域实体之间的交互关系。本发明实施例依赖服务根据业务逻辑接收到的用户请求进行反馈,通过依赖服务获得呈现用户请求对应的信息。
本发明实施例通过为各依赖服务分配相互隔离的线程资源,避免了服务雪崩,提升了网站运行的稳定性。
可选的,本发明实施例处理器用于执行存储器中存储的为各依赖服务分配相互隔离的线程资源包括:
为业务逻辑依赖的每一个所述依赖服务分配独立的线程池,以使该依赖服务获得与其他依赖服务相互隔离的线程资源;或,
为业务逻辑依赖的每一个所述依赖服务通过信号量分配线程资源,以使该依赖服务获得与其他依赖服务相互隔离的资源。
需要说明的是,对于一个业务逻辑依赖的依赖服务,可以通过线程池或信号量的方式分配线程资源;当然,对于一个业务逻辑依赖的依赖服务,可以只通过线程池为每一个依赖服务分配相应的线程资源,也可以只通过信号量为每一个依赖服务分配相应的线程资源。本发明实施例通过线程池为各依赖分配线程资源时,如果业务逻辑为商品详情服务,依赖服务包括:商品服务、价格服务、商品评论服务、推荐服务;其中,分配给业务逻辑的线程个数为100,本发明实施例为商品服务、价格服务、商品评论服务和推荐服务分别建立对应的线程池后,根据依赖服务的信息量和访问频率,为商品服务对应的线程池分配40个线程,为价格服务对应的线程池分配20个线程,为商品评价服务对应的线程池分配20个线程,为推荐服务对应的线程池分配剩余的20个线程;本发明实施例也可以将分配给业务逻辑的部分线程进行预留处理,根据各依赖服务的信息量和访问频率进行再分配,还可以对已经分配的线程进行调整。将线程分配至各线程池的方法为相关技术中已有的实现方法,在此不做赘述。本发明实施例还可以通过线程池和信号量为依赖服务分配线程资源,假设业务逻辑为商品详情服务,依赖服务包括:商品服务、价格服务、商品评论服务、推荐服务;其中,分配给业务逻辑的线程个数为100,本发明实施例为商品服务、价格服务、商品评论服务和推荐服务分别建立对应的线程池后,根据依赖服务的信息量和访问频率,为商品服务对应的线程池分配40个线程,为价格服务对应的线程池分配20个线程,为商品评价服务对应的线程池分配20个线程,推荐服务通过信号量方式分配线程资源,由于业务逻辑还有20个线程未被分配,本发明实施例可以设置信号量的初始值为20,当接收到用户请求时,如果信号量取值大于0,则对信号量作减一处理后,为用户请求分配线程,通过分配的线程直接访问启动的依赖服务的客户端,以进行响应处理,完成响应处理后,对信号量进行加一处理;如果信号量小于0,则用户请求无法响应,可以通过向业务逻辑反馈第三预设信息,实现友好提示处理;这里,通过信号量方式分配线程后,利用通过信号量分配的线程进行响应处理可以采用相关技术中已有的实现方式实现。
可选的,本发明实施例处理器用于执行存储器中存储的为业务逻辑依赖的每一个依赖服务分配独立的线程池包括:
将分配给业务逻辑的线程资源,按照预设策略为各依赖服务对应的线程池分别分配相应个数的线程。
可选的,本发明实施例处理器用于执行存储器中存储的各依赖服务在分配的线程资源上进行用户请求的响应处理包括:
所述依赖服务对应的线程池中不包含用于进行响应处理的线程资源时,所述依赖服务向业务逻辑反馈第一预设信息;
这里,第一预设信息可以是本领域技术人员根据依赖服务的内容设定的友好提示界面,例如、依赖服务为商品服务时,向用户显示排队中、或访问无响应、或访问错误的提示。
所述依赖服务对应的线程池中包含用于进行响应处理的线程资源,且线程资源在第一预设时长内被分配时,所述依赖服务通过分配的线程资源向业务逻辑响应用户请求;
所述依赖服务对应的线程池中包含用于进行响应处理的线程资源,但线程资源在第一预设时长内未被分配时,向业务逻辑反馈第二预设信息;
这里,第二预设信息可以是本领域技术人员根据依赖服务的内容设定的友好提示界面,例如、依赖服务为商品服务时,向用户显示访问超时,请稍后重试的友好提示信息。
需要说明的是,按照相关技术的处理流程,为依赖服务分配线程资源后,线程会启动与依赖服务通讯的客户端,用户请求通过启动的客户端进行响应处理。
可选的,本发明实施例处理器用于执行存储器中存储的向业务逻辑反馈第二预设信息后,处理器还用于执行存储器中存储的:线程资源在第二预设时长内被分配时,所述依赖服务通过分配的线程资源向业务逻辑响应用户请求。
与相关技术相比,本发明实施例技术方案包括:为各依赖服务分配相互隔离的线程资源;各依赖服务在分配的线程资源上进行用户请求的响应处理。本发明实施例通过为各依赖服务分配相互隔离的线程资源,避免了服务雪崩,提升了网站运行的稳定性。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行以实现:
为各依赖服务分配相互隔离的线程资源;
各依赖服务在分配的线程资源上进行用户请求的响应处理。
本发明实施例通过为各依赖服务分配相互隔离的线程资源,避免了服务雪崩,提升了网站运行的稳定性。
可选的,本发明实施例处理器用于执行为各依赖服务分配相互隔离的线程资源包括:
为业务逻辑依赖的每一个所述依赖服务分配独立的线程池,以使该依赖服务获得与其他依赖服务相互隔离的线程资源;或,
为业务逻辑依赖的每一个所述依赖服务通过信号量分配线程资源,以使该依赖服务获得与其他依赖服务相互隔离的资源。
需要说明的是,对于一个业务逻辑依赖的依赖服务,可以通过线程池或信号量的方式分配线程资源;当然,对于一个业务逻辑依赖的依赖服务,可以只通过线程池为每一个依赖服务分配相应的线程资源,也可以只通过信号量为每一个依赖服务分配相应的线程资源。本发明实施例通过线程池为各依赖分配线程资源时,如果业务逻辑为商品详情服务,依赖服务包括:商品服务、价格服务、商品评论服务、推荐服务;其中,分配给业务逻辑的线程个数为100,本发明实施例为商品服务、价格服务、商品评论服务和推荐服务分别建立对应的线程池后,根据依赖服务的信息量和访问频率,为商品服务对应的线程池分配40个线程,为价格服务对应的线程池分配20个线程,为商品评价服务对应的线程池分配20个线程,为推荐服务对应的线程池分配剩余的20个线程;本发明实施例也可以将分配给业务逻辑的部分线程进行预留处理,根据各依赖服务的信息量和访问频率进行再分配,还可以对已经分配的线程进行调整。将线程分配至各线程池的方法为相关技术中已有的实现方法,在此不做赘述。本发明实施例还可以通过线程池和信号量为依赖服务分配线程资源,假设业务逻辑为商品详情服务,依赖服务包括:商品服务、价格服务、商品评论服务、推荐服务;其中,分配给业务逻辑的线程个数为100,本发明实施例为商品服务、价格服务、商品评论服务和推荐服务分别建立对应的线程池后,根据依赖服务的信息量和访问频率,为商品服务对应的线程池分配40个线程,为价格服务对应的线程池分配20个线程,为商品评价服务对应的线程池分配20个线程,推荐服务通过信号量方式分配线程资源,由于业务逻辑还有20个线程未被分配,本发明实施例可以设置信号量的初始值为20,当接收到用户请求时,如果信号量取值大于0,则对信号量作减一处理后,为用户请求分配线程,通过分配的线程直接访问启动的依赖服务的客户端,以进行响应处理,完成响应处理后,对信号量进行加一处理;如果信号量小于0,则用户请求无法响应,可以通过向业务逻辑反馈第三预设信息,实现友好提示处理;这里,通过信号量方式分配线程后,利用通过信号量分配的线程进行响应处理可以采用相关技术中已有的实现方式实现。
可选的,本发明实施例处理器用于执行为业务逻辑依赖的每一个依赖服务分配独立的线程池包括:
将分配给业务逻辑的线程资源,按照预设策略为各依赖服务对应的线程池分别分配相应个数的线程。
可选的,本发明实施例处理器用于执行存储器中存储的各依赖服务在分配的线程资源上进行用户请求的响应处理包括:
所述依赖服务对应的线程池中不包含用于进行响应处理的线程资源时,所述依赖服务向业务逻辑反馈第一预设信息;
这里,第一预设信息可以是本领域技术人员根据依赖服务的内容设定的友好提示界面,例如、依赖服务为商品服务时,向用户显示排队中、或访问无响应、或访问错误的提示。
所述依赖服务对应的线程池中包含用于进行响应处理的线程资源,且线程资源在第一预设时长内被分配时,所述依赖服务通过分配的线程资源向业务逻辑响应用户请求;
所述依赖服务对应的线程池中包含用于进行响应处理的线程资源,但线程资源在第一预设时长内未被分配时,向业务逻辑反馈第二预设信息;
这里,第二预设信息可以是本领域技术人员根据依赖服务的内容设定的友好提示界面,例如、依赖服务为商品服务时,向用户显示访问超时,请稍后重试的友好提示信息。
需要说明的是,按照相关技术的处理流程,为依赖服务分配线程资源后,线程会启动与依赖服务通讯的客户端,用户请求通过启动的客户端进行响应处理。
可选的,本发明实施例处理器用于执行向业务逻辑反馈第二预设信息后,处理器还用于执行:线程资源在第二预设时长内被分配时,所述依赖服务通过分配的线程资源向业务逻辑响应用户请求。
与相关技术相比,本发明实施例技术方案包括:为各依赖服务分配相互隔离的线程资源;各依赖服务在分配的线程资源上进行用户请求的响应处理。本发明实施例通过为各依赖服务分配相互隔离的线程资源,避免了服务雪崩,提升了网站运行的稳定性。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (10)

1.一种实现服务降级的方法,其特征在于,包括:
为各依赖服务分配相互隔离的线程资源;
所述各依赖服务在分配的线程资源上进行用户请求的响应处理。
2.根据权利要求1所述的方法,其特征在于,所述为各依赖服务分配相互隔离的线程资源的步骤包括:
为业务逻辑依赖的每一个所述依赖服务分配独立的线程池,以使该依赖服务获得与其他依赖服务相互隔离的线程资源;或,
为业务逻辑依赖的每一个所述依赖服务通过信号量分配线程资源,以使该依赖服务获得与其他依赖服务相互隔离的资源。
3.根据权利要求1所述的方法,其特征在于,所述为业务逻辑依赖的每一个依赖服务分配独立的线程池的步骤包括:将分配给业务逻辑的线程资源,按照预设策略为所述各依赖服务对应的线程池分别分配相应个数的线程。
4.根据权利要求1~3任一项所述的方法,其特征在于,所述各依赖服务在分配的线程资源上进行用户请求的响应处理的步骤包括:
所述依赖服务对应的线程池中不包含用于进行响应处理的线程资源时,所述依赖服务向业务逻辑反馈第一预设信息;
所述依赖服务对应的线程池中包含用于进行响应处理的线程资源,且线程资源在第一预设时长内被分配时,所述依赖服务通过分配的线程资源向业务逻辑响应用户请求;
所述依赖服务对应的线程池中包含用于进行响应处理的线程资源,但线程资源在第一预设时长内未被分配时,向业务逻辑反馈第二预设信息。
5.根据权利要求4所述的方法,其特征在于,向业务逻辑反馈第二预设信息后,所述方法还包括:
所述线程资源在第二预设时长内被分配时,所述依赖服务通过分配的线程资源向业务逻辑响应用户请求。
6.一种实现服务降级的设备,其特征在于,所述设备包括处理器、存储器及通信总线;
所述通信总线用于实现处理器和存储器之间的连接通信;
所述处理器用于执行存储器中存储的服务降级程序,以实现以下步骤:
为各依赖服务分配相互隔离的线程资源;
各依赖服务在分配的线程资源上进行用户请求的响应处理。
7.根据权利要求6所述的设备,其特征在于,所述处理器用于执行存储器中存储的为各依赖服务分配相互隔离的线程资源包括:
为业务逻辑依赖的每一个所述依赖服务分配独立的线程池,以使该依赖服务获得与其他依赖服务相互隔离的线程资源;或,
为业务逻辑依赖的每一个所述依赖服务通过信号量分配线程资源,以使该依赖服务获得与其他依赖服务相互隔离的资源。
8.根据权利要求6所述的设备,其特征在于,所述处理器用于执行存储器中存储的为业务逻辑依赖的每一个依赖服务分配独立的线程池包括:
将分配给业务逻辑的线程资源,按照预设策略为所述各依赖服务对应的线程池分别分配相应个数的线程。
9.根据权利要求6~8任一项所述的设备,其特征在于,所述处理器用于执行存储器中存储的各依赖服务在分配的线程资源上进行用户请求的响应处理包括:
所述依赖服务对应的线程池中不包含用于进行响应处理的线程资源时,所述依赖服务向业务逻辑反馈第一预设信息;
所述依赖服务对应的线程池中包含用于进行响应处理的线程资源,且线程资源在第一预设时长内被分配时,所述依赖服务通过分配的线程资源向业务逻辑响应用户请求;
所述依赖服务对应的线程池中包含用于进行响应处理的线程资源,但线程资源在第一预设时长内未被分配时,向业务逻辑反馈第二预设信息。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行以实现如权利要求1~5任一项所述的服务降级的方法。
CN201710507677.8A 2017-06-28 2017-06-28 一种实现服务降级的方法、设备及计算机可读存储介质 Pending CN107632889A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710507677.8A CN107632889A (zh) 2017-06-28 2017-06-28 一种实现服务降级的方法、设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710507677.8A CN107632889A (zh) 2017-06-28 2017-06-28 一种实现服务降级的方法、设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN107632889A true CN107632889A (zh) 2018-01-26

Family

ID=61099269

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710507677.8A Pending CN107632889A (zh) 2017-06-28 2017-06-28 一种实现服务降级的方法、设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN107632889A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108958940A (zh) * 2018-07-09 2018-12-07 苏州浪潮智能软件有限公司 一种计算机处理方法及装置
CN109032783A (zh) * 2018-08-01 2018-12-18 杭州朗和科技有限公司 信息交互方法、介质、装置和计算设备
CN109814994A (zh) * 2019-01-03 2019-05-28 福建天泉教育科技有限公司 一种动态调度线程池的方法及终端
CN109831536A (zh) * 2019-03-22 2019-05-31 成都六四三六五科技有限公司 一种前端负载均衡服务降级系统及方法
CN110231981A (zh) * 2018-03-06 2019-09-13 华为软件技术有限公司 服务调用方法及装置
CN110287013A (zh) * 2019-06-26 2019-09-27 四川长虹电器股份有限公司 基于java多线程技术解决物联云端服务雪崩效应的方法
CN111262898A (zh) * 2018-12-01 2020-06-09 阿里巴巴集团控股有限公司 服务降级处理方法、装置及电子设备
CN113157436A (zh) * 2021-03-02 2021-07-23 重庆度小满优扬科技有限公司 资源请求分发方法、装置、服务器和存储介质
CN113225394A (zh) * 2021-04-30 2021-08-06 中核武汉核电运行技术股份有限公司 一种基于容器集群的api网关管理系统
CN116820786A (zh) * 2023-08-31 2023-09-29 本原数据(北京)信息技术有限公司 数据库的数据访问方法和装置、电子设备、存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722417A (zh) * 2012-06-07 2012-10-10 腾讯科技(深圳)有限公司 一种扫描任务的分配方法和装置
CN106095585A (zh) * 2016-06-22 2016-11-09 中国建设银行股份有限公司 任务请求处理方法、装置和企业信息系统
CN106325989A (zh) * 2016-08-17 2017-01-11 东软集团股份有限公司 任务执行方法及装置
CN106548262A (zh) * 2015-09-21 2017-03-29 阿里巴巴集团控股有限公司 用于处理任务的资源的调度方法、装置和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722417A (zh) * 2012-06-07 2012-10-10 腾讯科技(深圳)有限公司 一种扫描任务的分配方法和装置
CN106548262A (zh) * 2015-09-21 2017-03-29 阿里巴巴集团控股有限公司 用于处理任务的资源的调度方法、装置和系统
CN106095585A (zh) * 2016-06-22 2016-11-09 中国建设银行股份有限公司 任务请求处理方法、装置和企业信息系统
CN106325989A (zh) * 2016-08-17 2017-01-11 东软集团股份有限公司 任务执行方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
YBAK: "防雪崩利器:熔断器Hystrix的原理与使用", 《OSCHINA》 *
高广超: "使用Hystrix实现自动降级与依赖隔离[微服务]", 《简书》 *

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110231981A (zh) * 2018-03-06 2019-09-13 华为软件技术有限公司 服务调用方法及装置
CN110231981B (zh) * 2018-03-06 2022-12-13 华为技术有限公司 服务调用方法及装置
CN108958940A (zh) * 2018-07-09 2018-12-07 苏州浪潮智能软件有限公司 一种计算机处理方法及装置
CN109032783B (zh) * 2018-08-01 2021-06-29 杭州朗和科技有限公司 信息交互方法、介质、装置和计算设备
CN109032783A (zh) * 2018-08-01 2018-12-18 杭州朗和科技有限公司 信息交互方法、介质、装置和计算设备
CN111262898A (zh) * 2018-12-01 2020-06-09 阿里巴巴集团控股有限公司 服务降级处理方法、装置及电子设备
CN111262898B (zh) * 2018-12-01 2022-06-14 阿里巴巴集团控股有限公司 服务降级处理方法、装置及电子设备
CN109814994A (zh) * 2019-01-03 2019-05-28 福建天泉教育科技有限公司 一种动态调度线程池的方法及终端
CN109814994B (zh) * 2019-01-03 2021-10-08 福建天泉教育科技有限公司 一种动态调度线程池的方法及终端
CN109831536B (zh) * 2019-03-22 2021-05-18 成都律图科技有限公司 一种前端负载均衡服务降级系统及方法
CN109831536A (zh) * 2019-03-22 2019-05-31 成都六四三六五科技有限公司 一种前端负载均衡服务降级系统及方法
CN110287013A (zh) * 2019-06-26 2019-09-27 四川长虹电器股份有限公司 基于java多线程技术解决物联云端服务雪崩效应的方法
CN113157436A (zh) * 2021-03-02 2021-07-23 重庆度小满优扬科技有限公司 资源请求分发方法、装置、服务器和存储介质
CN113225394A (zh) * 2021-04-30 2021-08-06 中核武汉核电运行技术股份有限公司 一种基于容器集群的api网关管理系统
CN113225394B (zh) * 2021-04-30 2022-07-15 中核武汉核电运行技术股份有限公司 一种基于容器集群的api网关管理系统
CN116820786A (zh) * 2023-08-31 2023-09-29 本原数据(北京)信息技术有限公司 数据库的数据访问方法和装置、电子设备、存储介质
CN116820786B (zh) * 2023-08-31 2023-12-19 本原数据(北京)信息技术有限公司 数据库的数据访问方法和装置、电子设备、存储介质

Similar Documents

Publication Publication Date Title
CN107632889A (zh) 一种实现服务降级的方法、设备及计算机可读存储介质
CN104753911B (zh) 一种基于社交应用的信息处理方法、相关装置及系统
CN107770758A (zh) 蓝牙音箱的蓝牙回连方法、蓝牙音箱及存储介质
US20100165396A1 (en) Information communication system, user terminal and information communication method
CN108022169A (zh) 通过网站对接购买保险的方法、装置、设备及介质
CN109218390B (zh) 用户筛选方法及装置
CN108111554B (zh) 一种访问队列的控制方法及装置
CN103203100A (zh) 非暂时性计算机可读存储介质、游戏系统以及信息处理设备
CN109347722A (zh) 交互系统、方法、客户端及后台服务器
CN103729771A (zh) 用户信息展示方法和系统
CN108335093A (zh) 转账控制方法、系统、终端、计算机可读存储介质
CN106231435A (zh) 网络直播间内赠送电子赠品的方法、装置和终端设备
CN110351226A (zh) 信息交互方法、装置、用户终端及可读存储介质
CN105897550A (zh) 一种推送离线消息的方法及设备
CN108665321A (zh) 高粘性用户流失预测方法、装置及计算机可读存储介质
CN106648688A (zh) 一种信息展示方法和装置
CN107451227A (zh) 分页查询方法及装置
CN104978212B (zh) 一种未知crash上报方法和装置
CN114222175A (zh) 弹幕显示方法、装置、终端设备、服务器及介质
CN111191162B (zh) 一种数据处理方法以及设备
CN106355440A (zh) 群组内赠送电子赠品的控制方法和装置
CN107346197A (zh) 一种信息显示方法及装置
CN107733777B (zh) 第三方信息通知方法、系统及计算机可读存储介质
CN109304035A (zh) 游戏时长的获取方法、装置、终端设备及存储介质
CN108011964A (zh) 图片上传方法、装置、电子终端及可读存储介质

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

Application publication date: 20180126

RJ01 Rejection of invention patent application after publication