CN111475306B - 微服务节点、异步任务处理方法、系统和存储介质 - Google Patents
微服务节点、异步任务处理方法、系统和存储介质 Download PDFInfo
- Publication number
- CN111475306B CN111475306B CN202010248605.8A CN202010248605A CN111475306B CN 111475306 B CN111475306 B CN 111475306B CN 202010248605 A CN202010248605 A CN 202010248605A CN 111475306 B CN111475306 B CN 111475306B
- Authority
- CN
- China
- Prior art keywords
- task
- asynchronous
- processed
- asynchronous task
- execution result
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种微服务节点、异步任务处理方法、系统和存储介质。本发明通过微服务节点实时或定时在预先设置的异步任务池中查询匹配的异步任务,在查询到匹配的异步任务时,加载并执行所述匹配的异步任务,并将执行结果保存至预先设置的异步结果通知池,从而实现将微服务系统中所有待处理的异步任务分发到多个微服务节点中执行,避免了因某一个微服务节点执行耗时的任务而造成的进程阻塞,提高了微服务系统的任务处理效率。
Description
技术领域
本发明涉及微服务技术领域,特别涉及一种微服务节点、异步任务处理方法、系统和存储介质。
背景技术
目前,微服务系统由多个微服务节点构成,一个微服务节点一般完成某个特定的功能,为了完成一项业务,通常需要将一项业务拆分成多个任务,并逐一调用微服务节点处理对应的任务,且只有在当前调用的微服务节点执行完其任务后,才可继续调用下一个微服务节点执行下一个任务。当一微服务节点接收到一非常耗时的任务(例如,一个聊天服务器发送广播、一个网站服务器发送邮件等)时,往往会阻塞当前进程,导致系统响应变慢。
因此,如何提高微服务系统的任务处理效率成为一个亟待解决的问题。
发明内容
本发明的主要目的是提供一种微服务节点、异步任务处理方法、系统和存储介质,旨在提高微服务系统的任务处理效率。
为实现上述目的,本发明提出一种微服务节点,所述微服务节点包括存储器和处理器,所述存储器上存储有异步任务处理程序,所述异步任务处理程序被所述处理器执行时实现如下步骤:
根据预先确定的第一匹配规则,实时或定时在预先设置的异步任务池中查询匹配的异步任务;所述异步任务池用于存储所有待处理的异步任务;
每当查询到匹配的异步任务时,加载并执行所述匹配的异步任务,并将执行结果保存至预先设置的异步结果通知池。
优选地,所述处理器执行所述异步任务处理程序,还实现如下步骤:
查询步骤:根据预先确定的第二匹配规则,实时或定时在所述异步结果通知池中查询匹配的执行结果;
确定步骤:每当查询到匹配的执行结果时,将所述匹配的执行结果对应的异步任务作为第一待处理任务,根据所述第一待处理任务的预设配置信息,确定是否需要发送所述第一待处理任务的执行结果;
发送步骤:当确定需要发送时,将所述第一待处理任务对应的执行结果发送至预设位置。
优选地,所述处理器执行所述异步任务处理程序,在所述查询步骤之后,还实现以下步骤:
每当查询到匹配的执行结果时,判断所述匹配的执行结果是否满足预设条件;
当满足时,将所述匹配的执行结果对应的异步任务作为第二待处理任务,根据所述第二待处理任务的预设配置信息以及预先存储的被执行计数,确定是否需要重新执行所述第二待处理任务;
当确定需要重新执行时,将所述第二待处理任务作为新的异步任务添加至所述异步任务池中。
优选地,其特征在于,所述处理器执行所述异步任务处理程序,还实现如下步骤:
当接收到待处理的异步任务时,将所述异步任务添加至所述异步任务池中。
此外,为实现上述目的,本发明还提出一种异步任务处理方法,该方法适用于微服务节点,该方法包括步骤:
根据预先确定的第一匹配规则,实时或定时在预先设置的异步任务池中查询匹配的异步任务;所述异步任务池用于存储所有待处理的异步任务;
每当查询到匹配的异步任务时,加载并执行所述匹配的异步任务,并将执行结果保存至预先设置的异步结果通知池。
优选地,该方法还包括:
查询步骤:根据预先确定的第二匹配规则,实时或定时在所述异步结果通知池中查询匹配的执行结果;
确定步骤:每当查询到匹配的执行结果时,将所述匹配的执行结果对应的异步任务作为第一待处理任务,根据所述第一待处理任务的预设配置信息,确定是否需要发送所述第一待处理任务的执行结果;
发送步骤:当确定需要发送时,将所述第一待处理任务对应的执行结果发送至预设位置。
优选地,在所述查询步骤之后,该方法还包括:
每当查询到匹配的执行结果时,判断所述匹配的执行结果是否满足预设条件;
当满足时,将所述匹配的执行结果对应的异步任务作为第二待处理任务,根据所述第二待处理任务的预设配置信息以及预先存储的被执行计数,确定是否需要重新执行所述第二待处理任务;
当确定需要重新执行时,将所述第二待处理任务作为新的异步任务添加至所述异步任务池中。
优选地,该方法还包括:
当接收到待处理的异步任务时,将所述异步任务添加至所述异步任务池中。
此外,为实现上述目的,本发明还提出一种微服务系统,所述微服务系统包括多个微服务节点,所述微服务节点包括存储器和处理器,所述存储器上存储有异步任务处理程序,所述异步任务处理程序可被所述处理器执行,以使所述处理器执行如上述任一项所述的异步任务处理方法的步骤。
此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有异步任务处理程序,所述异步任务处理程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述任一项所述的异步任务处理方法的步骤。
本发明通过微服务节点实时或定时在预先设置的异步任务池中查询匹配的异步任务,在查询到匹配的异步任务时,加载并执行所述匹配的异步任务,并将执行结果保存至预先设置的异步结果通知池,从而实现将微服务系统中所有待处理的异步任务分发到多个微服务节点中执行,避免了因某一个微服务节点执行耗时的任务而造成的进程阻塞,提高了微服务系统的任务处理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明各个实施例一可选的应用环境示意图;
图2为本发明异步任务处理程序各个实施例的运行环境示意图;
图3为本发明异步任务处理程序第一实施例的程序模块图;
图4为本发明异步任务处理程序第二实施例的程序模块图;
图5为本发明异步任务处理方法第一实施例的流程示意图;
图6为本发明异步任务处理方法第二实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
参阅图1所示,是本发明各个实施例一可选的应用环境示意图。
在本实施例中,本发明可应用于包括,但不仅限于,多个微服务节点1、客户端2、接入网关3的应用环境中。其中,所述接入网关3分别与客户端2及各个微服务节点1通信连接,作为客户端2访问微服务节点1的“桥梁”,具体包括会话鉴权、灰度路由、流量分发、微服务暴露等功能。在一些应用场景下,也可包括多个接入网关3,每个接入网关3与一个对应的微服务集群通信连接,所述微服务集群包括至少一个微服务节点1。其中,微服务集群的划分方法包括:将同一区域内的微服务节点1按照业务类型进行划分,形成多个微服务集群。
至此,己经详细介绍了本发明各个实施例的应用环境。下面,将基于上述应用环境和相关设备,提出本发明的各个实施例。
本发明提出一种异步任务处理程序。
请参阅图2,是本发明异步任务处理程序10各个实施例的运行环境示意图。
在本实施例中,异步任务处理程序10安装并运行于微服务节点1中。微服务节点1可以是桌上型计算机、笔记本、掌上电脑及服务器等计算设备。该微服务节点1可包括,但不仅限于,通过程序总线相互通信的存储器11、处理器12。图2仅示出了具有组件11、12的微服务节点1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
存储器11在一些实施例中可以是微服务节点1的内部存储单元,例如该微服务节点1的硬盘或内存。存储器11在另一些实施例中也可以是微服务节点1的外部存储设备,例如微服务节点1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括微服务节点1的内部存储单元也包括外部存储设备。存储器11用于存储安装于微服务节点1的应用软件及各类数据,例如异步任务处理程序10的程序代码等。存储器11还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行异步任务处理程序10等。
请参阅图3,是本发明异步任务处理程序10第一实施例的程序模块图。在本实施例中,异步任务处理程序10可以被分割成一个或多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行,以完成本发明。例如,在图3中,异步任务处理程序10可以被分割成第一查询模块101、执行模块102。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述异步任务处理程序10在微服务节点1中的执行过程,其中:
第一查询模块101,用于根据预先确定的第一匹配规则,实时或定时在预先设置的异步任务池中查询匹配的异步任务。
本实施例中,所述异步任务池用于存储待处理的异步任务,该待处理的异步任务是由客户端2或其他设备发送至第一查询模块101,再由第一查询模块101添加至异步任务池中的。例如,当接收到一异步任务时,根据预先确定的分配规则,为所述异步任务分配一任务值(所述任务值位于预设数值范围内),再将所述异步任务添加至所述异步任务池中,且保存所述异步任务的任务值保存至异步任务池(所述异步任务池是一预设的存储空间)中。其中,所述分配规则包括如下方案:
方案一:
在所述预设数值范围内随机选择一数值作为所述异步任务的任务值。
方案二:
确定所述异步任务的流水号及任务类型,根据预先确定的任务类型与任务值计算公式之间的映射关系,确定所述异步任务对应的任务值计算公式,将所述异步任务的流水号输入至确定的所述任务值计算公式中,得到所述异步任务的任务值。其中,任务值计算公式可根据具体的应用场景设置,例如,任务值计算公式的设置方法可包括:预先根据各个任务类型的权重值设置对应的任务值计算公式,如,任务值=任务类型的权重值×流水号。
本实施例中,第一查询模块101可预先启动第一线程,第一线程根据预先确定的第一匹配规则,实时或定时在预先设置的异步任务池中查询匹配的异步任务。其中,第一匹配规则包括:
首先,在所述异步任务池中按照预设顺序逐一选择异步任务。其中,所述预设顺序可根据具体的应用场景设置,例如,所述预设顺序可以是异步任务的任务值从小到大的顺序。
每当选择一异步任务时,读取选择的所述异步任务的任务值。
然后,根据预先确定的微服务节点1与预设数值段之间的映射关系,判断选择的所述异步任务的任务值是否在所述微服务节点1对应的预设数值段内,所述预设数值段位于所述预设数值范围内。
接着,当选择的所述异步任务的任务值在所述微服务节点1对应的预设数值段内时,将选择的所述异步任务作为匹配的异步任务,结束流程。
最后,当选择的所述异步任务的任务值不在所述微服务节点1对应的预设数值段内时,判断所述异步任务池中是否存在未被选择过的异步任务,当存在时,返回继续在所述异步任务池中按照预设顺序逐一选择异步任务,当不存在时,结束流程。
执行模块102,用于每当查询到匹配的异步任务时,加载并执行所述匹配的异步任务,并将执行结果保存至预先设置的异步结果通知池(所述异步结果通知池是一预设的存储空间)。
本实施例中,每当第一查询模块101查询到匹配的异步任务时,执行模块102可通过第一线程加载并执行所述匹配的异步任务,并将执行结果保存至预先设置的异步结果通知池。
与现有技术相比,本实施例通过微服务节点1实时或定时在预先设置的异步任务池中查询匹配的异步任务,在查询到匹配的异步任务时,加载并执行所述匹配的异步任务,并将执行结果保存至预先设置的异步结果通知池,从而实现将微服务系统中所有待处理的异步任务分发到多个微服务节点1中执行,避免了因某一个微服务节点1执行耗时的任务而造成的进程阻塞,提高了微服务系统的任务处理效率。
如图4所示,图4为本发明异步任务处理程序10第二实施例的程序模块图。
本实施例在第一实施例的基础上,该程序还包括第二查询模块103、发送模块104,其中:
第二查询模块103,用于根据预先确定的第二匹配规则,实时或定时在所述异步结果通知池中查询匹配的执行结果。
第二查询模块103可预先启动第二线程,第二线程根据预先确定的第二匹配规则,实时或定时在所述异步结果通知池中查询匹配的执行结果。其中,第二匹配规则包括:
从所述异步结果通知池中查找由该微服务节点1完成执行的异步任务对应的异步结果,当查找到时,将查找到的异步结果作为匹配的执行结果。
发送模块104,用于每当查询到匹配的执行结果时,将所述匹配的执行结果对应的异步任务作为第一待处理任务,根据所述第一待处理任务的预设配置信息,确定是否需要发送所述第一待处理任务的执行结果;当确定需要发送时,将所述第一待处理任务对应的执行结果发送至预设位置。
每当第二查询模块103查询到匹配的执行结果时,发送模块104通过第二线程将所述匹配的执行结果对应的异步任务作为第一待处理任务,根据所述第一待处理任务的预设配置信息,确定是否需要发送所述第一待处理任务的执行结果。其中,一异步任务的执行结果是否需要发送可根据具体的应用场景预先进行设置,并将设置的数据保存在该异步任务的预设配置信息中。在确定一匹配的执行结果是否需要发送时,读取该匹配的执行结果对应的第一待处理任务的预设配置信息,通过读取该预设配置信息即可知是否需要发送该执行结果。
当确定需要发送时,发送模块104通过第二线程将该执行结果发送至预设位置。其中,该预设位置可以是客户端2、其他微服务节点1或设备,本发明对此不作限定。
当确定不需要发送时,发送模块104不发送该执行结果。
本实施例微服务节点1通过开启多个线程,分别用于任务执行及执行结果的发送,从而进一步提高了微服务节点1的任务处理效率。
进一步地,本实施例中,异步任务处理程序10还包括判断模块、添加模块(图中未示出):
判断模块,用于每当查询到匹配的执行结果时,判断所述匹配的执行结果是否满足第一预设条件(例如,所述第一预设条件包括执行结果为执行失败);
添加模块,用于当满足时,将所述匹配的执行结果对应的异步任务作为第二待处理任务,根据所述第二待处理任务的预设配置信息以及预先存储的被执行计数,确定是否需要重新执行所述第二待处理任务;当确定需要重新执行时,将所述第二待处理任务作为新的异步任务添加至所述异步任务池中。
本实施例中,每当查询到匹配的执行结果时,判断模块通过第二线程判断所述匹配的执行结果是否满足第一预设条件;满足时,添加模块通过第二线程将所述匹配的执行结果对应的异步任务作为第二待处理任务,根据所述第二待处理任务的预设配置信息以及预先存储的被执行计数,确定是否需要重新执行所述第二待处理任务;当确定需要重新执行时,添加模块通过第二线程将所述第二待处理任务作为新的异步任务添加至所述异步任务池中。其中,异步任务的预设配置信息还包括:重试次数,所述重试次数是指一异步任务首次执行失败后,可重新执行的最大次数。例如,当一异步任务的重试次数为3时,该异步任务在首次执行失败后,最多可再重新执行3次,若重新执行3次后仍失败,则不再重复执行。当一异步任务的重试次数为0时,该异步任务在首次执行失败后,不再重复执行。
所述被执行计数用于计量一异步任务被微服务节点1执行的次数。
所述根据所述第二待处理任务的预设配置信息以及预先存储的被执行计数,确定是否需要重新执行所述第二待处理任务的步骤包括:
读取所述第二待处理任务的预设配置信息,确定所述第二待处理任务的重试次数,计算所述重试次数与所述预先存储的被执行计数之间的差值,当所述差值大于第一预设阈值时,确定需要重新执行所述第二待处理任务,当所述差值小于或等于第一预设阈值时,确定不需要重新执行所述第二待处理任务。例如,一第二待处理任务的被执行计数为1次,重试次数为2次,第一预设阈值为-1,该第二待处理任务的重试次数与被执行计数之间的差值为1,该差值大于第一预设阈值-1,因此,确定该第二待处理任务需要重新执行。
进一步地,在第一、第二实施例的基础上,提出本发明异步任务处理程序10第三实施例,该程序还包括心跳模块,用于:
定时将心跳信息写入预先确定的微服务节点池(所述微服务节点池是一预设的存储空间)。其中,所述心跳信息,又可称心跳消息(Heartbeat Message),是一种发送源发送到接收方的消息,这种消息可以让接收方确定发送源是否以及何时出现故障或终止。
进一步地,本实施例中,该程序还包括主节点判断模块,用于:
根据预先确定的主节点竞争规则,实时或定时判断自身是否满足第二预设条件,当判定自身满足第二预设条件时,将自身标记为主节点。
具体地,所述主节点竞争规则包括:
计算自身发送至所述微服务节点池的第一条心跳信息和最新一条心跳信息之间的时间间隔。
当所述时间间隔小于第二预设阈值(例如,30秒)时,判定自身不满足第二预设条件。
当所述时间间隔大于或等于第二预设阈值时,继续判断自身发送至所述微服务节点池的第一条心跳信息的时间是否早于其他任意一微服务节点发送至所述微服务节点池的第一条心跳信息的时间,若是,则判定自身满足第二预设条件,若否,则判定自身不满足第二预设条件。
进一步地,本实施例中,该程序还包括分配模块,用于:
若自身为主节点,则利用心跳机制,实时或定时识别是否有次节点(次节点为微服务系统中除主节点外的其他微服务节点1)加入或退出,当识别到有次节点加入或退出时,重新为微服务系统中所有微服务节点1(包括主节点及次节点)分配对应的预设数值段,并将微服务系统中各个微服务节点1(包括主节点及次节点)对应的预设数值段保存至微服务节点池。
其中,心跳机制是定时发送一个自定义的结构体(如心跳包、心跳信息),让对方知道自己还活着,以确保连接的有效性的机制。
所述判断次节点是否退出的方法包括:
计算一次节点的最新一条心跳信息的发送时间和当前时间的时间间隔,当一次节点的最新一条心跳信息的发送时间和当前时间的时间间隔大于或等于第二预设阈值(例如,300秒)时,确定所述次节点已退出。
此外,本发明提出一种异步任务处理方法,适用于微服务节点1。
如图5所示,图5为本发明异步任务处理方法第一实施例的流程示意图。
本实施例中,该方法包括:
步骤S10,根据预先确定的第一匹配规则,实时或定时在预先设置的异步任务池中查询匹配的异步任务。
本实施例中,所述异步任务池用于存储待处理的异步任务,该待处理的异步任务是由客户端2或其他设备发送至微服务节点1,再由微服务节点1添加至异步任务池中的。例如,当接收到一异步任务时,根据预先确定的分配规则,为所述异步任务分配一任务值(所述任务值位于预设数值范围内),再将所述异步任务添加至所述异步任务池中,且保存所述异步任务的任务值保存至异步任务池(所述异步任务池是一预设的存储空间)中。其中,所述分配规则包括如下方案:
方案一:
在所述预设数值范围内随机选择一数值作为所述异步任务的任务值。
方案二:
确定所述异步任务的流水号及任务类型,根据预先确定的任务类型与任务值计算公式之间的映射关系,确定所述异步任务对应的任务值计算公式,将所述异步任务的流水号输入至确定的所述任务值计算公式中,得到所述异步任务的任务值。其中,任务值计算公式可根据具体的应用场景设置,例如,任务值计算公式的设置方法可包括:预先根据各个任务类型的权重值设置对应的任务值计算公式,如,任务值=任务类型的权重值×流水号。
本实施例中,微服务节点1可预先启动第一线程,第一线程根据预先确定的第一匹配规则,实时或定时在预先设置的异步任务池中查询匹配的异步任务。其中,第一匹配规则包括步骤S11~S15(图中未示出):
步骤S11,在所述异步任务池中按照预设顺序逐一选择异步任务。
其中,所述预设顺序可根据具体的应用场景设置,例如,所述预设顺序可以是异步任务的任务值从小到大的顺序。
步骤S12,每当选择一异步任务时,读取选择的所述异步任务的任务值。
步骤S13,根据预先确定的微服务节点1与预设数值段之间的映射关系,判断选择的所述异步任务的任务值是否在所述微服务节点1对应的预设数值段内,所述预设数值段位于所述预设数值范围内。
步骤S14,当选择的所述异步任务的任务值在所述微服务节点1对应的预设数值段内时,将选择的所述异步任务作为匹配的异步任务,结束流程。
步骤S15,当选择的所述异步任务的任务值不在所述微服务节点1对应的预设数值段内时,判断所述异步任务池中是否存在未被选择过的异步任务,当存在时,返回继续执行步骤S11,当不存在时,结束流程。
步骤S20,每当查询到匹配的异步任务时,加载并执行所述匹配的异步任务,并将执行结果保存至预先设置的异步结果通知池(所述异步结果通知池是一预设的存储空间)。
每当查询到匹配的异步任务时,第一线程加载并执行所述匹配的异步任务,并将执行结果保存至预先设置的异步结果通知池。
与现有技术相比,本实施例通过微服务节点1实时或定时在预先设置的异步任务池中查询匹配的异步任务,在查询到匹配的异步任务时,加载并执行所述匹配的异步任务,并将执行结果保存至预先设置的异步结果通知池,从而实现将微服务系统中所有待处理的异步任务分发到多个微服务节点1中执行,避免了因某一个微服务节点1执行耗时的任务而造成的进程阻塞,提高了微服务系统的任务处理效率。
如图6所示,图6为本发明异步任务处理方法第二实施例的流程示意图。
本实施例在第一实施例的基础上,该方法包括:
步骤S30,根据预先确定的第二匹配规则,实时或定时在所述异步结果通知池中查询匹配的执行结果。
微服务节点1可预先启动第二线程,第二线程根据预先确定的第二匹配规则,实时或定时在所述异步结果通知池中查询匹配的执行结果。其中,第二匹配规则包括:
从所述异步结果通知池中查找由该微服务节点1完成执行的异步任务对应的异步结果,当查找到时,将查找到的异步结果作为匹配的执行结果。
步骤S40,每当查询到匹配的执行结果时,将所述匹配的执行结果对应的异步任务作为第一待处理任务,根据所述第一待处理任务的预设配置信息,确定是否需要发送所述第一待处理任务的执行结果;当确定需要发送时,将所述第一待处理任务对应的执行结果发送至预设位置。
每当查询到匹配的执行结果时,第二线程将所述匹配的执行结果对应的异步任务作为第一待处理任务,根据所述第一待处理任务的预设配置信息,确定是否需要发送所述第一待处理任务的执行结果。其中,一异步任务的执行结果是否需要发送可根据具体的应用场景预先进行设置,并将设置的数据保存在该异步任务的预设配置信息中。在确定一匹配的执行结果是否需要发送时,读取该匹配的执行结果对应的第一待处理任务的预设配置信息,通过读取该预设配置信息即可知是否需要发送该执行结果。
当确定需要发送时,第二线程将该执行结果发送至预设位置。其中,该预设位置可以是客户端2、其他微服务节点1或设备,本发明对此不作限定。
当确定不需要发送时,则第二线程不发送该执行结果。
本实施例微服务节点1通过开启多个线程,分别用于任务执行及执行结果的发送,从而进一步提高了微服务节点1的任务处理效率。
进一步地,本实施例中,在步骤S30之后,还包括:
每当查询到匹配的执行结果时,判断所述匹配的执行结果是否满足第一预设条件(例如,所述第一预设条件包括执行结果为执行失败);
当满足时,将所述匹配的执行结果对应的异步任务作为第二待处理任务,根据所述第二待处理任务的预设配置信息以及预先存储的被执行计数,确定是否需要重新执行所述第二待处理任务;当确定需要重新执行时,将所述第二待处理任务作为新的异步任务添加至所述异步任务池中。
本实施例中,每当查询到匹配的执行结果时,第二线程判断所述匹配的执行结果是否满足第一预设条件;满足时,第二线程将所述匹配的执行结果对应的异步任务作为第二待处理任务,根据所述第二待处理任务的预设配置信息以及预先存储的被执行计数,确定是否需要重新执行所述第二待处理任务;当确定需要重新执行时,第二线程将所述第二待处理任务作为新的异步任务添加至所述异步任务池中。其中,异步任务的预设配置信息还包括:重试次数,所述重试次数是指一异步任务首次执行失败后,可重新执行的最大次数。例如,当一异步任务的重试次数为3时,该异步任务在首次执行失败后,最多可再重新执行3次,若重新执行3次后仍失败,则不再重复执行。当一异步任务的重试次数为0时,该异步任务在首次执行失败后,不再重复执行。
所述被执行计数用于计量一异步任务被微服务节点1执行的次数。
所述根据所述第二待处理任务的预设配置信息以及预先存储的被执行计数,确定是否需要重新执行所述第二待处理任务的步骤包括:
读取所述第二待处理任务的预设配置信息,确定所述第二待处理任务的重试次数,计算所述重试次数与所述预先存储的被执行计数之间的差值,当所述差值大于第一预设阈值时,确定需要重新执行所述第二待处理任务,当所述差值小于或等于第一预设阈值时,确定不需要重新执行所述第二待处理任务。例如,一第二待处理任务的被执行计数为1次,重试次数为2次,第一预设阈值为-1,该第二待处理任务的重试次数与被执行计数之间的差值为1,该差值大于第一预设阈值-1,因此,确定该第二待处理任务需要重新执行。
进一步地,在第一、第二实施例的基础上,提出本发明异步任务处理方法第三实施例,该方法还包括:
定时将心跳信息写入预先确定的微服务节点池(所述微服务节点池是一预设的存储空间)。其中,所述心跳信息,又可称心跳消息(Heartbeat Message),是一种发送源发送到接收方的消息,这种消息可以让接收方确定发送源是否以及何时出现故障或终止。
进一步地,本实施例中,该方法还包括:
根据预先确定的主节点竞争规则,实时或定时判断自身是否满足第二预设条件,当判定自身满足第二预设条件时,将自身标记为主节点。
具体地,所述主节点竞争规则包括:
计算自身发送至所述微服务节点池的第一条心跳信息和最新一条心跳信息之间的时间间隔。
当所述时间间隔小于第二预设阈值(例如,30秒)时,判定自身不满足第二预设条件。
当所述时间间隔大于或等于第二预设阈值时,继续判断自身发送至所述微服务节点池的第一条心跳信息的时间是否早于其他任意一微服务节点1发送至所述微服务节点池的第一条心跳信息的时间,若是,则判定自身满足第二预设条件,若否,则判定自身不满足第二预设条件。
进一步地,本实施例中,该方法还包括:
若自身为主节点,则利用心跳机制,实时或定时识别是否有次节点(次节点为微服务系统中除主节点外的其他微服务节点1)加入或退出,当识别到有次节点加入或退出时,重新为微服务系统中所有微服务节点1(包括主节点及次节点)分配对应的预设数值段,并将微服务系统中各个微服务节点1(包括主节点及次节点)对应的预设数值段保存至微服务节点池。
其中,心跳机制是定时发送一个自定义的结构体(如心跳包、心跳信息),让对方知道自己还活着,以确保连接的有效性的机制。
所述主节点判断次节点是否退出的方法包括:
计算一次节点的最新一条心跳信息的发送时间和当前时间的时间间隔,当一次节点的最新一条心跳信息的发送时间和当前时间的时间间隔大于或等于第二预设阈值(例如,300秒)时,确定所述次节点已退出。
进一步地,本发明还提出一种微服务系统,所述微服务系统包括多个微服务节点1,各个微服务节点1均包括存储器和处理器,其特征在于,所述存储器上存储有异步任务处理程序,所述异步任务处理程序被所述处理器执行时实现如上述任一实施例中的异步任务处理方法的步骤。
进一步地,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有异步任务处理程序,所述异步任务处理程序可被至少一个处理器执行,以使所述至少一个处理器执行上述任一实施例中的异步任务处理方法。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。
Claims (6)
1.一种微服务节点,所述微服务节点包括存储器和处理器,其特征在于,所述存储器上存储有异步任务处理程序,所述异步任务处理程序被所述处理器执行时实现如下步骤:
根据预先确定的第一匹配规则,实时或定时在预先设置的异步任务池中查询匹配的异步任务,所述异步任务池用于存储所有待处理的异步任务;
每当查询到匹配的异步任务时,加载并执行所述匹配的异步任务,并将执行结果保存至预先设置的异步结果通知池;
根据预先确定的第二匹配规则,实时或定时在所述异步结果通知池中查询匹配的执行结果;
当查询到匹配的执行结果时,执行以下步骤:
将所述匹配的执行结果对应的异步任务作为第一待处理任务,根据所述第一待处理任务的预设配置信息,确定是否需要发送所述第一待处理任务的执行结果,当确定需要发送时,将所述第一待处理任务对应的执行结果发送至预设位置,及,
判断所述匹配的执行结果是否满足预设条件,当满足预设条件时,将所述匹配的执行结果对应的异步任务作为第二待处理任务,根据所述第二待处理任务的预设配置信息以及预先存储的被执行计数,确定是否需要重新执行所述第二待处理任务,当确定需要重新执行时,将所述第二待处理任务作为新的异步任务添加至所述异步任务池中。
2.如权利要求1所述的微服务节点,其特征在于,所述处理器执行所述异步任务处理程序,还实现如下步骤:
当接收到待处理的异步任务时,将所述异步任务添加至所述异步任务池中。
3.一种异步任务处理方法,其特征在于,该方法适用于微服务节点,该方法包括步骤:
根据预先确定的第一匹配规则,实时或定时在预先设置的异步任务池中查询匹配的异步任务,所述异步任务池用于存储所有待处理的异步任务;
每当查询到匹配的异步任务时,加载并执行所述匹配的异步任务,并将执行结果保存至预先设置的异步结果通知池;
根据预先确定的第二匹配规则,实时或定时在所述异步结果通知池中查询匹配的执行结果;
当查询到匹配的执行结果时,执行以下步骤:
将所述匹配的执行结果对应的异步任务作为第一待处理任务,根据所述第一待处理任务的预设配置信息,确定是否需要发送所述第一待处理任务的执行结果,当确定需要发送时,将所述第一待处理任务对应的执行结果发送至预设位置,及,
判断所述匹配的执行结果是否满足预设条件,当满足预设条件时,将所述匹配的执行结果对应的异步任务作为第二待处理任务,根据所述第二待处理任务的预设配置信息以及预先存储的被执行计数,确定是否需要重新执行所述第二待处理任务,当确定需要重新执行时,将所述第二待处理任务作为新的异步任务添加至所述异步任务池中。
4.如权利要求3所述的异步任务处理方法,其特征在于,该方法还包括:
当接收到待处理的异步任务时,将所述异步任务添加至所述异步任务池中。
5.一种微服务系统,其特征在于,所述微服务系统包括多个微服务节点,所述微服务节点包括存储器和处理器,所述存储器上存储有异步任务处理程序,所述异步任务处理程序可被所述处理器执行,以使所述处理器执行如权利要求3或4所述的异步任务处理方法的步骤。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有异步任务处理程序,所述异步任务处理程序可被至少一个处理器执行,以使所述至少一个处理器执行如权利要求3或4所述的异步任务处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010248605.8A CN111475306B (zh) | 2020-03-31 | 2020-03-31 | 微服务节点、异步任务处理方法、系统和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010248605.8A CN111475306B (zh) | 2020-03-31 | 2020-03-31 | 微服务节点、异步任务处理方法、系统和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111475306A CN111475306A (zh) | 2020-07-31 |
CN111475306B true CN111475306B (zh) | 2023-04-07 |
Family
ID=71750420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010248605.8A Active CN111475306B (zh) | 2020-03-31 | 2020-03-31 | 微服务节点、异步任务处理方法、系统和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111475306B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118394531B (zh) * | 2024-06-27 | 2024-09-03 | 上海甄零科技有限公司 | 一种异步程序处理方法、系统及计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108712464A (zh) * | 2018-04-13 | 2018-10-26 | 中国科学院信息工程研究所 | 一种面向集群微服务高可用的实现方法 |
CN109634738A (zh) * | 2018-10-19 | 2019-04-16 | 深圳平安财富宝投资咨询有限公司 | 基于微服务的异步处理方法、服务器、存储介质及装置 |
CN109634800A (zh) * | 2018-10-19 | 2019-04-16 | 深圳平安财富宝投资咨询有限公司 | 数据处理方法、系统、终端及可读存储介质 |
CN110868449A (zh) * | 2019-10-14 | 2020-03-06 | 深圳市非零无限科技有限公司 | 一种基于异步消息实现定时任务的方法及系统 |
-
2020
- 2020-03-31 CN CN202010248605.8A patent/CN111475306B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108712464A (zh) * | 2018-04-13 | 2018-10-26 | 中国科学院信息工程研究所 | 一种面向集群微服务高可用的实现方法 |
CN109634738A (zh) * | 2018-10-19 | 2019-04-16 | 深圳平安财富宝投资咨询有限公司 | 基于微服务的异步处理方法、服务器、存储介质及装置 |
CN109634800A (zh) * | 2018-10-19 | 2019-04-16 | 深圳平安财富宝投资咨询有限公司 | 数据处理方法、系统、终端及可读存储介质 |
CN110868449A (zh) * | 2019-10-14 | 2020-03-06 | 深圳市非零无限科技有限公司 | 一种基于异步消息实现定时任务的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111475306A (zh) | 2020-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2017140131A1 (zh) | 数据写入、读取方法及装置、云存储系统 | |
CN108462760B (zh) | 电子装置、集群访问域名自动生成方法及存储介质 | |
CN104065636B (zh) | 数据处理方法和系统 | |
CN110908770A (zh) | 虚拟机的运行及创建方法、虚拟机及虚拟机化管理平台 | |
US11748164B2 (en) | FAAS distributed computing method and apparatus | |
CN111988429A (zh) | 算法调度方法以及系统 | |
CN110740164A (zh) | 服务器确定方法、调控方法、装置、设备及存储介质 | |
CN111885184A (zh) | 高并发场景下热点访问关键字处理方法和装置 | |
CN112422450B (zh) | 计算机设备、服务请求的流量控制方法及装置 | |
CN111475306B (zh) | 微服务节点、异步任务处理方法、系统和存储介质 | |
CN109951551B (zh) | 一种容器镜像管理系统及方法 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
CN109871408B (zh) | 一种多类型数据库适配方法、装置、电子设备及存储介质 | |
CN112114938A (zh) | 事务处理方法、装置及服务器 | |
CN114398179A (zh) | 一种跟踪标识的获取方法、装置、服务器及存储介质 | |
CN115629951B (zh) | 一种任务全链路追踪方法、第一节点、链路系统及介质 | |
CN114327673B (zh) | 一种任务启动方法、装置、电子设备及存储介质 | |
CN107632893B (zh) | 消息队列处理方法及装置 | |
CN113608896B (zh) | 一种动态切换数据流的方法、系统、介质及终端 | |
CN112527473A (zh) | 一种分布式事务处理方法及装置 | |
CN114816656A (zh) | 容器组迁移方法、电子设备及存储介质 | |
US7660888B2 (en) | Indicating network resource availability methods, system and program product | |
CN113703930A (zh) | 任务调度方法、装置及系统、计算机可读存储介质 | |
CN114691309A (zh) | 一种批量业务处理系统、方法及装置 | |
CN114764324A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |