CN106055397B - 一种锁的控制方法及装置 - Google Patents

一种锁的控制方法及装置 Download PDF

Info

Publication number
CN106055397B
CN106055397B CN201610371455.3A CN201610371455A CN106055397B CN 106055397 B CN106055397 B CN 106055397B CN 201610371455 A CN201610371455 A CN 201610371455A CN 106055397 B CN106055397 B CN 106055397B
Authority
CN
China
Prior art keywords
subprocess
lock
parent process
server
operating status
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
Application number
CN201610371455.3A
Other languages
English (en)
Other versions
CN106055397A (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.)
Sina Technology China Co Ltd
Original Assignee
Sina Technology China 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 Sina Technology China Co Ltd filed Critical Sina Technology China Co Ltd
Priority to CN201610371455.3A priority Critical patent/CN106055397B/zh
Publication of CN106055397A publication Critical patent/CN106055397A/zh
Application granted granted Critical
Publication of CN106055397B publication Critical patent/CN106055397B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请实施例提供一种锁的控制的方法及装置,该方法中业务服务器可将获取锁的进程作为父进程,将该父进程进行复制,得到子进程,随后,父进程在对所需资源进行处理的过程中,子进程可对父进程的运行状态进行监控,并将监控到的运行状态发送给锁服务器,使得锁服务器可根据接收到的运行状态,控制先前对该进程分配的锁。由于业务服务器可将单线程的进程进行复制,得到父进程和子进程,并通过父进程和子进程分别进行当前业务的执行以及向锁服务器发送用于表示该进程正常运行的消息,即,相当于在不改变单线程的前提下,将原先的进程进行了增加,进而增加了处理该业务的线程,因此,有效的提高了业务服务器的处理效率。

Description

