更新设备的设备状态的方法及其相关设备与流程
未命名
08-27
阅读:186
评论:0
1.本技术涉及设备管理技术领域,特别是涉及更新设备的设备状态的方法及其相关设备。
背景技术:
2.本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。不应以此处的描述包括在本部分中就承认是现有技术。
3.为实时展示物联网系统海量设备的在离线连接状态,需要系统提供实时处理海量设备连接状态存储及展示的能力,用户可根据系统展示的设备状态直观的判断现场设备的在离线状态,为达到上述目的,这就需要对设备进行离线检测。对于离线检测方式,目前的基于redis(redis是一款开源的key-value数据库)缓存key过期的设备在离线计算方法,其主要是通过redis本身key过期机制发出的消息来维护系统设备在离线状态,这种机制在key数量较少(即设备较少)的情况还能勉强使用,当key对应的设备数量急剧增长,达到上百万、上千万时就会出现严重的性能问题,由于该种机制不能快速、准确的找出离线设备,只能全局遍历redis中所有的key才能将离线设备找全,导致在全局遍历过程中,绝大多数本身在线的设备也被遍历了一遍,不仅浪费系统资源,而且性能极差。
技术实现要素:
4.本发明实施例提供的更新设备的设备状态的方法及其相关设备,至少解决只能全局遍历redis中所有的key才能将离线设备找全的问题。
5.根据本发明的一个方面,提供了一种更新设备的设备状态的方法,包括:
6.获取元数据表,所述元数据表记录有在缓存数据库中创建的存储空间的属性信息,其中,所述存储空间存储有预定设备的设备信息,所述设备信息包括离线时间,所述预定设备为所述离线时间位于预定时间段内的设备,所述属性信息包括根据所述预定时间段确定的离线起始时间和离线终止时间;
7.根据预设的离线检测周期确定当前进行离线检测时的离线检测时间,以根据所述离线检测时间和所述属性信息确定待检测的目标存储空间,其中,所述离线检测时间位于所述目标存储空间的所述离线起始时间和所述离线终止时间之间;
8.根据所述离线检测时间和所述目标存储空间存储的所述设备信息确定离线设备,以将所述离线设备的设备状态更新为离线,其中,所述离线设备为所述离线时间不大于所述离线检测时间的设备。
9.在其中的一些实施例中,所述属性信息还包括所述存储空间的身份标识,所述身份标识为以所述预定时间段对所述存储空间进行命名获得的标识信息,根据所述离线检测时间和所述属性信息确定待检测的目标存储空间的步骤包括:
10.根据所述离线检测时间、所述离线起始时间以及所述离线终止时间确定查询条件,其中,所述查询条件中的所述离线检测时间大于所述离线起始时间、不大于所述离线终
止时间;
11.在所述元数据表查找满足所述查询条件的所述属性信息,以根据所述属性信息中的所述身份标识确定所述目标存储空间。
12.在其中的一些实施例中,所述设备信息还包括设备标识信息,所述存储空间存储所述预定设备的所述设备信息的步骤包括:
13.所述存储空间采用有序集合的数据结构存储所述设备信息,其中,所述设备标识信息作为所述有序集合的存储元素进行存储,所述离线时间作为用于对所述设备标识信息进行排序的标识权重进行存储;
14.则,根据所述离线检测时间和所述目标存储空间存储的所述设备信息确定离线设备的步骤包括:
15.获取所述有序集合中不大于所述离线检测时间的所述离线时间对应的所述设备标识信息,以根据所述设备标识信息确定所述离线设备。
16.在其中的一些实施例中,所述存储空间创建有多个存储段,所述存储段的存储容量为预定值,所述存储段用于采用所述有序集合存储预定值个所述设备信息,其中,所述属性信息还包括存储段信息,所述存储段信息为用于表明所述存储空间具有的所述存储段的信息,根据所述离线检测时间和所述属性信息确定待检测的目标存储空间的步骤还包括:
17.根据所述存储段信息确定所述目标存储空间具有的目标存储段,以根据所述离线检测时间和所述目标存储段存储的所述设备信息确定所述离线设备。
18.在其中的一些实施例中,所述方法还包括:
19.判断所述目标存储空间中所有所述目标存储段存储的所述设备信息所属的所述预定设备的设备状态是否均更新为离线,若是,将所述元数据表中记录的所述目标存储空间的所述属性信息删除。
20.在其中的一些实施例中,将所述元数据表中记录的所述目标存储空间的所述属性信息删除之前,所述方法还包括:
21.确定所述离线终止时间小于所述离线检测时间的所述目标存储空间,以删除所述目标存储空间的所述目标存储段存储的所述设备信息。
22.在其中的一些实施例中,根据预设的离线检测周期确定当前进行离线检测时的离线检测时间之前,所述方法还包括:
23.根据预设的存储路由规则确定用于保存所述设备信息的所述存储段,其中,所述存储路由规则为根据所述预定设备的所述离线时间和所述属性信息确定所述存储段的规则。
24.在其中的一些实施例中,根据预设的存储路由规则确定用于保存所述设备信息的所述存储段的步骤包括:
25.根据所述离线时间和所述属性信息,确定所述缓存数据库中是否已存在能够保存所述设备信息的原始存储空间,若否,在所述缓存数据库创建新的所述存储空间,以在新的所述存储空间创建用于保存所述设备信息的所述存储段,并将新的所述存储空间的所述属性信息保存于所述元数据表。
26.在其中的一些实施例中,根据预设的存储路由规则确定用于保存所述设备信息的所述存储段的步骤还包括:
27.根据所述离线时间和所述属性信息,确定所述缓存数据库中是否已存在能够保存所述设备信息的原始存储空间,若是,判断所述原始存储空间中是否存在所述存储容量未达到所述预定值的预选存储段,若存在,将所述预选存储段作为用于保存所述设备信息的所述存储段。
28.在其中的一些实施例中,根据预设的存储路由规则确定用于保存所述设备信息的所述存储段的步骤还包括:
29.若所述原始存储空间中不存在所述预选存储段,则在所述原始存储空间创建用于保存所述设备信息的新的所述存储段,并在所述元数据表保存的所述原始存储空间的所述属性信息中存入新的所述存储段的存储段信息。
30.在其中的一些实施例中,所述存储空间存储所述预定设备的所述设备信息的步骤还包括:
31.在所述预定设备的原始离线时间变更为目标离线时间时,根据所述目标离线时间和所述存储路由规则确定另一所述存储空间的存储段,以将所述预定设备包括所述目标离线时间的所述设备信息通过另一所述存储空间的存储段进行存储。
32.在其中的一些实施例中,将所述预定设备包括所述目标离线时间的所述设备信息通过另一所述存储段进行存储之前,所述方法还包括:
33.根据预先保存的用于表明所述设备标识信息和所述存储段之间存储对应关系的映射信息,确定存储了包括所述原始离线时间的原始设备信息的所述存储段,以将所述存储段中的所述原始设备信息删除。
34.根据本发明的另一个方面,提供了一种更新设备的设备状态的装置,所述装置用于执行所述的更新设备的设备状态的方法。
35.根据本发明的另一个方面,提供了一种物联网系统,所述物联网系统包括所述的更新设备的设备状态的装置。
36.本发明实施例的有益效果:
37.本发明实施例将离线时间位于预定时间段内的设备的设备信息采用对应的存储空间进行集中存储,在进行离线检测时,根据离线检测时间和元数据表中存储的存储空间的属性信息,确定保存设备的设备信息的目标存储空间后,即可根据离线检测时间和目标存储空间存储的设备信息确定离线设备,从而将离线设备的设备状态更新为离线,无需遍历所有的存储空间即可找全离线设备,离线检测目标明确、不会存在漏检的情况,整体更新性能高,在设备数量规模巨大的情况下,依然能够快速检出所有离线设备,不会随着设备数量的增加而增加查找成本。
38.本发明的一个或多个实施例的细节在以下附图和描述中提出,以使本发明的其他特征、目的和优点更加简明易懂。
附图说明
39.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
40.图1为本发明一实施例提供的更新设备的设备状态的方法的流程示意图;
41.图2为本发明一实施例提供的确定目标存储空间的流程示意图;
42.图3为本发明一实施例提供的存储空间和存储段的关系示意图;
43.图4为本发明一实施例提供的基于存储路由规则确定存储段的流程示意图;
44.图5为本发明一实施例提供的更新设备的离线时间的示意图;
45.图6为本发明一实施例提供的更新系统更新离线设备的设备状态的系统架构图;
46.图7为本发明一实施例提供的更新离线设备的设备状态的示意图。
具体实施方式
47.下面将参照附图更详细地描述本实施例的实施例。虽然附图中显示了本实施例的某些实施例,然而应当理解的是,本实施例可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本实施例。应当理解的是,本实施例的附图及实施例仅用于示例性作用,并非用于限制本实施例的保护范围。
48.首先,在对本发明实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
49.redis:一款开源的key-value数据库,常用做缓存使用。
50.zset:有序集合,redis中一种常用的数据结构,底层采用跳跃表实现。
51.跳跃表:是一种能高效实现插入、删除、查找的内存数据结构,这些操作的期望复杂度都是o(logn)。优势在于实现简单,而且在并发场景下加锁粒度更小,从而可以实现更高的并发性。
52.存储空间(bucket):用于按照自然时间存放设备的设备信息,如按预定时间间隔(每十分钟、十五分钟、二十分钟等)对自然时间进行分组获得相应的预定时间段,一个bucket对应存储离线时间在一个预定时间段(如某年某月某日的十点至十点一十这一时间段)内的设备的设备信息。
53.存储段(segment):bucket中实际采用zset存储数据的存储位置,一个bucket中可以存在一个或者多个segment。
54.心跳周期:设备数据上报周期,不同设备数据上报周期不一样。
55.key过期:redis中的key会设置一个过期时间,当过期时间等于当前时间时,说明这个key已失效,需要被删除,即key过期。
56.定时任务:周期性的在指定时间范围内触发、执行某个动作。
57.mongodb:是一个基于分布式文件存储的数据库,由c++语言编写,是旨在为web应用提供可扩展的高效数据存储解决方案。
58.基于redis缓存key过期方案是通过redis本身key过期机制发出的消息来维护系统设备在离线状态。这种机制由于只能全局遍历redis中所有的key才能将离线设备找全,在key数量较少的情况还能勉强使用,当key的数量急剧增长,达到上百万、上千万时就会出现严重的性能问题。redis会将每个设置了过期时间的key放入到一个独立的过期字典中,如默认每100ms进行一次过期扫描时,扫描过程如下:随机抽取20个key2、删除这20个key2中过期的key3、如果过期的key3的比例超过抽取总个数的1/4,就重复随机抽取的步骤,继
续删除过期的key。从上述扫描过程可以看出,由于每个设备的key都会设置过期时间,当系统存在的设备量达到千万级别时,按照redis的key过期机制,需要将每个key都遍历完才能把离线设备找全。那么按照100ms遍历20个key的速率,对于100w个设备,大概需要5000秒(约等于83分钟)才能将离线设备找全。100w个设备中全部遍历一次就需要83分钟,而且这83分钟之内,进行过期key遍历的时候也会影响redis其他功能的使用。如果设备量增加到一千万甚至一亿的时候,上述机制的问题将会被进一步放大。由此可以说明,使用redis的key过期超时来实现设备在离线状态管理,在海量设备存储的情况下并不适用,其核心的问题主要在于:
59.1、只能全局遍历redis中所有的key,导致在遍历过程中,绝大多数本身处于在线状态的设备也被遍历了一遍,极大的浪费了系统的性能和资源。
60.2、扫描过期key方案本身不具有扩展性,随着设备量的增加,需要遍历的key越来越多,系统的负担越来越大,不能实现随着设备量增加,需要遍历的范围却变化不大的效果。
61.3、随着设备的增加,redis的key过期通知延迟现象会越发明显,最终导致设备状态管理混乱。
62.4、redis中的key即使过期了,但是由于redis本身的检测具有一定的随机性,所以即使key过期了也不能及时的发现,就算发现了key已过期也不一定会立即删除,而且只有在删除key之后才会产生过期事件,由于通过redis的key过期事件来判断设备是否离线,会导致设备在离线转态判断的一个滞后性,key数量越大时,滞后性越大。
63.本发明的发明人经过深入研究发现,虽然基于数据库或mongodb获取离线设备方案描述了设备离线时间=设备上报时间+设备心跳周期,该方案在设备上报数据时计算出设备离线时间并存入数据库或者mongodb下的表结构中,定时任务每隔1一分钟检测一次离线设备。但该方案只是描述了一种通用场景,忽略了在海量设备场景下存储数据结构的重要性。在海量设备的情况下,如果忽略存储结构的重要性,将所有在离线数据都存储在一起时,由于设备离线检测场景下的定时任务每隔一分钟就要从表结构中读取一次离线设备,随着设备的增多,表里面的数据越来越多,读取的性能越来越差,而且从数据库中返回的数量也会越来越多,最终的结果就是读取超时,数据库i/o压力越来越大,功能不可用。通过数据上报和离线检测两个场景可知,在海量设备场景下,在离线状态数据的存储结构起着关键性作用,甚至决定着检测方案是否具有可行性,是否具有落地实现的价值。
64.鉴于目前只能全局遍历redis中所有的key才能找全离线设备,而基于数据库或mongodb获取离线设备方案又未能考虑海量设备场景下存储数据结构的重要性的问题,本发明第一个实施例提供了一种更新设备的设备状态的方法,如图1所示,该方法包括如下步骤:
65.步骤s11:获取元数据表,元数据表记录有在缓存数据库中创建的存储空间的属性信息,其中,存储空间存储有预定设备的设备信息,设备信息包括离线时间,预定设备为离线时间位于预定时间段内的设备,属性信息包括根据预定时间段确定的离线起始时间和离线终止时间。
66.如本发明实施例按每十分钟为划分得到用于保存相应预定时间段的设备的设备信息的存储空间时,包括的存储空间如保存离线时间位于xxxx-12-05 10:00~10:10
(“xxxx”代表某年)这一时间段内的设备信息的存储空间(bucket),保存离线时间位于xxxx-12-05
67.10:10~10:20这一时间段内的设备信息的存储空间等。由于本发明实施例一个存储空间保存离线时间位于相应预定时间段内的设备信息,从而实现将离线时间相近的设备的设备信息进行集中存储,将离线时间不太接近的设备的设备信息按各自的离线时间分散在不同的存储空间进行存储,这种存储方式为海量设备场景下进行设备离线检测和上报场景的可行性提供了支撑。元数据表对存储了海量设备的设备信息的大量存储空间进行了全局统一、高效的维护和管理,在离线检测时基于元数据表记录的属性信息即可方便、快捷地确定保存有离线设备的设备信息的存储空间。
68.步骤s12:根据预设的离线检测周期确定当前进行离线检测时的离线检测时间,以根据离线检测时间和属性信息确定待检测的目标存储空间,其中,离线检测时间位于目标存储空间的离线起始时间和离线终止时间之间。
69.步骤s13:根据离线检测时间和目标存储空间存储的设备信息确定离线设备,以将离线设备的设备状态更新为离线,其中,离线设备为离线时间不大于离线检测时间的设备。
70.由此,本发明实施例只需根据离线检测时间,去目标存储空间找到相应的离线设备即可,无需遍历所有保存了设备信息的存储空间就能找全离线设备,且能避免对大量在线的设备进行扫描。在本发明一优选实施例中,将离线检测周期调整成相应离线检测时间在离线终止时间时,则在相应目标存储空间确定的设备信息均为离线设备,从而完全避免因检测扫描到在线设备而带来的计算压力,节约了设备所在系统(如物联网系统)的计算资源,系统性能高。其次,不会随着设备量的增加而给离线转态的更新设置带来滞后,从而及时将离线设备的设备状态进行更新,确保设备状态管理的有序进行。此外,相对基于数据库或mongodb获取离线设备的方案,由于本发明实施例将离线时间相近的设备的设备信息采用其中一个存储空间进行了集中存储,在离线检测时,只需根据当前的离线检测时间和目标存储空间存储的离线设备的设备信息即可快速准确定位到离线设备,此过程相当于直接在缓存数据库进行简单的get操作,不会给缓存数据库带来较大的读写压力,确保检测功能的可用。
71.由上可见,本发明实施例将离线时间位于预定时间段内的设备的设备信息采用对应的存储空间进行集中存储,在进行离线检测时,根据离线检测时间和元数据表中存储的存储空间的属性信息,确定保存设备的设备信息的目标存储空间后,即可根据离线检测时间和目标存储空间存储的设备信息确定离线设备,从而将离线设备的设备状态更新为离线,无需遍历所有的存储空间即可找全离线设备,离线检测目标明确、不会存在漏检的情况,整体更新性能高,在设备数量规模巨大的情况下,依然能够快速检出所有离线设备,不会随着设备数量的增加而增加查找成本。
72.上述元数据表中记录的属性信息还包括存储空间的身份标识,身份标识为以预定时间段对存储空间进行命名获得的标识信息,本发明实施例以预定时间段对存储空间进行命名时,获得如“xxxx-12-05 10:00~10:10”、“xxxx-12-05 10:10~10:20”等对存储空间进行唯一标识的身份标识(该身份标识即为存储空间的名称)。则如图2所示,步骤s12中根据离线检测时间和属性信息确定待检测的目标存储空间的步骤包括:
73.步骤s12:根据离线检测时间、离线起始时间以及离线终止时间确定查询条件,其
中,查询条件中的离线检测时间大于离线起始时间、不大于离线终止时间。本发明实施例将离线检测时间用current time表示、离线起始时间用srart time表示、离线终止时间用end time表示时,确定的查询条件即为“srart time《current time≤end time”。
74.步骤s22:在元数据表查找满足查询条件的属性信息,以根据属性信息中的身份标识确定目标存储空间。由此,本发明实施例在元数据表找到满足查询条件的属性信息后,即可根据属性信息中的身份标识快速在缓存数据库找到相应的目标存储空间,实现了根据当前的离线检测时间即可方便、快捷地查询到存储了离线设备的设备信息的目标存储空间。
75.可见,本发明实施例以预定时间段对存储空间进行命名将获得的存储空间的身份标识记录于元数据表,在进行离线检测时,根据离线检测时间、离线起始时间以及离线终止时间确定的查询条件即可方便快捷地找到目标存储空间,从而高效地从目标存储空间处获取离线设备的设备信息,进而进一步根据离线检测时间和获取的设备信息确定哪些设备属于离线设备。
76.本发明实施例提供的设备信息还包括设备标识信息,设备标识信息如对相应设备进行唯一标识的设备序列号,也可是其他形式的标识信息,本发明实施例在此对设备标识信息不做唯一限定。其中,存储空间存储预定设备的设备信息的步骤包括:存储空间采用有序集合的数据结构存储设备信息,其中,设备标识信息作为有序集合的存储元素(即有序集合存储业务数据的member)进行存储,离线时间作为用于对设备标识信息进行排序的标识权重(即有序集合的score)进行存储。则步骤s13中,根据离线检测时间和目标存储空间存储的设备信息确定离线设备的步骤包括:获取有序集合中不大于离线检测时间的离线时间对应的设备标识信息,以根据设备标识信息确定离线设备。有序集合为缓存数据库(如redis)中一种常用的数据结构,其底层采用跳跃表实现,由于跳跃表在内存中进行读取和写入数据信息的性能都非常高,因此,存储空间采用有序集合对设备信息进行存储也将获得很高的读写性能,确保设备信息的存储和离线检测时的读取过程均能在很好的计算性能下进行,避免产生更新延迟现象,从而有序进行设备状态的更新管理。
77.在本发明实施例中,由于有序集合的底层实现方式是采用跳跃表这种数据结构,虽然跳跃表在内存中进行读取和写入性能都非常高,但是在超过了一定量之后,跳跃表的性能会随着元素个数(本发明实施例主要为设备信息的数量)增加而下降。对此,为避免随着需存储的设备信息的数量的增加而导致跳跃表的性能下降,进而导致存储空间的存储性能下降,本发明实施例提供的存储空间创建有多个存储段,存储段的存储容量为预定值,存储段用于采用有序集合存储预定值个设备信息,如规定存储容量的预定值为10000,则每个存储段的有序集合(即zset)就只能保存10000个设备的设备信息。其中,属性信息还包括存储段信息,存储段信息为用于表明存储空间具有的存储段的信息,步骤s12中根据离线检测时间和属性信息确定待检测的目标存储空间的步骤还包括:根据存储段信息确定目标存储空间具有的目标存储段,以根据离线检测时间和目标存储段存储的设备信息确定离线设备。具体地,由于有序集合还包括key部分,在此,存储段信息可以是用于对相应存储空间的存储段进行唯一标识的存储段名称,因此,本发明实施例可以将存储段名称作为zset的key部分进行存储,由此,本发明实施例即可根据存储段信息找到相应的目标存储段。
78.可见,针对在海量设备情况下可能存在上千万、上亿的设备量,本发明实施例通过在存储空间创建多个存储段来采用有序集合的方式对设备信息进行存储,由于对每个存储
段的存储容量进行了限制,每个存储段只能存储预定值个设备信息,实现通过便于管理和维护的存储段对上千万、上亿数量的设备信息进行存储的同时,确保了存储段及其所在存储空间的存储性能。其次,在进行离线检测时,又能够根据离线检测时间方便、快捷地查询到即将离线的离线设备的设备信息在缓存数据库所处的存储空间,并在根据当前的离线检测时间快速找到目标存储空间后,即可基于存储段信息快速找到该目标存储空间具有的目标存储段,以及时根据相应目标存储段存储的设备信息确定离线设备,确保对离线设备的设备状态进行及时更新。
79.为避免对过期的存储空间(过期的存储空间中存储的设备信息所属的设备均为离线设备)多次重复检测,本发明实施例提供的方法还包括:判断目标存储空间中所有目标存储段存储的设备信息所属的预定设备的设备状态是否均更新为离线,若是,将元数据表中记录的目标存储空间的属性信息删除。将目标存储空间的属性信息从元数据表删除即可避免对过期的存储空间进行多次重复检测,从而节约计算资源,获得更佳的更新性能。同时,为避免过期的存储空间继续占用缓存数据库的内存,在将元数据表中记录的目标存储空间的属性信息删除之前,本发明实施例提供的方法还包括:确定离线终止时间小于离线检测时间的目标存储空间,以删除目标存储空间的目标存储段存储的设备信息。本发明实施例删除目标存储段存储的设备信息时,可单独起一个用于删除目标存储段的定时清理任务,如每隔半小时执行一次清理工作,从而避免过期存储空间继续占用缓存数据库的内存,从而获得更佳的设备状态更新性能。
80.可见,本发明实施例能够随着时间的推移,当存储空间(bucket)中所有离线设备的设备状态都更新完成之后,就需要清理bucket及其下存储段(segment)中存储的设备信息等数据,避免继续占用内存。对此,本发明实施例单独起一个定时清理任务,end time《current time的bucket都在本次清理范围之内。确定bucket之后根据元数据表中记录的存储段信息(如存储段名称:segment_11、segment_12等)找到本次要清理的segment范围,然后逐个执行segment的remove range by score(按离线时间score排序出的设备信息)方法清空segment存储的所有内容(如包括存储的存储段名称、设备序列号、离线时间等数据内容)。最后删除元数据表中记录的存储空间的属性信息,避免多次重复检测,确保设备状态更新性能。
81.在步骤s12中,根据预设的离线检测周期确定当前进行离线检测时的离线检测时间之前,本发明实施例提供的方法还包括:根据预设的存储路由规则确定用于保存设备信息的存储段,其中,存储路由规则为根据预定设备的离线时间和属性信息确定存储段的规则。具体地,本发明实施例根据预设的存储路由规则确定用于保存设备信息的存储段的步骤包括:根据离线时间和属性信息,确定缓存数据库中是否已存在能够保存设备信息的原始存储空间,若否,在缓存数据库创建新的存储空间,以在新的存储空间创建用于保存设备信息的存储段,并将新的存储空间的属性信息保存于元数据表。
82.本发明实施例根据离线时间和属性信息确定原始存储空间时,判断离线时间是否位于属性信息中的离线起始时间和离线终止时间之间,若是,则该属性信息所属的存储空间即为需要在缓存数据库中查找到的原始存储空间,根据该存储空间的身份标识在缓存数据库找到该存储空间即可。如果不存在能够保存相应设备的设备信息的原始存储空间,本发明实施例在缓存数据库创建新的存储空间及其存储段即可,进而将设备的设备信息保存
在新的存储空间的存储段中,并将新存储空间的属性信息保存于元数据表,便于进行离线检测时基于元数据表查找相应属性信息描述的存储空间,进而根据从存储空间处获取到的设备信息将相应离线设备的设备状态更新为离线。
83.可见,本发明实施例实现了将离线时间相近的设备信息进行集中存储管理,离线检测时,根据当前的离线检测时间即可快速找到保存了离线设备的设备信息的目标存储空间的目标存储段,无需全局遍历所有存储空间保存的设备信息即可找全离线设备,且能避免对大量在线的设备进行扫描,不会出现漏检的情况,节约了设备所在系统的计算资源,系统性能高。
84.本发明实施例根据预设的存储路由规则确定用于保存设备信息的存储段的步骤还包括:根据离线时间和属性信息,确定缓存数据库中是否已存在能够保存设备信息的原始存储空间,若是,判断原始存储空间中是否存在存储容量未达到预定值的预选存储段,若存在,将预选存储段作为用于保存设备信息的存储段。即本发明实施例在已有的原始存储空间中还有存储容量未满的预选存储段时,利用预选存储段保存相应设备的设备信息即可,将设备信息存储在存储容量未满的存储段,在保障设备信息能够存储的同时,避免存储段存入过多的设备信息而带来的性能问题,设备状态的更新性能高。
85.如果原始存储空间中已存在的预选存储段的存储容量均达到了预定值,本发明实施例根据预设的存储路由规则确定用于保存设备信息的存储段的步骤还包括:若原始存储空间中不存在预选存储段,则在原始存储空间创建用于保存设备信息的新的存储段,并在元数据表保存的原始存储空间的属性信息中存入新的存储段的存储段信息。由此,本发明实施例不会将设备信息存入存储容量已经满的存储段中,在没有存储容量未满的存储段时,通过新建一个存储段来对新产生的设备信息进行存储,从而确保存储空间的存储性能,进而保障了设备状态的更新性能。
86.此外,基于数据库或mongodb获取离线设备方案由于未考虑存储数据结构的重要性,该方案在设备数据上报场景下,由于设备每上报一次数据就需要更新表结构中的离线时间一次,对于设备数据上报比较频繁的场景,该表所承受的并发和写入压力都将是巨大的,甚至可能导致系统崩溃,功能不可用。对此,本发明实施例提供的方法还包括:在预定设备的原始离线时间变更为目标离线时间时,根据目标离线时间和存储路由规则确定另一存储空间的存储段,以将预定设备包括目标离线时间的设备信息通过另一存储空间的存储段进行存储。达到更新设备的离线时间的目的,也由此可见,由于具有不同离线时间的不同设备的设备信息都是分散在不同的存储空间的存储段中进行的存储,避免了对集中式存储了大量设备信息的存储空间进行并发写入更新的操作,在zset本身的读写性能非常好的情况下,数据上报更新场景的整体性能也会很高,不会导致设备所在系统产生崩溃甚至功能不可用的现象。
87.其中,将预定设备的设备标识信息和目标离线时间通过另一存储空间的存储段进行存储之前,本发明实施例提供的方法还包括:根据预先保存的用于表明设备标识信息和存储段之间存储对应关系的映射信息,确定存储了包括原始离线时间的原始设备信息的存储段,以将存储段中的原始设备信息删除。即本发明实施例在设备的离线时间产生变更后,根据预先保存的映射信息即可快速查找到保存了该设备的原始设备信息的存储段,从而将原始设备信息从相应的存储段删除,不仅减少了过期离线时间在存储段占用的内存,还能
确保删除了原始设备信息的存储段能够继续存储新的设备的设备信息。
88.综上,本发明实施例与基于redis缓存key过期的离线计算方案相比,基于redis缓存key过期的离线计算方案需要遍历redis中所有设备的key才能找全离线设备,不仅浪费设备所在系统的计算资源,而且性能极差,且存在检测随机性和漏检的情况。而本发明实施例不用遍历所有存储空间就能找全离线设备,因为离线设备早已计算好,且整个处理过程都是批处理,整体性能较高。而且本发明实施例具有极强的扩展性,随着设备量不断增加,离线设备始终都能基于离线检测时间方便快捷地确定,不会随着设备数量增加而增加明显的查找成本。基于数据库或mongodb获取离线设备方案虽然给出了一种离线设备的普遍离线计算和检测方案,但是对于在离线状态维护及离线检测过程中关键的数据结构却没有相应设计,其整体设计实际是一个“半成品”,存在较大的遗漏,并不是一个完整的设备在离线状态维护和检测方案。而本发明实施例对即将进行离线检测的设备的设备信息单独维护,将离线时间接近的设备信息整合集中存储于预定的存储空间,这样对于离线检测场景就会非常友好,只需根据当前离线检测时间直接从相应存储空间的存储段处获取准备好的设备信息即可,相当于在缓存数据库进行简单的get操作,不仅便于对存储空间及其下的存储段进行管理和维护,离线设备的检测过程也更加高效快捷。同时由于将离线时间并不太接近的设备信息分散存储在了不同的存储空间,在设备上报数据的场景中,避免了针对单表或者单个存储空间的瞬时高并发操作,极大的减少了竞争写入的情况,既能保证功能平稳运行,同时也具备较高的计算更新等性能。
89.本发明第二个实施例提供了一种更新设备的设备状态的装置,该装置用于执行更新设备的设备状态的方法,该更新设备的设备状态的方法具体请参见本发明第一个实施例提供的内容,本发明实施例在此不再赘述。
90.本发明实施例提供的装置能够将离线时间位于预定时间段内的设备的设备信息采用对应的存储空间进行集中存储,该装置在进行离线检测时,根据离线检测时间和元数据表中存储的存储空间的属性信息,确定保存设备的设备信息的目标存储空间后,即可根据离线检测时间和目标存储空间存储的设备信息确定离线设备,从而将离线设备的设备状态更新为离线,无需遍历所有的存储空间即可找全离线设备,离线检测目标明确、不会存在漏检的情况,整体更新性能高,在设备数量规模巨大的情况下,依然能够快速检出所有离线设备,不会随着设备数量的增加而增加查找成本。
91.本发明第三个实施例提供了一种物联网系统,该物联网系统包括更新设备的设备状态的装置,该更新设备的设备状态的装置具体请参见本发明第二个实施例提供的内容,本发明实施例在此不再赘述。
92.本发明实施例提供的物联网系统能够将离线时间位于预定时间段内的设备的设备信息采用对应的存储空间进行集中存储,该系统在进行离线检测时,根据离线检测时间和元数据表中存储的存储空间的属性信息,确定保存设备的设备信息的目标存储空间后,即可根据离线检测时间和目标存储空间存储的设备信息确定离线设备,从而将离线设备的设备状态更新为离线,无需遍历所有的存储空间即可找全离线设备,离线检测目标明确、不会存在漏检的情况,整体更新性能高,在设备数量规模巨大的情况下,依然能够快速检出所有离线设备,不会随着设备数量的增加而增加查找成本。
93.本发明第四个实施例提供了一种更新设备的设备状态的方法的应用实施例,该应
用实施例通过包括了流处理平台和设备管理服务的更新系统来对设备的设备状态进行更新,该更新系统通过在缓存数据库(redis)中创建存储空间来对物联网系统中的设备的离线时间、设备序列号等设备信息进行存储,相应的存储空间保存离线时间位于预定时间段内的设备的设备信息,具体地,该应用实施例的内容主要包括:
94.一、本发明应用实施例的关键技术说明:
95.存储空间(以下简称bucket)创建有多个存储段(以下简称segment),各存储段采用有序集合(zset)对设备信息进行存储,zset是redis中常用的一种有序集合,可以认为是一种有序队列。zset存储分为三个部分:key、member(即本发明第一实施例提到的存储元素,通常也称为成员)和score(即本发明第一实施例提到的标识权重,通常也称为分值),其中key可以理解为队列名称,作为队列的唯一标识,不可重复,本发明应用实施例中每个zset的key均为用于标识segment的存储段名称。member用于存储具体的不可重复的业务数据,本发明应用实施例用member存储设备的设备序列号。标识权重score作为队列中排序的依据,本发明应用实施例为设备的离线时间,存储格式为yyyy-mm-dd hh:mm:ss.sss(其中,“yyyy”表示年份,“mm”表示月份,“dd”表示某天,“hh”表示某时,“mm”表示某分,“ss”表示秒数,“sss”表示毫秒数)。
96.二、设置设备的离线时间的离线计算公式:
97.设备的离线时间=设备数据上报时间+设备心跳周期+预定的离线检测时间间隔。离线检测时间间隔是依据离线检测周期确定的时间间隔,如将离线定时任务的离线检测时间间隔设定为1分钟,为了避免因离线检测时间间隔误差导致设备在离线状态判断不准确,本发明应用实施例将设备的离线计算公式多增加一分钟,保证在离线设备状态判断的准确性。
98.三、bucket和segment的对应关系
99.本发明应用实施例收到设备进行数据上报的信息之后,根据离线计算公式算出离线时间,并存入到redis的zset中。由于redis的zset底层实现采用跳跃表这种数据结构,跳跃表在内存中进行读取和写入性能都非常高,但是在跳跃表存储的离线时间超过了一定量之后,跳跃表的性能会随着离线时间存储个数的增加而下降。因此,为了避免这种情况发生,本发明应用实施例控制每个zset中存储的数量在10000左右(即将每个存储段的存储容量的预定值设置成10000)。在海量设备情况下可能存在上千万、上亿的设备量,就需要成千、上万个zset进行存储,如何管理和维护好众多zset,且在进行离线检测时又要方便、快捷就成了本发明应用实施例的核心问题。在离线检测场景,最方便、快捷的方式就是直接根据当前的离线检测时间就能查询即将离线的设备范围。为了实现这种方便、快捷的效果,本发明应用实施例引入了存储空间bucket的概念。本发明应用实施例约定按照自然时间,如每10分钟作为一个bucket,bucket的名称则是以他对应的时间范围(即上述的预定时间段)进行命名:如xxxx-12-05 10:00~10:10作为一个bucket,表示这个bucket里存放的都是离线时间在xxxx年12月5日10点到10点10分之间的设备的设备信息,总结起来就是,bucket存储了某预定时间段内即将离线的设备信息。但是由于存在大批量设备的离线时间相同的情况,10分钟时间间隔内离线的设备数量也会很多,这时,一个bucket中的设备数量也会很大,而每个zset由于数量限制10000,因此一个bucket可能会对应多个zset,每个bucket下的zset,即为本发明应用实施例的segment。bucket和segment结构关系如图3所示,。
100.四、关于寻找bucket及其下的segment的存储路由规则:
101.如图4所示,当设备首次进行数据上报时,本发明应用实施例根据第二部分设置的离线计算公式计算出设备的离线时间。然后根据离线时间在缓存数据库中查找对应的bucket,如离线时间为xxxx年12月05日的10:09分,则需要看缓存数据库查找身份标识为“xxxx-12-05 10:00~10:10”的bucket。如果“xxxx-12-05 10:00~10:10”这一bucket不存在,则需要创建一个新的bucket,然后在新的bucket创建对应的segment,从而将设备的设备信息存入新的bucket下的segment中。如果“xxxx-12-05 10:00~10:10”这一bucket存在,则继续确定需要入库的segment,如果该segment存储容量未满,则将设备的离线时间存入该segment。如果该segment的存储容量已满(每个segment的存储容量规定为10000),则在bucket下创建一个新的segment,以将设备的离线时间存入该新的segment中,后续存入该bucket的设备信息都会路由到新的segment中,直到新的segment的存储容量也满了重新创建segment为止。离线时间存入到segment之后,再在缓存数据库单独保存设备序列号和segment之间的存储对应关系(即保存表明该存储关系的映射信息),该存储对应关系用于后续设备数据上报时更新设备的离线时间。每次bucket下新创建一个segment时,都需要在元数据表中插入一条数据,存储新增segment的存储段信息,用于后续离线检测。
102.五、创建用于对海量bucket及其下的segment进行统一、高效维护管理的元数据表:
103.在海量设备存储下,涉及到的bucket和segment的数量都会是成千、上万甚至几十万数量级等。为了全局统一、高效的维护、管理bucket和segment,从而提高离线检测和状态更新性能,本发明应用实施例创建一张元数据表(tb_meta_data)来存储记录bucket的属性信息,该属性信息的关键字段如下:
[0104][0105]
本发明应用实施例通过tb_meta_data能够清晰直观的了解目前存在的bucket和segment以及他们的所属关系。由于redis对范围查找支持的不够友好,甚至可以说不支持,在进行设备离线检测的时候,本发明应用实施例能够根据当前离线检测时间基于元数据表记录的属性信息快速确定本次检测的segment范围。因为元数据表中有每个bucket的离线起始时间和离线终止时间,本发明应用实施例根据设置的“srart time《current time≤end time”这一查询条件就能快速确定本次需要检测的bucket及其下的segment。
[0106]
六、数据上报场景:
[0107]
当设备上报数据时,根据离线计算公式,设备的离线时间需要往后进行顺延,因此
本发明应用实施例需要将设备的离线时间更新为重新计算得到的目标离线时间,这时,本发明应用实施例会将设备的设备信息从原来的bucket中删除后,到新的bucket中对包括了最新的目标离线时间的设备信息进行存储(如图5所示)。首先根据前面保存的设备序列号和segment之间的存储对应关系,就能快速找到设备的原始设备信息所在的segment,以将设备的原始设备信息从原有的segment中删除。然后根据设备最新的目标离线时间,通过存储路由规则找到新的segment,利用新的segment保存设备最新的设备信息,以及设备序列号和segment之间的存储对应关系,以此达到更新设备离线时间的效果。由于设备的设备信息都是分散在不同bucket的segment中进行存储的,这能避免对同一bucket进行集中式存储大量并发写入更新的操作,而且由于zset本身的读写性能非常好,因此本发明应用实施例的数据上报场景整体性能也会很高。
[0108]
七、设备离线检测场景:
[0109]
如图6和图7所示,设备离线检测机制由定时任务完成,如每一分钟检测一次。首先根据当前离线检测时间currenttime(时间格式yyyy-mm-dd hh:mm:ss.sss),从元数据表中查询出本次需要检测的bucket和segment信息,查询条件为“srart time《current time≤end time”。然后再以当前离线检测时间作为segment中的score,在segment中查询0~current time范围的设备信息,返回的设备序列号即为这次检测需要离线的离线设备,将离线设备的设备序列号统计在离线设备列表中。获取到离线设备列表之后,将离线设备列表批量发送到流处理平台中,并删除对应的设备序列号和segment之间的存储对应关系。其中,流处理平台如kafka,kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。设备管理服务收到kafka中的设备离线消息后,即可批量将相应离线设备的设备状态更新为离线。
[0110]
本发明应用实施例可以将即将离线的离线设备分成多份(如n份,n为整数),且分开单独存储,在进行离线检测的时候,只需从这n份中,根据当前离线检测时间直接取出其中的1份或者m份(m远远小于n),就类似简单查询或者从redis中get一个key那么简单。而且确定离线设备的耗时不会随着设备的增多而有明显的变化,整体读取性能高,i/o读写压力非常小。
[0111]
八、过期bucket和segment清理机制:
[0112]
随着时间的迁移,当bucket中所有离线设备的设备状态都更新完成之后,就需要清理bucket和segment中的数据,减少占用更新系统存储空间。首先更新系统会单独起一个定时任务,如每隔半小时执行一次清理工作,end time《current time的bucket都在本次清理工作的清理范围之内。确定bucket之后再根据元数据表中的存储段信息(如segment_11、segment_12等)找到本次要清理的segment范围,然后逐个执行segment的remove range by score方法清空segment存储的数据内容(离线时间、设备序列号和segment之间的存储对应关系等)。最后再删除元数据表中对应的bucket的属性信息,避免多次重复检测。
[0113]
综上,本发明实施例与基于redis缓存key过期的离线计算方案相比,基于redis缓存key过期的离线计算方案需要遍历redis中所有设备的key才能找全离线设备,不仅浪费设备所在系统的计算资源,而且性能极差,且存在检测随机性和漏检的情况。而本发明实施例不用遍历所有存储空间就能找全离线设备,因为离线设备早已计算好,且整个处理过程都是批处理,整体性能较高。而且本发明实施例具有极强的扩展性,随着设备量不断增加,
离线设备始终都能基于离线检测时间方便快捷地确定,不会随着设备数量增加而增加明显的查找成本。基于数据库或mongodb获取离线设备方案虽然给出了一种离线设备的普遍离线计算和检测方案,但是对于在离线状态维护及离线检测过程中关键的数据结构却没有相应设计,其整体设计实际是一个“半成品”,存在较大的遗漏,并不是一个完整的设备在离线状态维护和检测方案。而本发明实施例对即将进行离线检测的设备的设备信息单独维护,将离线时间接近的设备信息整合集中存储于预定的存储空间,这样对于离线检测场景就会非常友好,只需根据当前离线检测时间直接从相应存储空间的存储段处获取准备好的设备信息即可,相当于在缓存数据库进行简单的get操作,不仅便于对存储空间及其下的存储段进行管理和维护,离线设备的检测过程也更加高效快捷。同时由于将离线时间并不太接近的设备信息分散存储在了不同的存储空间,在设备上报数据的场景中,避免了针对单表或者单个存储空间的瞬时高并发操作,极大的减少了竞争写入的情况,既能保证功能平稳运行,同时也具备较高的计算更新等性能。
[0114]
需要说明的是,本发明实施例使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。本发明实施例中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
[0115]
本发明实施例所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
[0116]
本发明实施例所提供的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本发明的保护范围在此方面不受限制。
[0117]“实施例”一词在本说明书中指的是结合实施例描述的具体特征、结构或特性可以包括在本发明的至少一个实施例中。该短语出现在说明书中的各个位置并不一定意味着相同的实施例,也不意味着与其它实施例相互排斥而具有独立性或可供选择。本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见。尤其,对于装置、设备、系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明。
[0118]
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明的保护范围应以所附权利要求为准。
技术特征:
1.一种更新设备的设备状态的方法,其特征在于,包括:获取元数据表,所述元数据表记录有在缓存数据库中创建的存储空间的属性信息,其中,所述存储空间存储有预定设备的设备信息,所述设备信息包括离线时间,所述预定设备为所述离线时间位于预定时间段内的设备,所述属性信息包括根据所述预定时间段确定的离线起始时间和离线终止时间;根据预设的离线检测周期确定当前进行离线检测时的离线检测时间,以根据所述离线检测时间和所述属性信息确定待检测的目标存储空间,其中,所述离线检测时间位于所述目标存储空间的所述离线起始时间和所述离线终止时间之间;根据所述离线检测时间和所述目标存储空间存储的所述设备信息确定离线设备,以将所述离线设备的设备状态更新为离线,其中,所述离线设备为所述离线时间不大于所述离线检测时间的设备。2.根据权利要求1所述的方法,其特征在于,所述属性信息还包括所述存储空间的身份标识,所述身份标识为以所述预定时间段对所述存储空间进行命名获得的标识信息,根据所述离线检测时间和所述属性信息确定待检测的目标存储空间的步骤包括:根据所述离线检测时间、所述离线起始时间以及所述离线终止时间确定查询条件,其中,所述查询条件中的所述离线检测时间大于所述离线起始时间、不大于所述离线终止时间;在所述元数据表查找满足所述查询条件的所述属性信息,以根据所述属性信息中的所述身份标识确定所述目标存储空间。3.根据权利要求1所述的方法,其特征在于,所述设备信息还包括设备标识信息,所述存储空间存储所述预定设备的所述设备信息的步骤包括:所述存储空间采用有序集合的数据结构存储所述设备信息,其中,所述设备标识信息作为所述有序集合的存储元素进行存储,所述离线时间作为用于对所述设备标识信息进行排序的标识权重进行存储;则,根据所述离线检测时间和所述目标存储空间存储的所述设备信息确定离线设备的步骤包括:获取所述有序集合中不大于所述离线检测时间的所述离线时间对应的所述设备标识信息,以根据所述设备标识信息确定所述离线设备。4.根据权利要求3所述的方法,其特征在于,所述存储空间创建有多个存储段,所述存储段的存储容量为预定值,所述存储段用于采用所述有序集合存储预定值个所述设备信息,其中,所述属性信息还包括存储段信息,所述存储段信息为用于表明所述存储空间具有的所述存储段的信息,根据所述离线检测时间和所述属性信息确定待检测的目标存储空间的步骤包括:根据所述存储段信息确定所述目标存储空间具有的目标存储段,以根据所述离线检测时间和所述目标存储段存储的所述设备信息确定所述离线设备。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:判断所述目标存储空间中所有所述目标存储段存储的所述设备信息所属的所述预定设备的设备状态是否均更新为离线,若是,将所述元数据表中记录的所述目标存储空间的所述属性信息删除。
6.根据权利要求5所述的方法,其特征在于,将所述元数据表中记录的所述目标存储空间的所述属性信息删除之前,所述方法还包括:确定所述离线终止时间小于所述离线检测时间的所述目标存储空间,以删除所述目标存储空间的所述目标存储段存储的所述设备信息。7.根据权利要求4所述的方法,其特征在于,根据预设的离线检测周期确定当前进行离线检测时的离线检测时间之前,所述方法还包括:根据预设的存储路由规则确定用于保存所述设备信息的所述存储段,其中,所述存储路由规则为根据所述预定设备的所述离线时间和所述属性信息确定所述存储段的规则。8.根据权利要求7所述的方法,其特征在于,根据预设的存储路由规则确定用于保存所述设备信息的所述存储段的步骤包括:根据所述离线时间和所述属性信息,确定所述缓存数据库中是否已存在能够保存所述设备信息的原始存储空间,若否,在所述缓存数据库创建新的所述存储空间,以在新的所述存储空间创建用于保存所述设备信息的所述存储段,并将新的所述存储空间的所述属性信息保存于所述元数据表。9.根据权利要求7所述的方法,其特征在于,根据预设的存储路由规则确定用于保存所述设备信息的所述存储段的步骤还包括:根据所述离线时间和所述属性信息,确定所述缓存数据库中是否已存在能够保存所述设备信息的原始存储空间,若是,判断所述原始存储空间中是否存在所述存储容量未达到所述预定值的预选存储段,若存在,将所述预选存储段作为用于保存所述设备信息的所述存储段。10.根据权利要求9所述的方法,其特征在于,根据预设的存储路由规则确定用于保存所述设备信息的所述存储段的步骤还包括:若所述原始存储空间中不存在所述预选存储段,则在所述原始存储空间创建用于保存所述设备信息的新的所述存储段,并在所述元数据表保存的所述原始存储空间的所述属性信息中存入新的所述存储段的存储段信息。11.根据权利要求1所述的方法,其特征在于,所述存储空间存储所述预定设备的所述设备信息的步骤还包括:在所述预定设备的原始离线时间变更为目标离线时间时,根据所述目标离线时间和所述存储路由规则确定另一所述存储空间的存储段,以将所述预定设备包括所述目标离线时间的所述设备信息通过另一所述存储空间的存储段进行存储。12.根据权利要求11所述的方法,其特征在于,将所述预定设备包括所述目标离线时间的所述设备信息通过另一所述存储段进行存储之前,所述方法还包括:根据预先保存的用于表明所述设备标识信息和所述存储段之间存储对应关系的映射信息,确定存储了包括所述原始离线时间的原始设备信息的所述存储段,以将所述存储段中的所述原始设备信息删除。13.一种更新设备的设备状态的装置,其特征在于,所述装置用于执行权利要求1至12任一所述的更新设备的设备状态的方法。14.一种物联网系统,其特征在于,所述物联网系统包括权利要求13所述的更新设备的设备状态的装置。
技术总结
本申请涉及一种更新设备的设备状态的方法及其相关设备,该方法包括:获取元数据表,元数据表记录有在缓存数据库中创建的存储空间的属性信息,其中,存储空间存储有预定设备的设备信息,设备信息包括离线时间,属性信息包括根据预定时间段确定的离线起始时间和离线终止时间;根据预设的离线检测周期确定当前进行离线检测时的离线检测时间,以根据离线检测时间和属性信息确定待检测的目标存储空间;根据离线检测时间和目标存储空间存储的设备信息确定离线设备,以将离线设备的设备状态更新为离线,其中,离线设备为离线时间不大于离线检测时间的设备。本申请解决了只能全局遍历Redis中所有的Key才能将离线设备找全的问题。Redis中所有的Key才能将离线设备找全的问题。Redis中所有的Key才能将离线设备找全的问题。
技术研发人员:蒋志强 周小龙
受保护的技术使用者:杭州海康消防科技有限公司
技术研发日:2023.07.08
技术公布日:2023/8/24
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种手推车底部支撑架及手推车的制作方法 下一篇:一种相控阵雷达天线的制作方法
