一种射频识别系统中事件处理的方法及装置 【技术领域】
本发明涉及射频识别技术领域,尤其涉及一种射频识别系统中事件处理的方法及装置。
背景技术
RFID(Radio Frequency Identification,射频识别)是一种非接触式的自动识别技术,通过射频信号自动识别目标对象并获取相关数据,识别工作无须人工干预,可工作于恶劣环境。RFID系统中的RMT(Remoting Maintenance Teminal,远程维护终端终端)是负责对组网的阅读器进行管理和维护的一个终端,采用b/s结构。RMT可同时管理组网的不同种类、不同型号的阅读器,同时也支持多客户端同时访问。组网阅读器的数量能达到成百上千。
RMT所处理的与阅读器操作相关的事件分为资源受限事件和资源不受限事件。资源受限事件又根据所受到的不同类型资源的限制细分为不同类型的资源受限事件。这里所说的资源是指RMT服务器CPU处理能力以及网络环境等。资源受限事件是指会受各种资源的性能影响的事件。例如,多个阅读器同时进行版本下载操作时,由于受到网络带宽和RMT服务器CUP的处理能力这样的资源限制,而下载速度缓慢,对用户易用性影响恶劣。但是如果只是简单的限制可同时进行版本下载的阅读器的数量,又会给用户带来不友好的感觉。
现有技术存在的问题在于RMT不能同时处理资源不受限事件以及多种不同类型的资源受限事件,并且在处理资源受限事件的时候,处理效率比较低下的问题。因此,RMT需要提供一种可靠、有效的方式来进行对不同类型事件的并发处理和调度,以适应RMT对组网阅读器进行管理时的高并发性环境,从而为用户提供一个友好、易用的管理终端。
【发明内容】
本发明的主要目的在于提供一种射频识别系统中事件处理的方法及装置,用于实现RMT同时处理资源不受限事件以及多种类型的资源受限事件,并且充分利用有限的资源尽可能快速的处理尽可能多的资源受限事件,提升RMT的整体处理能力。
为了实现上述目的,本发明提供了一种射频识别系统中事件处理的方法,其特征在于,包括如下步骤:
A、阅读器将用户从页面发起的操作指令发送给阅读器管理终端,阅读器管理终端根据所述操作指令为每一个阅读器单独创建一个事件,所述事件的类型包括资源不受限事件和资源受限事件,其中,所述资源受限事件是指会受各种资源的性能影响的事件,所述资源不受限事件是指不会受各种资源的性能影响的事件;
B、事件管理器判断所述事件的类型,如果是资源不受限事件,则放入待处理事件池,将事件状态改为待处理状态,同时唤醒事件处理线程并转到步骤D,如果是资源受限事件则放入预事件池,同时启动事件过滤线程;
C、事件过滤线程为预事件池中的资源受限事件分配资源锁,事件管理器将分配到资源锁的资源受限事件放入待处理事件池中,同时启动事件处理线程;
D、事件处理线程从待处理事件池中取出事件进行处理,事件管理器将所述事件添加到已处理事件池中,该事件状态变更为已处理状态;
E、阅读器管理终端发送消息给阅读器。
进一步,所述步骤C中,还包括步骤:事件过滤线程循环判断整个预事件池是否有事件,若有则为其申请资源锁。
进一步,所述步骤C中,还包括步骤:事件过滤线程循环判断资源锁中是否有可用资源锁,如有可用资源锁,则事件过滤线程成功为所述资源受限事件申请到资源锁,如无可用资源锁,则事件过滤线程阻塞。
进一步,所述步骤E之后,还包括步骤:阅读器返回消息给阅读器管理终端,事件管理器根据阅读器返回消息中的事件号,在已处理事件池中找到相应事件,使所述事件执行返回消息的操作,判断所述事件是否占有资源锁,有则释放该资源锁并将其从事件池中移除,无则直接移除。
进一步,所述步骤E之后,还包括步骤:启动定时器,当定时器设置的超时时间到,事件管理器判断所述事件是否占有资源锁,有则释放该资源锁并将其从事件池中移除,无则直接移除。
本发明还提供一种射频识别系统中事件处理的装置,包括:
阅读器,用于将用户从页面发起的操作指令发送给阅读器管理终端;
阅读器管理终端,用于根据操作指令为每一个阅读器单独创建一个事件,事件的类型包括资源不受限事件和资源受限事件,其中,资源受限事件是指会受各种资源的性能影响的事件,资源不受限事件是指不会受各种资源的性能影响的事件;
事件管理器,用于判断事件的类型,如果是资源不受限事件,则放入待处理事件池,将事件状态改为待处理状态,同时唤醒事件处理线程并转到步骤D,如果是资源受限事件则放入预事件池,同时启动事件过滤线程;
事件过滤线程模块,用于为预事件池中的资源受限事件分配资源锁;
事件管理器进一步用于:将分配到资源锁的资源受限事件放入待处理事件池中,同时启动事件处理线程;
事件处理线程模块,用于从待处理事件池中取出事件进行处理;
事件管理器进一步用于:将事件添加到已处理事件池中,该事件状态变更为已处理状态;
阅读器管理终端进一步用于:发送消息给阅读器。
其中,事件过滤线程模块还用于:循环判断整个预事件池是否有事件,若有则为其申请资源锁。
其中,事件过滤线程模块还用于:循环判断资源锁中是否有可用资源锁,如有可用资源锁,则事件过滤器成功为资源受限事件申请到资源锁,如无可用资源锁,则事件过滤线程阻塞。
其中,阅读器进一步用于:在阅读器管理终端发送消息给阅读器后,返回消息给阅读器管理终端;
事件管理器还用于:根据阅读器返回消息中的事件号,在已处理事件池中找到相应事件,使事件执行返回消息的操作,判断事件是否占有资源锁,有则释放该资源锁并将其从事件池中移除,无则直接移除。
进一步,事件管理器进一步用于:当定时器设置的超时时间到,判断事件是否占有资源锁,有则释放该资源锁并将其从事件池中移除,无则直接移除。
由上可知,通过事件过滤线程和事件调度线程的协同工作使得RMT不仅能够处理不受限制数量的资源受限事件,而且能够使得每一个资源受限事件在运行时得到充足的资源,从而实现高效的处理。解决了RMT由于资源的限制带来的处理效率低下等问题,提高了RMT的高并发处理能力。
【附图说明】
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明的模型示意图;
图2是本发明一个具体实施例的流程图。
【具体实施方式】
下面将参考附图和实施例详细说明本发明。
本发明通过事件过滤线程和事件处理线程这两个线程的协同工作,以及事件管理器对事件的统一管理,使得RMT能够同时处理资源不受限事件以及各种类型的资源受限事件,同时引进“资源锁”的概念,使得RMT能够充分地利用有限的资源快速地处理尽可能多的不同类型的资源受限事件。本发明所述的“事件”是RMT发起的对一个阅读器的一次操作的抽象。事件具有事件号、事件状态、结果等属性以及向阅读器发送消息,处理阅读器返回消息,设置超时时间和超时任务等功能。本发明所述的资源锁用于对资源受限事件进行控制。
如图1所示,设置于RMT服务端的预事件池只用于存放所有未获得资源锁的资源受限事件,预事件池中可存放的资源受限事件是没有数量限制的。预事件池实际上是个事件队列,其中存放的事件是有先后顺序的,采用先到先存先取的机制。
当有资源受限事件被添加到预事件池中后,事件过滤线程负责从预事件池中取出资源受限事件,然后到资源锁池为其申请相应类型的资源锁并分配给该事件。
资源锁池也是设置在RMT服务端的,里面可以存放各种类型的资源锁,以满足不同的需求。资源锁的类型根据受限的资源来分类,可分为CPU资源锁,网络资源锁,CPU网络资源锁等等。每种资源锁的类型都对应相应类型的资源受限事件。锁池中的资源锁个数是有限的,采取先到先得的方式获取,资源锁数量的设置根据资源的大小设置。资源锁具有两种状态,分别是空闲状态以及被占用状态。空闲状态的资源锁可使用,被占用状态的资源锁不可使用。
当资源受限的事件获得了相应类型的资源锁之后,由事件管理器负责将此事件放入事件池。事件池中事件均被默认为可处理事件,由事件处理线程负责从事件池中取出事件,使事件完成发送消息到阅读器的操作。当阅读器返回消息时,事件要释放资源锁,即将资源锁状态设为空闲;或者超时状况下,事件也要释放资源锁。事件池的实质也是事件队列,其存取机制同预事件池。
设置于RMT服务端的事件池中可存放各种类型的事件,包括资源受限事件或者资源不受限事件。事件池中存放事件无数量限制。事件池内部又分为两种类型的子事件池,分别是待处理事件池和已处理事件池。根据事件的不同状态,存放不同状态的事件。其中待处理事件池中存放的是处于待处理状态的事件,已处理事件池中存放的是正在处理中状态的事件。关于事件的状态,下面将详细说明。
事件具有5种不同的状态,分别是初始化状态、待处理状态、正在处理中状态、已处理状态以及超时状态。根据不同的事件状态,事件管理器对事件进行不同的操作管理。当事件初始被创建时,其状态被设置为初始化状态;当事件被事件管理器放入待处理事件池时,其状态被设为待处理状态;当事件被事件处理线程处理时,其状态被设为正在处理状态,当阅读器返回消息时,事件被设为已处理状态;若在规定的时间内,阅读器未返回消息,则事件被设为超时状态。
如图2所示,为本发明一个实施例提供的方法实现流程图。该流程图包括以下步骤:
步骤201:用户从页面发起一次对阅读器的操作。此次操作既可以是只对一个阅读器进行的操作,又可以是对多个阅读器同时进行的操作;
步骤201:RMT服务端根据用户的操作,对应生成相应的事件,由事件管理器将资源受限事件放入预事件池,资源不受限事件放入事件池,生成事件的数量和用户所选择的阅读器的数量是一致的,即RMT服务器为每一个阅读器单独生成一个事件;
步骤203:事件过滤线程启动,此线程主要负责从预任务池中获取事件并为其分配资源锁;
步骤204:循环判断整个预事件池是否有事件,若有则执行步骤205;若无则执行步骤206;
步骤205:资源受限事件被添加到预事件池中之后,唤醒事件过滤线程;
步骤206:当预事件池中没有事件时,事件过滤线程阻塞,当有事件添加到预事件池中时被唤醒;
步骤207:事件过滤线程被唤醒之后,去预事件池中取出资源受限事件;步骤208:判断预事件池中是否存在资源受限事件,存在则执行步骤209,不存在则执行步骤206;
步骤209:预任务池中存在资源受限事件,事件过滤线程为其去资源锁池申请资源锁;
步骤210:判断资源锁池中是否存在相应类型的空闲资源锁,若不存在则执行步骤211,若存在则执行步骤212;
步骤211:事件过滤线程阻塞并等待唤醒,当资源锁池中不存在相应类型的空闲资源锁时事件过滤线程阻塞,并当资源锁池中有相应类型空闲资源锁时被唤醒;
步骤212:事件管理器将获得了资源锁的事件放入到待处理事件池中,同时启动事件处理线程;
步骤213:事件处理线程阻塞并等待唤醒,当事件池中有待处理事件时,事件处理线程被唤醒,否则仍然阻塞;
步骤214:事件处理线程从待处理事件池中获得待处理事件。
步骤215:判断待处理事件池中是否存在待处理事件,若存在,则执行步骤216,若不存在则执行步骤213;
步骤216:事件管理器将此事件从待处理事件池中移除,同时添加到已处理事件池中,然后使事件执行发送消息到阅读器的任务,并启动定时器;
步骤217:阅读器返回消息,阅读器返回消息为异步;
步骤218:事件管理器根据返回消息中的事件号,在已处理事件池中找到相应的事件,并且使事件执行返回消息的操作;
步骤219:释放该事件占有的资源锁,然后执行步骤211;
步骤220:当设置的超时时间到,定时器开始执行定时器任务;
步骤221:判断该事件是否占有资源锁,是则执行步骤219,否则执行步骤222;
步骤222:事件管理器从已处理事件池中将该事件删除。
本发明提出了一种资源不受限事件和多种类型资源受限事件统一处理的方法,用于实现及保证各类型事件的高并发性又使各类型事件都能得到高效处理的目的,进而提高了射频识别系统中RMT的整体性能。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有多种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。