一种锁的控制方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种锁的控制方法及装置。
背景技术
为了满足人们日益增长的服务需求,当前,网络运营商或是软件开发商相继开发出了多种功能强大,功能种类繁多的应用软件,这些应用软件安装到用户的个人电脑(Personal Computer,PC)、智能手机等智能终端后,极大了提高了用户解决问题的能力,并且,由于其操作简单,易于上手,因此在操作上也给用户带来了极大的方便,随着网络技术的快速发展,相信,各应用软件的功能还将会进一步的完善。
当前,用户使用应用软件所进行的业务处理通常都是需要若干个进程来支持的,换句话说,无论是终端还是服务器,在处理该业务时通常都会为其创建出若干进程,进而通过进程的运行来完成该业务的处理工作,而进程通常都会对资源进行操作,其中,在服务器中运行的进程通常都会服务器中包含的一些资源进行操作,但是,由于服务器中的资源通常都是共用的,即,不同的进程可能会对同一资源进行操作,因此,倘若一个进程在对服务器中的某一资源进行操作时,其他进程也同时对该资源进行了操作,则该进程所操作的资源将会受到其他进程的影响,进而使该进程在使用这一资源时出现问题。
为了防止上述情况的发生,一般采用锁机制对资源进行加锁,来保证同一资源在同一时刻只能被一个进程处理。具体的,可设置专门为资源加锁的服务器,称为锁服务器,运行进程的服务器(即业务服务器)在通过进程操作资源之前,需要从锁服务器中获取该资源的锁,相应的,锁服务器在为该进程分配锁后,将对该资源加锁,以防止业务服务器中的其他进程对该资源进行操作。当该进程结束后,可释放该资源的锁,使锁服务器撤回先前为其分配的锁。
然而,在实际应用中,如果进程在运行的过程中出现一些诸如进程出错、网络断开、服务器宕机等异常情况,则该进程将不能及时的将锁服务器为其分配的锁进行释放,因此,锁服务器也将迟迟不能对先前针对该进程而锁定的资源进行解锁,从而导致其他进程只能等到该进程恢复正常并运行完毕后,才能陆续的对该资源进行操作,进而降低了服务器处理业务的效率。
为防止由于进程运行出现异常而致使该进程所持有的锁迟迟不能释放的问题发生,当前锁服务器可设置一个进程持有锁的一个持有时间,并当进程实际持有锁的时间超出设置的持有时间时,则将先前向该进程分配的锁进行释放,假设锁服务器规定,各进程从锁服务器中获取的锁只能持有10min,当锁服务器监测到先前向某一进程分配的锁已经超出预设的10min持有时间时,则可将该锁进行强制释放,进而使其他进程能够使用该锁。
通过上述方式虽然可以在一定程度上避免因进程出现异常而导致的该进程迟迟不能将持有的锁进行释放的问题发生。但是,在实际应用中,各进程的运行时间通常都是各不相同的,有的进程可以运行的时间较短,而有的进程则可能运行的时间较长,因此,对于一些运行时间较长的进程来说,若这些进程即使在正常运行的情况下,其实际运行时间也将超出锁服务器设置的进程持有锁的持有时间,则这些进程在运行的过程中,锁服务器将会提前将该进程持有的锁进行释放,进而使得其他进程在获取到该锁后,可能会对该进程所操作的时间进行操作,继而影响了该进程的正常运行。
因此,为防止上述情况的发生,在现有技术中,可在业务服务器中设置一个时间间隔,由进程根据该时间间隔,周期性的向锁服务器发送用于表示该进程还处于正常运行状态的消息,从而使锁服务器在接收到该消息后,得知该进程还需要继续使用锁服务器先前为其分配的锁,进而不对该锁进行释放。例如,业务服务器在运行某一进程后发现,该进程的实际运行时间已经超出了锁服务器规定的锁持有时间,则为了防止锁服务器强制将先前为该进程分配的锁进行释放,该进程可每隔一分钟就向锁服务器发送一次用于表示自己(即该进程)还正常运行的消息,即,通知锁服务器该进程还需要使用锁服务器为其分配的锁,相应的,锁服务器在接收到该进程发送的消息后,可得知该进程还需要继续是使用先前为其分配的锁,进而不对该锁进行强制释放。
上述方法中进程虽然能够通过消息锁服务器发送消息的方式,使锁服务器合理的控制何时将先前为该进程分配的锁进行释放,但是,由于进程在执行任务时,都是通过进程对应的线程来执行的,而在单线程的场景下,由于一个进程只对应一个线程,因此,进程在向锁服务器发送该进程自身的运行状态时,需要先停止该进程对应的线程当前执行的任务,再通过该线程发送运行状态,然后再继续执行先前停止的任务。这样一来,由于该进程在执行该汇报任务时,会停止当前执行的任务,因此,该进程完成该任务所需的时间将进一步的增加,从而降低了业务服务器的处理效率。
发明内容
本申请实施例提供一种锁的控制方法及装置,用以解决现有技术中业务服务器中的进程向锁服务器发送消息时会降低业务服务器处理效率的问题。
本申请实施例提供的一种锁的控制方法,包括:
确定执行进程所需的资源并从锁服务器获取所述资源的锁,其中,所述进程为单线程的进程;
以所述进程为父进程,生成所述父进程的子进程;
通过所述父进程获取所述资源进行处理;
通过所述子进程监控所述父进程的运行状态并发送给所述锁服务器,以使所述锁服务器根据所述运行状态控制所述锁。
本申请实施例提供的一种锁的控制装置,包括:
确定模块,用于确定执行进程所需的资源并从锁服务器中获取所述资源的锁,其中,所述进程为单线程的进程;
生成模块,用于以所述进程为父进程,生成所述父进程的子进程;
处理模块,用于通过所述父进程获取所述资源进行处理;
监控模块,用于通过所述子进程监控所述父进程的运行状态并发送给所述锁服务器,以使所述锁服务器根据所述运行状态控制所述锁。
本申请实施例提供一种锁的控制方法及装置,该方法中业务服务器可将获取锁的进程作为父进程,将该父进程进行复制,得到子进程,随后,父进程在对所需资源进行处理的过程中,子进程可对父进程的运行状态进行监控,并将监控到的运行状态发送给锁服务器,使得锁服务器可根据接收到的运行状态,控制先前对该进程分配的锁。由于业务服务器可将单线程的进程进行复制,得到父进程和子进程,并通过父进程和子进程分别进行当前业务的执行以及向锁服务器发送用于表示该进程正常运行的消息,即,相当于在不改变单线程的前提下,将原先的进程进行了增加,进而增加了处理该业务的线程,因此,有效的提高了业务服务器的处理效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的锁的控制的详细过程;
图2为本申请实施例提供的一种锁的控制的装置结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例提供的锁的控制的详细过程,具体包括以下步骤:
S101:确定执行进程所需的资源并从锁服务器获取所述资源的锁,其中,所述进程为单线程的进程。
在实际应用中,用户在使用应用软件来进行业务处理时,通常需要通过诸如电脑、智能手机等终端设备向业务服务器发送用于进行业务处理的业务请求,相应的,业务服务器在接收到用户发送的业务请求后,可通过对该业务请求的解析,来完成用户所需业务的处理工作,其中,业务服务器在解析该业务请求后,通常可根据解析得到的内容,生成一个用于处理用户所需业务的进程,继而在后续过程中,通过该进程的运行,来完后用户所需业务的处理工作。
需要说明的是,通常情况下,业务服务器生成的用于处理用户所需业务的进程可以单线程的(即一个进程对应一个线程),也可以是多线程的(即一个进程对应多个线程),而本申请意在解决单线程的情况下,进程向锁服务器发送用于表示自己(即该进程)还需要继续使用锁的消息时,会降低业务服务器处理效率的问题,因此,在本申请实施例中,业务服务器生成的进程为单线程的。
进程在运行时通常都需要对服务器中的一些资源进行操作,而由于服务器中的资源通常都是共用的,即,不同的进程有时可能都需要对同一资源进行操作,因此,为了防止该进程在对该资源进行操作的过程中,其他进程也对该资源进行操作,锁服务器可向该进程分配一个能够将该资源进行锁定的锁,即,业务服务器运行该进程时,可先确定出该进程所需的资源,而后,该业务服务器中的进程可从锁服务器中获取能够锁定该资源的锁,并在获取到锁后,从服务器中获取到该进程所需的资源并处理,其中,这里提到的资源可以是业务服务器中的资源,也可以是锁服务器中的资源,当然还可以是其他服务器中的资源。由于该进程已从锁服务器获取到能够锁定该资源的锁,因此,其他进程发现该资源的锁已由锁服务器分配给了某一进程时,将不会对该资源进行操作。
S102:以所述进程为父进程,生成所述父进程的子进程。
由于本申请实施例意在解决单线程的进程在向锁服务器发送用于表示该进程还需继续使用锁的消息时,会降低业务服务器的处理效率的问题,因此,业务服务器在获取到锁服务器为该进程分配的锁后,可以该进程为父进程而将该进程进行复制,得到父进程和子进程,进而在后续过程中,通过该父进程和子进程分别执行所需资源的处理过程(即,业务处理工作)以及向锁服务器发送用于表示自己(即该进程)还需使用锁的消息,从而使得业务服务器在不影响业务的正常处理情况下,也完成了向锁服务器发送的消息的工作,从而有效提高了业务服务器的处理效率。
具体的,在本申请实施例中,业务服务器在获取到锁服务器为该进程分配的锁后,可以该进程为父进程进行复制,得到父进程和子进程,其中,父进程可在后续过程中,进行业务处理的工作,而子进程则可在后续过程中,对该父进程实施监控,并将监控到的运行状态发送给锁服务器,使得锁服务器可根据该运行状态,来对先前为该进程分配的锁进行控制。而由于子进程在后续过程中需要完成对父进程的监控,因此,在本申请实施例中,业务服务器可在父进程和子进程之间建立一个用于使父进程和子进程能够进行通信的第一管道,其中,业务服务器可该第一管道的一个端口(即第一端口)分配给该父进程,而第一管道另一端的端口则可分配给该子进程,这样一来,该第一管道则可将该父进程和子进程连接起来,继而使子进程在后续过程中,可实施对该父进程运行状态的监控。
需要说明的是,在本申请实施例中,业务服务器可在将该进程进行复制之前,针对该进程而建立一个第一管道,其中,该进程可通过两个文件描述符分别指向该第一管道的读端和写端,而后,业务服务器可以该进程为父进程进行复制,得到父进程和子进程,由于子进程是通过该父进程复制得到的,因此,该子进程上也将出现两个分别指向该第一管道读端和写端的文件描述符。而为了使父进程和子进程能够通过该第一管道实现通信,业务服务器可将父进程的读端进行关闭,并将子进程的写端进行关闭,这样一来,由于父进程和子进程各关闭了管道的一端,则父进程、第一管道以及子进程这三者之间形成了一个闭合的回路,继而在后续过程中,子进程可通过该第一管道实现对父进程运行状态的监控。
S103:通过所述父进程获取所述资源进行处理。
业务服务器在父进程和子进程之间建立第一管道后,可获取用于处理用于所需业务的资源,即,父进程执行该业务处理时所需的资源,随后,业务服务器可通过该父进程对获取的资源进行处理,其中,该父进程处理的资源为已经锁定的资源。
S104:通过所述子进程监控所述父进程的运行状态并发送给所述锁服务器,以使所述锁服务器根据所述运行状态控制所述锁。
由于进程在运行的过程中,需要每隔一段时间向锁服务器发送一次用于表明自己(即该进程)还需要使用锁的消息,因此,在本申请实施例中,父进程在对获取到的资源进行处理的过程中,子进程可对父进程的运行状态进行监控,当监控到父进程正在运行时,则确定该父进程还需要继续使用锁服务器先前为该父进程分配的锁,进而将监控到的运行状态以消息的形式发送给锁服务器,使得锁服务器在接收该消息后,可根据该消息确定出该父进程还在运行,进而不对先前分配给该父进程的锁进行释放;而当子进程监控到父进程出现运行异常或运行结束后,则可确定出该父进程已经不再需要继续使用锁服务器先前为该父进程分配的锁,进而将监控到的父进程的异常状态或结束状态以消息的形式发送给锁服务器,使得锁服务器在接收到该消息后,可根据该消息确定出该父进程已不再需要锁服务器先前为该父进程分配的锁,进而将该锁进行释放。当然,业务服务器通过子进程在监控到父进程处于异常状态或是结束运行时,也可将该子进程结束,这样一来,该子进程将不会向锁服务器发送用于表明父进程还在运行的消息,进而使得锁服务器在监控到该父进程的持有锁的时间超出了锁服务器预设的持有时间时,将先前为该父进程分配的锁进行强制释放,从而使得其他进程能够获取该锁。
而子进程在对父进程的运行状态进行监控的过程中,由于子进程和父进程之间通过第一管道相互连接,因此,当父进程运行结束时,业务服务器可通过该第一管道向子进程发送结束消息,以通知该父进程已经结束了运行,相应的,子进程在接收到该结束消息后,可监控到父进程已结束了运行,进而在后续过程中,将监控到的该父进程的运行状态发送给锁服务器,而当父进程出现运行异常的情况时,业务服务器可通过该第一管道向子进程发送用于表明父进程运行异常的消息,相应的,子进程在接收到该消息后,可监控到父进程当前正处于异常状态,进而将监控到的运行状态发送给锁服务器,而当父进程正在正常运行时,业务服务器可不向子进程发送消息,相应的,由于子进程接收不到父进程发送的消息,则子进程可认定该父进程当前正处于正常运行的状态,继而监控到该父进程的运行状态,并在后续过程中,将监控到的该父进程的运行状态发送给锁服务器。当然,子进程也可通过监控该父进程对应的第一端口的端口状态,并根据监控到的端口状态,确定出该父进程的运行状态,其中,子进程在监控父进程对应的第一端口的端口状态时,可通过select函数获取到该第一端口的端口状态,另外,子进程也可通过其他的方式来对该父进程的运行状态实施监控,在此就不做进一步的限定了。而对于第一管道的端口状态来说,通常情况下,端口状态可分为两种情况,其中,当父进程正常运行时,该端口状态可以是第一端口状态,而当父进程出现运行异常或是运行结束时,则该端口状态则可统一表示为第二端口状态,相应的,子进程在监控到父进程对应的第一端口的端口状态为第一端口状态时,则可监控到该父进程当前正在正常运行,而该子进程监控到该端口状态为第二端口状态时,则可监控到该父进程当前可能出现了运行异常,或是可能已经结束了运行,继而将监控到的该父进程的运行状态发送给锁服务器。
由于在本申请实施例中,业务服务器可将用于处理用户所需业务的进程进行复制,得到父进程和子进程,业务服务器可通过父进程来处理用户所需的业务,并通过得到的子进程向锁服务器发送用于表明该进程(即父进程)还在运行的消息,相当于业务服务器可通过复制进程的方式来增加处理用户所需业务的线程,因此,该业务服务器在不影响该业务的正常处理下,同时实现了锁服务器发送用于表明该进程运行状态的消息,从而有效提高了业务服务器的业务处理效率。
然而,本申请实施例中的子进程在对父进程的运行状态进行监控时,需要将监控到的运行状态发送给锁服务器,即,相当于该子进程既做了监控父进程的任务,又做了向锁服务器发送运行状态的任务,而由于本申请实施例中进程都是单线程的,因此,若该子进程在向锁服务器发送运行状态的同时,势必会停止对父进程的监控工作,从而在一定程度上影响了业务服务器的处理效率。
因此,为了进一步的提高业务服务器的处理效率,在本申请实施例中,业务服务器在将该进程进行复制,得到父进程和子进程后,可进一步的将该子进程作为父进程再次进行复制,得到第一子进程和第二子进程,其中,第一子进程为第二子进程的父进程。业务服务器在得到该第一子进程和第二子进程后,可将该第一子进程用于对父进程运行状态的监控工作,而第二子进程则可用于向锁服务器发送第一子进程监控到的运行状态,这样一来,该子进程在向锁服务器发送运行状态的同时,将不会影响到该子进程对父进程的监控工作,从而有效的提高了业务服务器的处理效率。
当然,第二子进程也可不将第一子进程监控到的运行状态(即父进程的运行状态)发送给锁服务器,而是当父进程正常运行时,就以一定的时间间隔不断的向锁服务器发送用于表示该父进程的运行状态为正常状态的消息。而由于父进程在出现运行异常或结束运行时,第二子进程需要停止向锁服务器发送消息,因此,在本申请实施例中,第一子进程可根据监控到的父进程的运行状态,控制第二子进程向锁服务器发送的消息。具体方式可以是:当第一子进程监控到父进程的运行状态为正常运行时,则不将该第二子进程结束,相应的,该第二子进程还将以一定的时间间隔,周期性的向锁服务器发送消息,锁服务器在接收到该消息后,则可确定出该父进程当前还处于正常运行的状态,进而不对先前将该父进程分配的锁进行释放;而当第一子进程监控到父进程的运行状态为异常状态或结束状态时,则将第二子进程结束,相应的,由于第二子进程已被结束,因此,该第二子进程(或业务服务器)也将不再向锁服务器发送用于表示父进程当前还处于正常运行的消息,锁服务器在预设时间内没有接收到业务服务器发送的该消息后,则可确定出该父进程出现了运行异常的状态或是已经结束了运行,因此,该锁服务器则可将先前为该父进程分配的锁进行强制释放,以使其他进程能够对该锁进行使用。
需要说明的是,本申请实施例中,第一子进程需要了解第二子进程向锁服务器发送的用于表示父进程正常运行的消息是否已经成功的发送到了锁服务器中,此举的目的在于,假设第二子进程向锁服务器发送消息时,该消息没有成功的送达至锁服务器中,则由于锁服务器在预设的时间内没有接收到该消息,则该锁服务器可将先前为该父进程分配的锁进行强制释放,这样一来,由于锁服务器已将该锁进行了释放,因此,第一子进程后续继续监控父进程的运行状态也将变的没有意义,并且还对业务服务器的资源造成了浪费。为此,第二子进程成功向锁服务器发送了用于表示父进程当前正在正常运行的消息后,可向第一子进程也发送一个通知,以告知第一子进程向锁服务器发送的消息已经成功发送,进而使得第一子进程继续对父进程的运行状态进行监控,其中,第一子进程和第二子进程之间的通信也可通过管道来完成,即,业务服务器可在第一子进程和第二子进程之间建立一个第二管道,其中,该第二管道的一个端口(即该第二管道的第一端口)可分配给第一子进程,而该第二管道的另一个端口(即该第二管道的第二端口)可分配给第二进程,而该第二管道的建立方式与上述步骤S102中的方式相同,在此就不进行详细赘述了。
当出现网络通信故障等情况而致使第二子进程没有将用于表示父进程当前正在正常运行的消息成功发送至锁服务器中时,第一子进程可结束第二子进程,并重新以该第一子进程为父进程,复制该第一子进程,得到新的第二子进程,进而通过该新的第二子进程继续向锁服务器发送用于表示当前父进程还处于正常运行状态的消息,其中,结束第二子进程并重新生成新的第二子进程的目的在于,在实际应用中,第二子进程未成功向锁服务器发送消息可能是由以下几种情况导致的,第一种,第二子进程在运行的过程中出现了运行错误,则该第二子进程将无法向锁服务器发送消息,由于这种状况是由进程本身自己决定的,因此,这种状况可以叫做进程状况,第二种,若第二子进程在向锁服务器发送消息的过程中,该第二子进程与业务服务器之间的通信出现了状况,则第二子进程也将无法向锁服务器发送消息,对于这种状况来说,由于这种状况的发生并不是进程本身造成的,因此,这种状况可以叫做非进程状况。例如,假设业务服务器建立的与该第二子进程的一对通信端口为00和01,第二子进程可通过这对端口向业务服务器发送消息,进而使得业务服务器将该消息发送至锁服务器中,而由于业务服务器建立的与该第二子进程的通信端口通常都是动态的,即,业务服务器将其对应的端口变为了02,则此时第二子进程再向业务服务器发送消息时,该消息将无法发送至业务服务器中,相应的也就无法将该消息发送至锁服务器中。
由于进程在运行的过程中,可能会出现上述说明的两种状况,因此,通常情况下,若第二子进程没有成功的将用于表明当前父进程正常运行的消息发送至锁服务器,则业务服务器通常都会对出现的这一状况进行检查,进而将检查出的问题进行修复,以使第二子进程在后续过程中能够正常的向锁服务器发送该消息。然而,若业务服务器对出现的这一状况实施检查,则势必会增加业务服务器的运行负担,并且,还会增加该业务处理的时间,进而降低了业务服务器的处理效率。而若业务服务器监控到该第二子进程出现了这一状况后,并未对这一状况实施检查,而是直接结束原来的第二子进程,并重新生成一个新的第二子进程,则即保证该第二子进程的正常运行,同时还降低了业务服务器的资源消耗,从而提高了业务服务器的处理效率。
例如,假设第二子进程在运行的过程中,业务服务器将与第二子进程通信的端口进行了更改,该第二子进程将会出现非进程状况,相应的,该第二子进程将无法向锁服务器发送消息,因此,业务服务器为了能够节省业务服务器的资源,可将该第二子进程结束,并重新生成出一个新的第二子进程,由于业务服务器在生成新的第二子进程时,是在确保该第二子进程能够与业务服务器进行通信的前提下生成的,因此,该新的第二子进程在生成后,即可实现与业务服务器的通信,进而可将用于表明当前父进程还处于运行状态的消息发送至锁服务器中。当第二子进程出现了进程状况时,业务服务器也可将该第二子进程结束,并重新生成一个新的第二子进程,由于生成出的新的第二子进程通常都是一个运行正常的子进程,因此,这一新的第二子进程后续可正常的向锁服务器发送消息。
所以,在本申请实施例中,当第二子进程没有成功的向锁服务器发送该消息时,则该第二子进程也将不会向第一子进程发送用于表示该消息发送成功的通知,这样一来,第一子进程在预设的时间内未接收到第二子进程发送的通知时,则可认定该第二子进程出现了状况,进而结束该第二子进程,并且,为了保证在父进程还处于运行状态的情况下,继续向锁服务器发送用于表明当前父进程正在运行的消息,业务服务器可重新以所述子进程为第一子进程,复制该第一子进程,得到新的第二子进程,继而在后续过程中,业务服务器可通过该新的第二子进程继续向锁服务器发送该消息。
以上为本申请实施例提供的锁的控制的方法,基于同样的思路,本申请实施例还提供锁的控制的装置,如图2所示。
图2为本申请实施例提供的一种锁的控制的装置结构示意图,具体包括:
确定模块201,用于确定执行进程所需的资源并从锁服务器中获取所述资源的锁,其中,所述进程为单线程的进程;
生成模块202,用于以所述进程为父进程,生成所述父进程的子进程;
处理模块203,用于通过所述父进程获取所述资源进行处理;
监控模块204,用于通过所述子进程监控所述父进程的运行状态并发送给所述锁服务器,以使所述锁服务器根据所述运行状态控制所述锁。
所述生成模块202具体用于,复制所述父进程,得到所述父进程的子进程,所述父进程和所述子进程通过第一管道进行通信,所述第一管道的第一端口被分配给所述父进程,所述第一管道的第二端口被分配给所述子进程。
所述监控模块204具体用于,通过所述子进程监控所述第一端口的状态,根据所述第一端口状态,监控所述父进程的运行状态。
所述监控模块204具体用于,通过所述子进程监控所述父进程的运行状态,并以所述子进程为第一子进程,复制所述第一子进程,得到第二子进程,通过所述第二子进程向所述锁服务器发送消息,所述消息用于表示所述父进程的运行状态为正常状态;当监控到的运行状态为异常状态或结束状态时,结束所述第二子进程。
所述装置还包括:
发送模块205,用于当通过所述第二子进程向所述锁服务器成功发送所述消息时,则通过所述第二子进程向所述第一子进程发送通知;
所述生成模块202还用于,当在预设时间内未通过所述第一子进程接收到所述通知时,则结束所述第二子进程,并重新以所述子进程为第一子进程,复制所述第一子进程,得到新的第二子进程。
本申请实施例提供一种锁的控制的方法及装置,该方法中业务服务器可将获取锁的进程作为父进程,将该父进程进行复制,得到子进程,随后,父进程在对所需资源进行处理的过程中,子进程可对父进程的运行状态进行监控,并将监控到的运行状态发送给锁服务器,使得锁服务器可根据接收到的运行状态,控制先前对该进程分配的锁。由于业务服务器可将单线程的进程进行复制,得到父进程和子进程,并通过父进程和子进程分别进行当前业务的执行以及向锁服务器发送用于表示该进程正常运行的消息,即,相当于在不改变单线程的前提下,将原先的进程进行了增加,进而增加了处理该业务的线程,因此,有效的提高了业务服务器的处理效率。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (9)

