具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<硬件配置>
图1是示出可以实现本发明的实施例的物品系统100的硬件配置的框图。
如图1所示,物品管理系统100包括服务端1000、客户端2000、物品3000以及网络4000。
服务端1000提供处理、数据库、通讯设施的业务点。服务端1000可以是整体式服务器或是跨多计算机或计算机数据中心的分散式服务器。服务器可以是各种类型的,例如但不限于,网络服务器,新闻服务器,邮件服务器,消息服务器,广告服务器,文件服务器,应用服务器,交互服务器,数据库服务器,或代理服务器。在一些实施例中,每个服务器可以包括硬件,软件,或用于执行服务器所支持或实现的合适功能的内嵌逻辑组件或两个或多个此类组件的组合。例如,服务器例如刀片服务器、云端服务器等,或者可以是由多台服务器组成的服务器群组(1000-1),可以包括上述类型的服务器中的一种或多种等等。
在一个例子中,服务端1000可以如图1所示,包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600。尽管服务器也可以包括扬声器、麦克风等等,但是,这些部件与本发明的是合理无关,故在此省略。
其中,处理器1100例如可以是中央处理器CPU、微处理器MCU等。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括USB接口、串行接口、红外接口等。通信装置1400例如能够进行有线或无线通信。显示装置1150例如是液晶显示屏、LED显示屏触摸显示屏等。输入装置1160例如可以包括触摸屏、键盘等。
在本实施例中,客户端2000是具有通信功能、业务处理功能的电子设备。客户端2000可以是移动终端,例如手机、便携式电脑、平板电脑、掌上电脑等等。例如,客户端2000是对物品3000实施管理操作的设备,例如,安装有支持运营、管理物品的应用程序(APP)的手机。或者,客户端2000是对物品3000进行使用操作的设备,例如,安装有提供物品使用服务的应用程序(APP)的手机。
如图1所示,客户端2000可以包括处理器2100、存储器2200、接口装置2300、通信装置2400、显示装置2500、输入装置2600、扬声器2700、麦克风2800,等等。其中,处理器2100可以是中央处理器CPU、微处理器MCU等。存储器2200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置2300例如包括USB接口、耳机接口等。通信装置2400例如能够进行有线或无线通信,。显示装置2500例如是液晶显示屏、触摸显示屏等。输入装置2600例如可以包括触摸屏、键盘等。用户可以通过扬声器2700和麦克风2800输入/输出语音信息。
物品3000是任何可以分时或分地出让使用权供不同用户共享使用的物品,例如,用于共享的车辆(自行车、助力车、汽车)、充电宝、雨伞等等。在一个例子中,物品3000可以是自行车(3000-1)。
如图1所示,物品3000可以包括处理器3100、存储器3200、接口装置3300、通信装置3400、显示装置3500、输入装置3600等等。其中,处理器3100可以是中央处理器CPU、微处理器MCU等。存储器3200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置3300例如包括USB接口、耳机接口等。通信装置3400例如能够进行有线或无线通信。输出装置3500例如可以是输出信号的装置,可以显示装置,例如液晶显示屏、触摸显示屏等,也可以是扬声器等输出语音信息等。输入装置3600例如可以包括触摸屏、键盘等,也可以是麦克风输入语音信息。
网络4000可以是无线通信网络也可以是有线通信网络,可以是局域网也可以是广域网。在图1所示的物品管理系统中,物品3000与服务端1000、客户端2000与服务端1000,可以通过网络4000进行通信。此外,物品3000与服务端1000、客户端2000与服务端1000通信所基于的网络4000可以是同一个,也可以是不同的。
应当理解的是,尽管图1仅示出一个服务端1000、客户端2000、物品3000,但不意味着限制对应的数目,物品管理系统100中可以包含多个服务端1000、客户端2000、物品3000。
以物品3000为共享车辆为例,物品系统100为车辆共享系统。其中,共享车辆可以是自行车,也可以是三轮车、电动助力车、摩托车以及四轮乘用车等各种形态。服务端1000用于提供支持车辆使用所必需的全部功能。客户端2000可以是手机,其上安装有车辆运营管理应用,车辆运营管理应用可以帮助车辆运营管理人员甚至车辆用户实现管理运营车辆3000的功能等等。
图1所示的物品管系统100仅是解释性的,并且决不是为了要限制本发明、其应用或用途。
应用于本发明的实施例中,尽管图1只示出一个服务端1000、一个客户端2000、一个物品3000,但是,应当理解的是,具体应用中,可以根据实际需求使得所述物品管理系统100包括多个服务端1000、多个客户端2000、多个物品3000。
应用于本发明的实施例中,服务端1000的所述存储器1200用于存储指令,所述指令用于控制所述处理器1100进行操作以执行本发明实施例提供的任意一项日志管理方法。
尽管在图1中对服务端1000示出了多个装置,但是,本发明可以仅涉及其中的部分装置,例如,服务端1000只涉及存储器1200和处理器1100。
在上述描述中,技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
本发明实施例的总体构思,是提供一种处理日志的新技术方案,通过将在实时日志队列中读取的记录用户开始使用物品行为的用户始用日志,根据与用户始用日志对应的用户标识保存在预设的存储空间中,以及将在实时日志队列中读取的记录物品被使用状态的物品状态日志,根据与物品状态日志对应的用户标识保存在预设的存储空间中,在确定用户结束物品使用后,可以从预设的存储空间中根据用户所具有的用户标识查询得到对应的用户始用日志和物品状态日志,合并生成用户的物品使用数据,实现在用户结束物品使用后,及时、准确地获取用户本次完整的物品使用数据,提高日志处理效率。尤其适用于对获取物品使用数据的时效性较高的场景。
<第一实施例>
在本实施例中,提供一种日志处理方法。该日志是指对指定对象进行特定操作行为以及对应的操作结果按时间有序记录的数据集合。日志根据所记录的具体指定对象、具体的操作行为、具体的操作结果等,被区分为不同类型的日志。例如,日志可以包括记录用户行为的用户日志、记录物品被使用状态的物品日志等,用户日志还可以根据所记录的用户的具体行为进一步细分为不同的用户行为日志,物品日志也可以根据物品被使用的具体状态进一步细分为不同的物品状态日志,等等。
该日志处理方法,如图2所示,包括步骤S2100-S2300。
步骤S2100,在实时日志队列中读取到记录用户开始使用物品行为的用户始用日志时,根据与用户始用日志对应的用户标识,在预设的存储空间中保存用户始用日志。
在本实施例中,实时日志队列是实时收集所有用户在物品使用过程中产生的多个日志、并根据日志产生的时间先后顺序对日志进行排序保存的数据队列。
通常用户都是通过提供物品使用服务的系统获取物品使用服务,在该系统向所有用户提供物品使用服务的过程中,可以获取每个用户在物品使用过程中发生的记录不同的用户行为的日志、以及获取每个物品在被使用过程中记录不同的物品使用状态的日志,如此可以在获取第一个日志时或者物品使用服务周期开始时,创建生成实时日志队列,并实时收集向所有用户提供物品使用服务的过程中产生的各种日志,更新实时日志队列。
例如,物品是车辆时,在提供车辆使用服务的系统向用户提供车辆使用服务时,可以获取每个用户在使用车辆过程中产生的记录用户查询车辆行为的日志、记录用户解锁车辆行为的日志、记录用户使用车辆的位置的日志、记录用户锁定车辆行为的日志等;以及还可以获取每辆车辆的记录解锁的日志、记录关锁的日志以及记录车辆被使用的位置的日志等,如此,可以在提供车辆使用服务的系统的每个运营周期开始时,创建生成实时日志队列,并实时收集向所有用户提供车辆使用服务的过程中产生的各种日志,更新实时日志队列。
应当理解的是,在本实施例中,物品还可以是能供使用功能的其他对象,例如,可以是手机、数码相机、充电宝等。
在本实施例中,实时日志队列可以采用各种形式实现。例如,实时日志队列可以通过Kafka系统实现。Kafka系统是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,通过并行加载机制来统一线上和离线的消息处理,通过集群来提供实时的消息,适用于实现实时日志队列。
在一个例子中,在本实施例中提供日志处理方法,还可以包括:
使用日志收集管理工具,生成所述实时日志队列以及更新所述实时日志队列的步骤。
日志收集管理工具是用于实时收集日志并对日志进行管理的工具。通过使用日志收集管理工具,实时收集向所有用户提供物品使用服务过程中产生的日志,实现生成实时日志队列进行创建并更新,可以提高实时日志队列的管理效率。该日志收集管理工具可以根据具体的应用场景或者应用需求选取,例如,日志收集管理工具可以是Logstash。Logstash是一个开源的日志收集引擎,具有备实时数据传输能力,可以统一过滤来自不同数据源的日志,并按照开发者的制定的规范输出到目的地,是非常高效的日志收集管理工具。
用户始用日志是记录用户开始使用物品行为的用户日志。例如,用户始用日志是记录用户解锁物品行为的用户解锁日志。当物品是车辆时,用户通过扫码(扫描二维码)解锁车辆时,用户始用日志是记录用户扫码解锁车辆行为的用户扫码日志。
在本实施例中,可以通过各种实施方式读取实时日志队列以确定是否读取到用户始用日志,例如可以利用正则表达式,预先定义与用户始用日志对应的特定字符,并将这些特定字符组合成与用户始用日志对应的、表达过滤得到用户使用日志的过滤逻辑的“规则字符串”,基于与用户始用日志对应的“规则字符串”,对实时日志队列进行读取过滤,以确定实时日志队列中是否能读取到用户始用日志。
与用户始用日志对应的用户标识,是用户始用日志中记录的开始使用物品行为的用户所具有的用户标识,通常可以从用户始用日志中获取。该用户标识是用于唯一标识用户,可以是用户注册时使用的用户名、或者提供物品使用服务的系统为用户分配的用户ID等。
预设的存储空间是预先设置用于保存用户始用日志以及物品状态日志的存储空间,可以根据具体的应用场景或者应用需求设置。例如,预设的存储空间可以是HBase。HBase是一个分布式的、面向列的开源数据库,非常适合结构化数据的分布式存储。
在本实施例中,在预设的存储空间中保存任何数据可以采用相同的数据格式,以便提高数据存储、管理效率。因此,在预设的存储空间中保存用户始用日志时,如果用户始用日志不符合预设的存储空间期望的数据格式,可以将用户始用日志转换为该数据格式进行保存。该数据格式可以根据具体的应用场景或者应用需求设置,例如,数据格式可以设置为protobuff(protocol buffer)格式,这是一种谷歌公司提供的独立于平台以及编程语言的数据交换格式,用于分布式应用之间的数据通信或者异构环境下的数据交换,具有优秀的兼容性和效率。
当在实时日志队列中读取到用户始用日志时,代表一位用户存在开始使用物品的行为,根据与该用户始用日志对应的用户标识,在预设的存储空间中保存用户始用日志,可以结合后续步骤,在确定用户结束物品使用后,可以从预设的存储空间中根据用户所具有的用户标识查询得到对应的用户始用日志和物品状态日志,合并生成用户的物品使用数据,实现在用户结束物品使用后,及时、准确地获取用户本次完整的物品使用数据,提高日志处理效率。尤其适用于对获取物品使用数据的时效性较高的场景。
在一个例子中,根据与所述用户始用日志对应的用户标识,在预设的存储空间中保存用户始用日志的步骤包括:
根据与用户始用日志对应的用户标识,建立与该用户标识唯一对应的用户会话对象,并将用户会话对象与所述用户始用日志关联保存于预设的存储空间中。
用户会话对象用于存储对应的用户会话的属性以及配置信息。在本实施例中,用户会话是一个用户在单次使用物品过程中与提供物品服务的服务器之间建立的会话,可以通过例如session机制来实现。
在用户会话范围内,用户会话对象存储的信息不会丢失,相应地,可以基于用户会话对象,记录、跟踪在用户会话范围内发生的与用户行为相关的状态信息。
通过在实时会话队列中读取到用户始用日志时,建立与用户始用日志对应的用户标识唯一对应的用户会话对象,并将该用户会话对象与用户始用日志关联保存,便于基于用户会话对象跟踪具有该用户标识的用户在单次使用物品过程所生成的用户始用日志,提高日志处理效率。
在本例中,建立与用户标识唯一对应的用户会话对象的步骤还包括:
设置用户会话对象的开始时间以及超时时间。
用户会话对象的开始时间是创建用户会话对象的起始时间。用户会话对象的超时时间是用户会话对象相对其开始时间的存续时长,当用户会话的超时时间到达时,用户会话对象会被结束。通过设置用户会话对象的超时时间,可以避免用户会话对象长时间存续占用对应的存储资源,使得用户会话对象可以被及时结束释放存储资源。
在建立用户会话对象时,设置用户会话对象的开始时间以及超时时间,可以根据时间对用户会话对象进行维护、管理,提高数据处理效率。该超时时间可以根据具体的应用场景或者应用需求设置。
步骤S2200,在实时日志队列中读取到记录物品被使用状态的物品状态日志时,确定与物品状态日志对应的用户标识,以根据用户标识在预设的存储空间中保存物品状态日志。
物品状态日志是记录物品使用状态的物品日志。例如,物品状态日志可以包括至少包括记录物品进入被使用状态的物品始用日志以及记录物品进入结束使用状态的物品停用日志。当物品是车辆时,物品始用日志可以是记录车辆进入被解锁状态的车辆解锁日志,物品停用日志可以是车辆进入被关锁状态的车辆关锁日志。
在本实施例中,可以通过各种实施方式读取实时日志队列以确定是否读取到用户始用日志,例如可以利用正则表达式,预先定义与物品状态日志对应的特定字符,并将这些特定字符组合成与物品状态日志对应的、表达过滤得到用户使用日志的过滤逻辑的“规则字符串”,基于与物品状态日志对应的“规则字符串”,对实时日志队列进行读取过滤,以确定实时日志队列中是否能读取到物品状态日志。
与物品状态日志对应的用户标识,是使用物品状态日志所记录的物品的用户所具有的用户标识。
在本实施例中,确定与物品状态日志对应的用户标识的步骤可以包括:
根据与物品状态日志对应的物品标识,查询物品使用记录,获取使用具有该物品标识的物品的用户所具有的用户标识,作为与物品状态日志对应的用户标识。
与物品状态日志对应的物品标识,就是物品状态日志所记录的物品所具有的物品标识。通常可以从物品状态日志中获取。物品标识用于唯一标识物品,可以是物品出厂编号、物品ID等。例如,物品是车辆时,物品标识可以是车辆ID。
通常在一个物品被使用时,提供物品使用服务的系统会相应生成物品使用记录。每条物品使用记录用于记录使用具有某个物品标识的物品的用户所具有的用户标识以及其他相关信息。
例如,物品是车辆时,物品使用记录是车辆的骑行订单,一个骑行订单中记录骑行某个车辆标识的车辆的用户所具有的用户标识等。
通过查询物品使用记录,可以获取使用某个物品标识的物品的用户所具有的用户标识,以此能确定与任意一个物品状态日志对应的用户标识,实现用户标识与物品状态日志的关联。
在本实施例中,在预设的存储空间中,可以使用相同的数据格式保存用户始用日志以及物品状态日志,以此提高数据存储、管理效率。因此,因此,在预设的存储空间中保存物品状态日志时,如果物品状态日志不符合预设的存储空间期望的数据格式,可以将物品状态日志转换为该数据格式进行保存。如上述举例,该数据格式可以是protobuff(protocol buffer)格式。
当在实时日志队列中读取到物品状态日志时,代表某个物品被用户使用,确定与物品状态日志对应的用户标识,并根据该用户标识在预设的存储空间中保存物品状态日志,实现在预设的存储空间中根据用户标识关联保存用户始用日志以及物品状态日志,结合后续步骤,在确定用户结束物品使用后,可以从预设的存储空间中根据用户所具有的用户标识查询得到对应的用户始用日志和物品状态日志,合并生成用户的物品使用数据,实现在用户结束物品使用后,及时、准确地获取用户在本次物品使用过程中的完整的物品使用数据,提高日志处理效率。尤其适用于对获取物品使用数据的时效性较高的场景。
在上述一个例子中,根据与用户始用日志对应的用户标识,在预设的存储空间中保存用户始用日志的步骤包括:根据与用户始用日志对应的用户标识,建立与用户标识唯一对应的用户会话对象,并将用户会话对象与用户始用日志关联保存于预设的存储空间中;
基于此例,根据用户标识在预设的存储空间中保存所述物品状态日志的步骤包括:步骤S2210-S2220。
步骤S2210,在预设的存储空间中查询与该用户标识对应的用户会话对象。
该用户标识是与物品状态日志对应的用户标识,基于该用户标识查询对应的用户会话对象,而该用户会话对象是根据与用户始用日志唯一对应的用户标识进行创建,以此通过用户会话对象实现基于用户标识将物品状态日志与用户始用日志关联。
步骤S2220,更新与该用户标识对应的用户会话对象,并将更新后的该用户会话对象与物品状态日志关联保存于预设的存储空间中。
在更新与该用户标识的用户会话对象后,将更新后该用户会话对象与物品状态日志关联保存于预设的存储空间中,可以实现通过用户会话对象实现基于用户标识将物品状态日志与用户始用日志的关联保存。
在本例中,用户会话对象可以设置有对应的开始时间以及超时时间。对应地,更新用户会话对象可以包括:重新设置用户会话对象的超时时间。
通过在更新用户会话对象时,重新设置用户会话对象的超时时间,可以避免用户会话对象因原有的超时时间到达而过早结束释放,相应地延长用户会话对象的存续,便于根据时间对用户会话对象进行维护、管理,提高数据处理效率。
步骤S2300,在确定目标用户结束物品使用后,从预设的存储空间中,查询获取与目标用户的用户标识对应的用户始用日志以及物品状态日志,以合并生成目标用户的物品使用数据。
在本实施例中,可以通过多种方式确定目标用户是否结束物品使用。
例如,基于上述通过用户会话对象实现基于用户标识将物品状态日志与用户始用日志的关联保存的例子,用户会话对象是在实时日志队列中读取到用户始用日志时创建的,并且用户会话对象在每次在实时日志队列中读取到用户始用日志时重新设置超时时间,一旦用户会话对象的超时时间到达,意味着与该用户会话对象对应用户不再使用与该用户会话对象对应的物品。因此,在本实施例中提供的方法还可以包括:当到达用户会话对象的超时时间后,确定与该用户会话对象对应的用户结束物品使用。
或者,例如,物品状态日志至少包括记录物品进入被使用状态的物品始用日志以及记录物品进入结束使用状态的物品停用日志。在本实施例中提供的方法还可以包括:
在实时日志队列中读取到所述物品停用日志时,确定具有与物品停用日志对应的用户标识的用户,结束对于物品停用日志对应的物品的使用。
在本实施例中,物品使用数据是根据在目标用户结束物品使用后、从预设的存储空间中获取的基于目标用户的用户标识关联保存的用户始用日志以及物品状态日志进行合并生成,是包括目标用户在本次物品使用过程中完整的使用信息的数据。因此,实现在用户结束物品使用后,及时、准确地获取用户在本次物品使用过程中的完整的物品使用数据,提高日志处理效率。尤其适用于对获取物品使用数据的时效性较高的场景。
<例子>
以下将结合一个具体的例子进一步说明本实施例中提供的日志处理方法。
在本例中,物品是车辆,用户可以通过客户端扫描车辆上设置的二维码实现解锁车辆进行使用;日志收集管理工具是Logstash,用于实时收集在提供车辆使用服务过程中产生的各种日志,包括作为用户始用日志的用户扫码日志U_SCAN_BIKE、作为物品始用日志的车辆开锁日志B_UNLOCK_BIKE以及车辆关锁日志B_LOCK_BIKE,发送到Kafka系统实现的实施实时日志队列,以实现实时日志队列的生成以及更新;
预设的存储空间是Hbase,在Hbase中采用相同的数据格式protobuff格式存储用户会话对象以及关联的用户扫码日志U_SCAN_BIKE、车辆开锁日志B_UNLOCK_BIKE以及车辆关锁日志B_LOCK_BIKE。
本例中的日志处理方法可以通过类似状态机的机制实现,根据本例中日志处理方法所包括的步骤设计预设的状态,并根据预设的状态进行状态转移,以提高处理效率。
本例中的日志处理方法,包括:步骤S201-步骤S215。
步骤S201,用户通过客户端扫描车辆上设置的二维码解锁车辆后,客户端产生用户扫码日志U_SCAN_BIKE,发送至业务模块保存并触发创建订单。
步骤S202,Logstash收集到用户扫码日志U_SCAN_BIKE,发送到实时日志队列kafka topic:appnginx。
步骤S203,状态机读取kafka topic:appnginx,通过正则表达式找出用户扫码日志并转换成protobuff格式保存。
应当理解的是,本例中所指的状态机,是指通过编程语言实现的类似状态机机制的软件模块或者应用程序。
步骤S204,状态机根据从用户扫码日志中获取的用户ID建一个用户会话(session)对象,并保存对应的开始时间、超时时间,并且把用户会话对象和用户扫码日志保存到Hbase中。
步骤S205,用户扫码完成使得车辆开锁后,车辆也产生车辆开锁日志B_UNLOCK_BIKE,发送至业务模块保存。
步骤S206,Logstash收集车辆开锁日志B_UNLOCK_BIKE,发送到实时日志队列kafka topic:bikeapi。
步骤S207,状态机读取kafka topic:bikeapi,通过正则表达式找出车辆开锁日志并且转换成protobuff格式。
步骤S208,状态机查询订单表确定与车辆开锁日志对应的用户ID,补充到车辆开锁日志的protobuff的字段里。
步骤S209,状态机根据用户ID查找hbase对应的用户会话对象,并且更新该用户会话对象的超时时间后,将更新后用户会话对象和车辆开锁日志关联保存到Hbase中。
步骤S209,用户完成骑行后关锁,车辆产生车辆关锁日志B_LOCK_BIKE,发送至业务模块保存。
步骤S210,Logstash收集车辆关锁日志日志,发送到实时日志队列kafka topic:bikeapi。
步骤S211,状态机读取kafka topic:bikeapi,通过正则表达式找车辆关锁日志并且转换成protobuff格式。
步骤S213,状态机查询订单表确定与车辆关锁日志对应的用户ID,补充到车辆关锁日志的protobuff的字段里。
步骤S214,状态机根据用户ID查找hbase对应的用户会话对象,并且更新该用户会话对象的超时时间后,将更新后用户会话对象和车辆关锁日志关联保存到Hbase中。
步骤S215,一个用户会话对象的超时时间到达后,状态机查询Hbase,找到该用户会话对象的开始时间到现在的用户扫码日志U_SCAN_BIKE、开锁日志B_UNLOCK_BIKE、关锁日志B_LOCK_BIKE,然后把这三个日志合并一份probuff格式的车辆使用数据输出到kafkatopic:rt.user_session_state_machine_v2。
在本例中,通过上述日志处理方法,可以在用户使用车辆过程中,实时收集与用户使用车辆行为相关的用户扫码日志以及与车辆被使用状态相关的车辆开锁、关锁日志,并基于用户会话对象根据用户ID进行关联保存,实现在用户结束车辆使用后,能通过合并用户扫码日志以及车辆开锁、关锁日志,及时、准确地获取用户本次完整的车辆骑行数据,提高日志处理效率。
<服务器>
在本实施例中,还提供一种服务器200,如图3所示,包括:
存储器210,用于存储可执行指令;
处理器220,用于根据所述可执行指令的控制运行所述服务器以执行本实施提供的日志处理方法,包括:
在实时日志队列中读取到记录用户开始使用物品行为的用户始用日志时,根据与用户始用日志对应的用户标识,在预设的存储空间中保存用户始用日志;
在实时日志队列中读取到记录物品被使用状态的物品状态日志时,确定与物品状态日志对应的用户标识,以根据用户标识在预设的存储空间中保存物品状态日志;
在确定目标用户结束物品使用后,从预设的存储空间中,查询获取与目标用户的用户标识对应的用户始用日志以及物品状态日志,以合并生成目标用户的物品使用数据。
在本实施例中,服务器200可以是云端服务器或者刀片服务器。例如,可以如图1所示的服务器1000。
本领域技术人员应当明白,可以通过各种方式来实现服务器200。例如,可以通过指令配置处理器来实现服务器200。例如,可以将指令存储在ROM中,并且当启动设备时,将指令从ROM读取到可编程器件中来实现服务器200。例如,可以将服务器200固化到专用器件(例如ASIC)中。可以将服务器200分成相互独立的单元,或者可以将它们合并在一起实现。服务器200可以通过上述各种实现方式中的一种来实现,或者可以通过上述各种实现方式中的两种或更多种方式的组合来实现。
以上已经结合附图和例子说明了本实施例。在本实施例中,提供一种日志处理方法及服务器,通过将在实时日志队列中读取的记录用户开始使用物品行为的用户始用日志,根据与用户始用日志对应的用户标识保存在预设的存储空间中,以及将在实时日志队列中读取的记录物品被使用状态的物品状态日志,根据与物品状态日志对应的用户标识保存在预设的存储空间中,在确定用户结束物品使用后,可以从预设的存储空间中根据用户所具有的用户标识查询得到对应的用户始用日志和物品状态日志,合并生成用户的物品使用数据,实现在用户结束物品使用后,及时、准确地获取用户本次完整的物品使用数据,提高日志处理效率。尤其适用于获取物品使用数据的时效性较高的场景。
<第二实施例>
在本实施例中,提供一种物品系统500,如图4所示,包括:
客户端300;
物品400;
以及如第一实施例提供的服务器200。
客户端300,包括:
存储器310,用于存储可执行的指令;
处理器320,用于根据所述可执行指令的控制,运行客户端执行下述步骤:
用于获取与用户使用物品行为相关的数据,以生成用户始用日志发送给实时日志队列。
在本实施例中,客户端300是具有通信功能、业务处理功能的电子设备,例如可以是安装有提供物品使用服务的应用程序(APP)的手机。在一个例子中,客户端300可以是图1所示的客户端2000,还包括其他硬件装置。
物品400包括:
存储器410,用于存储可执行的指令;
处理器420,用于根据所述可执行指令的控制,运行物品400执行下述步骤:
用于获取与物品使用状态相关的数据,以生成物品状态日志发送给实时日志队列。
在本实施例中,物品400可以是任何可以分时或分地出让使用权供不同用户共享使用的物品,例如,用于共享的车辆(自行车、助力车、汽车)、充电宝、雨伞等等。一个例子中,物品400可以是如图1所示的物品3000,还包括其他硬件装置。
在本实施例中,物品系统500可以是任意提供物品使用服务的系统,例如,可以如图1所示的物品系统100。物品系统500还可以包括其他设备,例如,还可以包括业务模块或者业务服务器,该业务模块或业务服务器分别与客户端300、物品400建立通信连接,可以接收客户端300发送的用户始用日志以及物品400发送的物品状态日志并保存,以供日志搜集管理工具收集日志发送至实时日志队列,实现实时日志队列的生成、更新及维护,该业务模块或业务服务器还可以根据用户的使用物品行为建立、管理订单等。当然,该业务模块或者业务服务器可以由物品系统500中包括的服务器200实现。
在本实施例中,提供一种物品系统,通过客户端获取用户始用日志、物品获取物品状态日志以生成实时日志队列,服务器将在实时日志队列中读取的记录用户开始使用物品行为的用户始用日志,根据与用户始用日志对应的用户标识保存在预设的存储空间中,以及将在实时日志队列中读取的记录物品被使用状态的物品状态日志,根据与物品状态日志对应的用户标识保存在预设的存储空间中,在确定用户结束物品使用后,可以从预设的存储空间中根据用户所具有的用户标识查询得到对应的用户始用日志和物品状态日志,合并生成用户的物品使用数据,实现在用户结束物品使用后,及时、准确地获取用户本次完整的物品使用数据,提高日志处理效率。尤其适用于获取物品使用数据的时效性较高的场景。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。