1.一种锁的控制方法,其特征在于,包括:
确定执行进程所需的资源并从锁服务器获取所述资源的锁,其中,所述进程为单线程的进程;
以所述进程为父进程,生成所述父进程的子进程;
通过所述父进程获取所述资源进行处理;
通过所述子进程监控所述父进程的运行状态并发送给所述锁服务器,以使所述锁服务器根据所述运行状态控制所述锁;
其中,通过所述子进程监控所述父进程的运行状态并发送给所述锁服务器,具体包括:
通过所述子进程监控所述父进程的运行状态,并以所述子进程为第一子进程,复制所述第一子进程,得到第二子进程;通过所述第二子进程向所述锁服务器发送消息,以使所述锁服务器根据所述运行状态控制所述锁,所述消息用于表示所述父进程的运行状态为正常状态;
当监控到的运行状态为异常状态或结束状态时,结束所述第二子进程。
2.如权利要求1所述的方法,其特征在于,生成所述父进程的子进程,具体包括:
复制所述父进程,得到所述父进程的子进程,所述父进程和所述子进程通过第一管道进行通信,所述第一管道的第一端口被分配给所述父进程,所述第一管道的第二端口被分配给所述子进程。
3.如权利要求2所述的方法,其特征在于,通过所述子进程监控所述父进程的运行状态,具体包括:
通过所述子进程监控所述第一端口的状态,根据所述第一端口状态,监控所述父进程的运行状态。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
当通过所述第二子进程向所述锁服务器成功发送所述消息时,则通过所述第二子进程向所述第一子进程发送通知;
当在预设时间内未通过所述第一子进程接收到所述通知时,则结束所述第二子进程,并重新以所述子进程为第一子进程,复制所述第一子进程,得到新的第二子进程。
5.一种锁的控制装置,其特征在于,包括:
确定模块,用于确定执行进程所需的资源并从锁服务器中获取所述资源的锁,其中,所述进程为单线程的进程;
生成模块,用于以所述进程为父进程,生成所述父进程的子进程;
处理模块,用于通过所述父进程获取所述资源进行处理;
监控模块,用于通过所述子进程监控所述父进程的运行状态并发送给所述锁服务器,以使所述锁服务器根据所述运行状态控制所述锁;
其中,监控模块,具体用于:
通过所述子进程监控所述父进程的运行状态,并以所述子进程为第一子进程,复制所述第一子进程,得到第二子进程;通过所述第二子进程向所述锁服务器发送消息,以使所述锁服务器根据所述运行状态控制所述锁,所述消息用于表示所述父进程的运行状态为正常状态;
当监控到的运行状态为异常状态或结束状态时,结束所述第二子进程。
6.如权利要求5所述的装置,其特征在于,所述生成模块具体用于,复制所述父进程,得到所述父进程的子进程,所述父进程和所述子进程通过第一管道进行通信,所述第一管道的第一端口被分配给所述父进程,所述第一管道的第二端口被分配给所述子进程。
7.如权利要求6所述的装置,其特征在于,所述监控模块具体用于,通过所述子进程监控所述第一端口的状态,根据所述第一端口状态,监控所述父进程的运行状态。
8.如权利要求5所述的装置,其特征在于,所述监控模块具体用于,通过所述子进程监控所述父进程的运行状态,并以所述子进程为第一子进程,复制所述第一子进程,得到第二子进程,通过所述第二子进程向所述锁服务器发送消息,所述消息用于表示所述父进程的运行状态为正常状态;当监控到的运行状态为异常状态或结束状态时,结束所述第二子进程。
9.如权利要求8所述的装置,其特征在于,所述装置还包括:
发送模块,用于当通过所述第二子进程向所述锁服务器成功发送所述消息时,则通过所述第二子进程向所述第一子进程发送通知;
所述生成模块还用于,当在预设时间内未通过所述第一子进程接收到所述通知消息时,则结束所述第二子进程,并重新以所述子进程为第一子进程,复制所述第一子进程,得到新的第二子进程。
CN201610371455.3A 2016-05-30 2016-05-30 一种锁的控制方法及装置 Active CN106055397B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610371455.3A CN106055397B (zh) 2016-05-30 2016-05-30 一种锁的控制方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610371455.3A CN106055397B (zh) 2016-05-30 2016-05-30 一种锁的控制方法及装置

Publications (2)

Publication Number Publication Date
CN106055397A CN106055397A (zh) 2016-10-26
CN106055397B true CN106055397B (zh) 2019-09-27

Family

ID=57171406

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610371455.3A Active CN106055397B (zh) 2016-05-30 2016-05-30 一种锁的控制方法及装置

Country Status (1)

Country Link
CN (1) CN106055397B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201835751A (zh) * 2017-02-10 2018-10-01 香港商凱歐斯科技(香港)有限公司 功能型手機及其操作方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104199649A (zh) * 2014-08-22 2014-12-10 东南大学 一种用于父子进程间交互信息的路径剖析方法
CN104468766A (zh) * 2014-12-01 2015-03-25 中国科学院等离子体物理研究所 一种软件运行状态的远程监控方法
WO2015072689A1 (ko) * 2013-11-14 2015-05-21 (주)잉카엔트웍스 안티디버깅 방법
CN104714839A (zh) * 2013-12-12 2015-06-17 腾讯科技(深圳)有限公司 一种控制进程生命期的方法和装置
CN105589757A (zh) * 2014-10-23 2016-05-18 上海天脉聚源文化传媒有限公司 一种服务器架构下的保护工作进程的方法和服务器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015072689A1 (ko) * 2013-11-14 2015-05-21 (주)잉카엔트웍스 안티디버깅 방법
CN104714839A (zh) * 2013-12-12 2015-06-17 腾讯科技(深圳)有限公司 一种控制进程生命期的方法和装置
CN104199649A (zh) * 2014-08-22 2014-12-10 东南大学 一种用于父子进程间交互信息的路径剖析方法
CN105589757A (zh) * 2014-10-23 2016-05-18 上海天脉聚源文化传媒有限公司 一种服务器架构下的保护工作进程的方法和服务器
CN104468766A (zh) * 2014-12-01 2015-03-25 中国科学院等离子体物理研究所 一种软件运行状态的远程监控方法

Also Published As

Publication number Publication date
CN106055397A (zh) 2016-10-26

Similar Documents

Publication Publication Date Title
KR100575497B1 (ko) 내고장성 컴퓨터 시스템
CN106992900A (zh) 监控预警的方法及智能预警通知平台
CN108304267B (zh) 高可靠低资源开销的多源数据引接方法
US11196627B1 (en) Managed remediation of non-compliant resources
WO2016183967A1 (zh) 一种关键组件的故障告警方法、装置及大数据管理系统
CN107508694B (zh) 一种集群内的节点管理方法及节点设备
CN105827678B (zh) 一种基于高可用架构下的通信方法和节点
CN109582459A (zh) 应用的托管进程进行迁移的方法及装置
CN105306507A (zh) 分布式架构中的容灾处理方法及容灾处理装置
CN105243001A (zh) 业务对象的异常告警方法和装置
CN106055397B (zh) 一种锁的控制方法及装置
WO2021139174A1 (zh) 一种faas分布式计算方法和装置
CN104281587B (zh) 一种建立连接的方法及装置
CN104503885A (zh) 一种定时看门装置及系统
CN112015561A (zh) 用于流式计算服务的方法、装置和系统
CN116719623A (zh) 作业调度方法、作业结果处理方法及其装置
US11709723B2 (en) Cloud service framework
CN115033927A (zh) 一种检测数据完整性的方法、装置、设备及介质
CN113301177A (zh) 一种域名防封禁方法及装置
US8417997B2 (en) Governance in work flow software
CN114691395A (zh) 一种故障处理方法、装置、电子设备及存储介质
CN110618863A (zh) 一种基于Raft算法的作业调度方法
CN106487561A (zh) 一种服务器服务更新的方法和系统
US20190190972A1 (en) System and method for defining windows of tuples of interest
CN116800604B (zh) 可配置的激光通信设备控制方法、装置、设备及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20161026

Assignee: XINGCHAO SHANYAO MOBILE NETWORK TECHNOLOGY (CHINA) Co.,Ltd.

Assignor: SINA.COM TECHNOLOGY (CHINA) Co.,Ltd.

Contract record no.: X2021990000288

Denomination of invention: A lock control method and device

Granted publication date: 20190927

License type: Common License

Record date: 20210519

EE01 Entry into force of recordation of patent licensing contract
TR01 Transfer of patent right

Effective date of registration: 20230315

Address after: Room 501-502, 5/F, Sina Headquarters Scientific Research Building, Block N-1 and N-2, Zhongguancun Software Park, Dongbei Wangxi Road, Haidian District, Beijing, 100193

Patentee after: Sina Technology (China) Co.,Ltd.

Address before: 100080, International Building, No. 58 West Fourth Ring Road, Haidian District, Beijing, 20 floor

Patentee before: Sina.com Technology (China) Co.,Ltd.

TR01 Transfer of patent right