CN107368366A - 车辆在线状态失真解决方法及其系统 - Google Patents
车辆在线状态失真解决方法及其系统 Download PDFInfo
- Publication number
- CN107368366A CN107368366A CN201610309393.3A CN201610309393A CN107368366A CN 107368366 A CN107368366 A CN 107368366A CN 201610309393 A CN201610309393 A CN 201610309393A CN 107368366 A CN107368366 A CN 107368366A
- Authority
- CN
- China
- Prior art keywords
- vehicle
- end processor
- state
- standard grade
- distributed caching
- 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.)
- Granted
Links
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种车辆在线状态失真解决方法及其系统,方法包括:一前置机接收到一车辆发送的上线请求;建立车辆与前置机的连接;关联车辆与前置机,得到关联关系;将关联关系存储到分布式缓存;更新分布式缓存与数据库中的车辆状态为上线状态;前置机根据预设的监测时间监听所述连接是否断开;若断开,判断前置机与存储在分布式缓存中与车辆最新关联的前置机是否一致;若一致,判断车辆是否在前置机内重复上线;若是,断开连接;若否,断开连接,并更新分布式缓存与数据库中的车辆状态为下线状态;若不一致,断开连接。本发明有效解决了车辆在线状态失真的情况,提高了监控平台对车辆监控的真实性。
Description
技术领域
本发明涉及车联网系统领域,尤其涉及一种车辆在线状态失真解决方法及其系统。
背景技术
随着车联网行业的快速发展,车联网服务系统所面向的车辆数量已经从千、万升级到十万、百万、甚至千万的级别。现有的技术解决方案都是利用前置机进行分布式横向扩展和负载均衡,然而不管是用软负载(LVS,Nginx),还是硬负载(F5)都会出现随机性的车辆在线状态随机性失真问题。此问题主要在两个方面体现的较为明显:
1、同一车辆在负载情况下在同一台前置机的频繁上线,导致新旧链路的建立和断开无序,从使而车辆上下线的新旧状态的更新动作随机覆盖,造成车辆在线状态失真;
2、同一车辆在在负载情况下,由于网络等原因,频繁掉线后,在不同前置机上登陆,导致不同前置机对同一车辆的新旧链路断开无序,执行的状态更新动作随机覆盖,造成车辆在线状态失真。
而当前的传统解决方案,之所以会造成以上两个问题的根本原因在于没有对车辆的链路信息进行分布式共享,导致每个前置机都是一个信息孤岛,即使进行负载均衡后也只是简单的对车辆并发连接做一个分流而已,以至于车辆在某种原因的频繁上下线后所执行的链路断开和车辆状态更新无序且无标识化。
在公开号为CN102281310A的中国专利公开文件中,提出了一种实时监视车载GPS终端在线状况的方法,包括:在系统内建立通信关系和数据表,车载GPS终端登陆并记入数据库和网管服务器,车载GPS终端下线并记入数据库和网管服务器,操作终端接收并显示网管服务器提供的各车载GPS终端的在线状态。但该方案只能基于单个前置机的情况下,避免操作终端为及时显示车载GPS终端在线状态而定时查询数据库,所造成的对数据库的干扰和数据失真的问题,并不能解决车辆在不同前置机频繁上下线导致的车辆在线状态失真的问题。
发明内容
本发明所要解决的技术问题是:提供一种车辆在线状态失真解决方法及其系统,可有效地避免车辆在线状态失真的情况,提高监控平台对车辆监控的真实性。
为了解决上述技术问题,本发明采用的技术方案为:一种车辆在线状态失真解决方法,包括:
一前置机接收到一车辆发送的上线请求;
建立所述车辆与所述前置机的连接;
关联所述车辆与所述前置机,得到关联关系;
将所述关联关系存储到分布式缓存;
更新分布式缓存与数据库中的车辆状态为上线状态;
所述前置机根据预设的监测时间监听所述连接是否断开;
若断开,判断所述前置机与存储在分布式缓存中与所述车辆最新关联的前置机是否一致;
若一致,判断所述车辆是否在所述前置机内重复上线;若是,断开所述连接;若否,断开所述连接,并更新分布式缓存与数据库中的车辆状态为下线状态;
若不一致,断开所述连接。
本发明还涉及一种车辆在线状态失真解决系统,包括:
第一接收模块,用于一前置机接收到一车辆发送的上线请求;
建立模块,用于建立所述车辆与所述前置机的连接;
关联模块,用于关联所述车辆与所述前置机,得到关联关系;
存储模块,用于将所述关联关系存储到分布式缓存;
第一更新模块,用于更新分布式缓存与数据库中的车辆状态为上线状态;
监听模块,用于所述前置机根据预设的监测时间监听所述连接是否断开;
第一判断模块,用于若断开,判断所述前置机与存储在分布式缓存中与所述车辆最新关联的前置机是否一致;
第二判断模块,用于若一致,判断所述车辆是否在所述前置机内重复上线;
第一断开模块,用于若是,断开所述连接;
第二更新模块,用于若否,断开所述连接,并更新分布式缓存与数据库中的车辆状态为下线状态;
第二断开模块,用于若不一致,断开所述连接。
本发明的有益效果在于:通过将车辆和前置机进行关联,并将关联关系存储到分布式缓存,解决了前置机集群中多个前置机之间的信息共享问题,利用分布式缓存对车辆上下线状态进行标识,实现了车辆上下线与前置机间的持久化关系;在车辆每次上、下线的时候进行一致性逻辑判断,在符合一致性的情况下进行信息更新、共享,避免了车辆重复断链所造成的上下线状态无序性覆盖,保证了上下状态更新的有效性,有效解决了车辆在线状态失真的情况,提高了监控平台对车辆监控的真实性。
附图说明
图1为本发明一种车辆在线状态失真解决方法的流程图;
图2为本发明实施例一的方法流程图;
图3为本发明实施例二的方法流程图;
图4为本发明实施例三的方法流程图;
图5为本发明一种车辆在线状态失真解决系统的结构示意图;
图6为本发明实施例四的系统结构示意图。
标号说明:
1、第一接收模块;2、建立模块;3、关联模块;4、存储模块;5、第一更新模块;6、监听模块;7、第一判断模块;8、第二判断模块;9、第一断开模块;10、第二更新模块;11、第二断开模块;12、快照模块;13、写入模块;14、第二接收模块;15、第三断开模块;16、删除模块;17、第三更新模块;18、发布模块;
51、生成单元;52、第一判断单元;53、第一启用单元;54、第二判断单元;55、加入单元;56、第三判断单元;57、第二启用单元;58、回收单元;59、提交单元。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明最关键的构思在于:利用分布式缓存对车辆连接状态进行标识和分布式共享,并在车辆上、下线的时候进行逻辑一致性判断。
请参阅图1,一种车辆在线状态失真解决方法,包括:
一前置机接收到一车辆发送的上线请求;
建立所述车辆与所述前置机的连接;
关联所述车辆与所述前置机,得到关联关系;
将所述关联关系存储到分布式缓存;
更新分布式缓存与数据库中的车辆状态为上线状态;
所述前置机根据预设的监测时间监听所述连接是否断开;
若断开,判断所述前置机与存储在分布式缓存中与所述车辆最新关联的前置机是否一致;
若一致,判断所述车辆是否在所述前置机内重复上线;若是,断开所述连接;若否,断开所述连接,并更新分布式缓存与数据库中的车辆状态为下线状态;
若不一致,断开所述连接。
从上述描述可知,本发明的有益效果在于:利用分布式缓存对车辆连接状态进行标识,实现车辆上下线与前置机间的持久化关系,并进行分布式共享与逻辑一致性判断,从而在车辆重复上下线的时候对车辆状态进行失真判断,有效地避免了车辆在线状态失真的情况。
进一步地,所述“将所述关联关系存储到分布式缓存”之后,进一步包括:
将分布式缓存中的数据进行快照,得到快照数据;
将所述快照数据写入服务器中。
由上述描述可知,将分布式缓存中的信息持久化保存到本地服务器,降低内存信息数据的丢失风险。
进一步地,所述“更新分布式缓存与数据库中的车辆状态为上线状态”之后,进一步包括:
所述前置机接收所述车辆发送的下线请求;
断开所述车辆与所述前置机的连接;
在分布式缓存中删除所述车辆与所述前置机的关联关系;
更新分布式缓存与数据库中的车辆状态为下线状态。
由上述描述可知,车辆是通过上报下线请求来进行下线,车辆正常下线时,无需做任何的失真判断。
进一步地,所述“更新分布式缓存与数据库中的车辆状态为上线状态”具体为:
生成更新分布式缓存与数据库中的车辆状态为上线状态的上线更新任务,并提交到异步操作线程池;
判断所述线程池中的线程是否全部处于运行状态;
若否,启用一个线程执行所述上线更新任务;
若线程全部处于运行状态,判断工作队列是否处于满负荷状态;
若否,将所述上线更新任务加入到工作队列;
若工作队列处于满负荷状态,判断线程池的总线程数是否达到最大值;
若总线程数没有达到最大值,启用一个新线程执行所述上线更新任务;
若所述新线程在预设时间内处于空闲状态,回收所述新线程;
若总线程数达到最大值,将所述上线更新任务提交到主线程执行。
由上述描述可知,对线程池采用满负荷抛弃策略,当工作队列和线程池都达到满负荷后,启用阻塞主线程执行策略;通过进行多线程异步操作,避免出现车辆更新阻塞,影响其他车辆的正常接入。
进一步地,所述“更新分布式缓存与数据库中的车辆状态为上线状态”之后,进一步包括:
将所述车辆状态发布到分布式缓存中预设的更新发布频道。
由上述描述可知,可防止终端或其他业务系统频繁查询数据库中的车辆状态,降低对数据库的干扰,防止数据失真,减轻数据库的压力。
进一步地,所述“关联所述车辆与所述前置机,得到关联关系”具体为:
关联所述车辆的ID与所述前置机的实例名,得到关联关系。
由上述描述可知,通过关联车辆和前置机的唯一标识,得到唯一的关联关系。
请参照图5,本发明还提出了一种车辆在线状态失真解决系统,包括:
第一接收模块,用于一前置机接收到一车辆发送的上线请求;
建立模块,用于建立所述车辆与所述前置机的连接;
关联模块,用于关联所述车辆与所述前置机,得到关联关系;
存储模块,用于将所述关联关系存储到分布式缓存;
第一更新模块,用于更新分布式缓存与数据库中的车辆状态为上线状态;
监听模块,用于所述前置机根据预设的监测时间监听所述连接是否断开;
第一判断模块,用于若断开,判断所述前置机与存储在分布式缓存中与所述车辆最新关联的前置机是否一致;
第二判断模块,用于若一致,判断所述车辆是否在所述前置机内重复上线;
第一断开模块,用于若是,断开所述连接;
第二更新模块,用于若否,断开所述连接,并更新分布式缓存与数据库中的车辆状态为下线状态;
第二断开模块,用于若不一致,断开所述连接。
进一步地,还包括:
快照模块,用于将分布式缓存中的数据进行快照,得到快照数据;
写入模块,用于将所述快照数据写入服务器中。
进一步地,还包括:
第二接收模块,用于所述前置机接收所述车辆发送的下线请求;
第三断开模块,用于断开所述车辆与所述前置机的连接;
删除模块,用于在分布式缓存中删除所述车辆与所述前置机的关联关系;
第三更新模块,用于更新分布式缓存与数据库中的车辆状态为下线状态。
进一步地,所述第一更新模块包括:
生成单元,用于生成更新分布式缓存与数据库中的车辆状态为上线状态的上线更新任务,并提交到异步操作线程池;
第一判断单元,用于判断所述线程池中的线程是否全部处于运行状态;
第一启用单元,用于若否,启用一个线程执行所述上线更新任务;
第二判断单元,用于若线程全部处于运行状态,判断工作队列是否处于满负荷状态;
加入单元,用于若否,将所述上线更新任务加入到工作队列;
第三判断单元,用于若工作队列处于满负荷状态,判断线程池的总线程数是否达到最大值;
第二启用单元,用于若总线程数没有达到最大值,启用一个新线程执行所述上线更新任务;
回收单元,用于若所述新线程在预设时间内处于空闲状态,回收所述新线程;
提交单元,用于若总线程数达到最大值,将所述上线更新任务提交到主线程执行。
实施例一
请参照图2,本发明的实施例一为:一种车辆在线状态失真解决方法,可用于解决基于分布式前置机负载均衡机制下车辆在线失真的问题,包括如下步骤:
S1:一前置机接收到一车辆发送的上线请求。
S2:建立所述车辆与所述前置机的连接。
S3:关联所述车辆与所述前置机,得到关联关系;优选地,可关联所述车辆的ID与所述前置机的实例名,得到车辆ID和前置机实例名的关联关系。
S4:将所述关联关系存储到分布式缓存;优选地,采用Redis分布式缓存;可预先指定Redis分布式缓存中的一个库作为车辆与前置机的关联关系、车辆在线状态的存储库。
S5:更新分布式缓存与数据库中的车辆状态为上线状态;因为车辆上线的动作永远都是车辆执行的最新动作,一旦车辆上报上线数据,则说明当前车辆一定在某个前置机中成功鉴权,所以对车辆上线可直接做上线状态的直接更新;优选地,更新操作采用异步更新。
S6:所述前置机根据预设的监测时间监听所述连接是否断开,若是,执行步骤S7,若否,则继续监听;首先在前置机设立一个专门的监听者线程,由该线程负责监听车辆与前置机之间的链路畅通情况,并将此线程设置为守护者线程,此线程在本方法中称为链路监测线程;链路监测线程以链路心跳时间进行监测,如果预设的链路有效时间内没有收到正常的心跳信息,则判定所述车辆与所述前置机的连接已断开。
S7:判断所述前置机与存储在分布式缓存中与所述车辆最新关联的前置机是否一致,若是,执行步骤S8,若否,执行步骤S11;即判断所述前置机的实例名与存储在分布式缓存中与所述车辆最新关联的前置机的实例名是否一致;若一致,则表示车辆异常下线后又重新在同一台前置机上线,或者车辆异常下线后还未在任何一台前置机上线,若不一致,则表示车辆异常下线后在其他前置机上线。
S8:判断所述车辆是否在所述前置机内重复上线,即判断所述车辆在所述前置机上是否同时存在两个连接,若是,执行步骤S9,若否,执行步骤S10;所述两个连接按照连接建立的时间分为旧连接和新连接。
S9:断开所述连接,即断开旧连接执行步骤S3;前置机收到车辆的上线请求时,需先判断本前置机是否有与所述车辆的旧连接存在,若存在旧连接,则需要先断开旧连接;同时,所述车辆与所述前置机建立新连接后,还要重新将所述车辆与所述前置机的关联关系存储到分布式缓存,防止极端的情况下,在短时间内车辆先后在两个不同的前置机上线,因其他原因造成再次掉线后,又返回原来的前置机,这时候分布式缓存中保存的该车辆对应的前置机还是第二个前置机,所以即使在同一台前置机重复上线也要重新更新分布式缓存中的关联关系,确保更新的时间先后性,永远保持车辆当前的状态为真实状态。
S10:断开所述连接,并更新分布式缓存与数据库中的车辆状态为下线状态;此时表示车辆异常下线后还未在任何一台前置机上线,因此将车辆状态更新为下线状态。
S11:断开所述连接;在此表示车辆异常下线后与其他前置机建立连接,并已将车辆与该其他前置机的关联关系存储到的分布式缓存中,即在其他前置机上线,因此需断开车辆与本台前置机的连接,使车辆只与一台前置机有连接关系。
优选地,在步骤S4后,可将Redis分布式缓存中的数据进行快照,得到快照数据,并将所述快照数据写入服务器中,使Redis分布式缓存中的信息持久化保存到本地服务器,降低内存信息数据的丢失风险。
优选地,可预先在Redis分布式缓存中指定相关频道(channel)作为发布车辆与前置机信息更新推送的更新发布频道,在对车辆状态进行更新后,即可将车辆状态发布到该更新发布频道;对于其他的分布式缓存,可预先设置用于推送车辆状态的推送模块;可防止终端或其他业务系统频繁查询数据库中的车辆状态,降低对数据库的干扰,防止数据失真,减轻数据库的压力。
本实施例通过利用分布式缓存对车辆上下线状态进行标识,实现了车辆上下线与分布式前置机间的持久化关系,并进行分布式共享与一致性逻辑判断。通过该方法可以对车辆重复上下线的动作进行快速失真判断,避免了车辆重复断链所造成的上下线状态无序性覆盖,保证了上下状态更新的有效性,从根本上解决了车辆在线状态失真的情况,提高了监控平台对车辆监控的真实性。
实施例二
请参照图3,本实施例是实施例一的进一步拓展,即车辆正常下线时的步骤:
S12:所述前置机接收所述车辆发送的下线请求。
S13:断开所述车辆与所述前置机的连接。
S14:在分布式缓存中删除所述车辆与所述前置机的关联关系。
S15:更新分布式缓存与数据库中的车辆状态为下线状态;优选地,采用异步更新操作。
车辆通过上报下线请求来进行下线,此时无需做任何失真判断。
实施例三
请参照图4,本实施例是实施例一中步骤S5的具体实现方式,在实际生产环境中,当车辆数到达一定程度的时候,前置机的并发压力将增大,在进行失真判断后,所进行的部分更新动作需要进行多线程异步操作,避免出现车辆更新阻塞,影响其他车辆的正常接入;具体包括如下步骤:
S501:生成更新分布式缓存与数据库中的车辆状态为上线状态的上线更新任务,并提交到异步操作线程池;
S502:判断所述线程池中的线程是否全部处于运行状态,若否,执行步骤S503,若是,执行步骤S504;初始化时,线程池中线程的个数为两倍的CPU核心数。
S503:启用一个线程执行所述上线更新任务。
S504:判断工作队列是否处于满负荷状态,若否,执行步骤S505,若是,执行步骤S506;优选地,所述工作队列的容量可设置为1000个。
S505:将所述上线更新任务加入到工作队列,等待线程池中空闲的线程来执行。
S506:判断线程池的总线程数是否达到最大值,若否,执行步骤S507,若是,执行步骤S508;线程池中线程的个数最大可为CPU核心数×2+64个,其中,64为预设的最优值。
S507:启用一个新线程执行所述上线更新任务;执行完后新线程回到线程池中,若所述新线程在预设时间内处于空闲状态,则回收所述新线程。
S508:将所述上线更新任务提交到主线程执行,延缓主线程的任务提交。
同样地,对于实施例一与实施例二中的更新分布式缓存与数据库中的车辆状态为下线状态也可运用本实施例的方法进行更新,区别在于,步骤S501为生成更新分布式缓存与数据库中的车辆状态为下线状态的下线更新任务。
本实施例对线程池采用满负荷抛弃策略,当工作队列和线程池都达到满负荷后,启用阻塞主线程执行策略,可避免出现车辆更新阻塞,影响其他车辆的正常接入。
实施例四
请参照图6,本实施例是对应上述实施例的一种车辆在线状态失真解决系统,包括:
第一接收模块1,用于一前置机接收到一车辆发送的上线请求;
建立模块2,用于建立所述车辆与所述前置机的连接;
关联模块3,用于关联所述车辆与所述前置机,得到关联关系;具体用于关联所述车辆的ID与所述前置机的实例名,得到关联关系;
存储模块4,用于将所述关联关系存储到分布式缓存;
第一更新模块5,用于更新分布式缓存与数据库中的车辆状态为上线状态;
监听模块6,用于所述前置机根据预设的监测时间监听所述连接是否断开;
第一判断模块7,用于若断开,判断所述前置机与存储在分布式缓存中与所述车辆最新关联的前置机是否一致;
第二判断模块8,用于若一致,判断所述车辆是否在所述前置机内重复上线;
第一断开模块9,用于若是,断开所述连接;
第二更新模块10,用于若否,断开所述连接,并更新分布式缓存与数据库中的车辆状态为下线状态;
第二断开模块11,用于若不一致,断开所述连接。
还包括:
快照模块12,用于将分布式缓存中的数据进行快照,得到快照数据;
写入模块13,用于将所述快照数据写入服务器中。
还包括:
第二接收模块14,用于所述前置机接收所述车辆发送的下线请求;
第三断开模块15,用于断开所述车辆与所述前置机的连接;
删除模块16,用于在分布式缓存中删除所述车辆与所述前置机的关联关系;
第三更新模块17,用于更新分布式缓存与数据库中的车辆状态为下线状态;
发布模块18,用于将所述车辆状态发布到分布式缓存中预设的更新发布频道。
所述第一更新模块5包括:
生成单元51,用于生成更新分布式缓存与数据库中的车辆状态为上线状态的上线更新任务,并提交到异步操作线程池;
第一判断单元52,用于判断所述线程池中的线程是否全部处于运行状态;
第一启用单元53,用于若否,启用一个线程执行所述上线更新任务;
第二判断单元54,用于若线程全部处于运行状态,判断工作队列是否处于满负荷状态;
加入单元55,用于若否,将所述上线更新任务加入到工作队列;
第三判断单元56,用于若工作队列处于满负荷状态,判断线程池的总线程数是否达到最大值;
第二启用单元57,用于若总线程数没有达到最大值,启用一个新线程执行所述上线更新任务;
回收单元58,用于若所述新线程在预设时间内处于空闲状态,回收所述新线程;
提交单元59,用于若总线程数达到最大值,将所述上线更新任务提交到主线程执行。
综上所述,本发明提供的一种车辆在线状态失真解决方法及其系统,通过将车辆和前置机进行关联,并将关联关系存储到分布式缓存,解决了前置机集群中多个前置机之间的信息共享问题,利用分布式缓存对车辆连接状态进行标识,实现了车辆上下线与前置机间的持久化关系;在车辆每次上、下线的时候进行一致性逻辑判断,在符合一致性的情况下进行信息更新、共享,避免了车辆重复断链所造成的上下线状态无序性覆盖,保证了上下状态更新的有效性,有效解决了车辆在线状态失真的情况,提高了监控平台对车辆监控的真实性;将分布式缓存中的信息持久化保存到本地服务器,降低内存信息数据的丢失风险;在进行失真判断后,对更新动作进行多线程异步操作,避免出现车辆更新阻塞,影响其他车辆的正常接入。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种车辆在线状态失真解决方法,其特征在于,包括:
一前置机接收到一车辆发送的上线请求;
建立所述车辆与所述前置机的连接;
关联所述车辆与所述前置机,得到关联关系;
将所述关联关系存储到分布式缓存;
更新分布式缓存与数据库中的车辆状态为上线状态;
所述前置机根据预设的监测时间监听所述连接是否断开;
若断开,判断所述前置机与存储在分布式缓存中与所述车辆最新关联的前置机是否一致;
若一致,判断所述车辆是否在所述前置机内重复上线;若是,断开所述连接;若否,断开所述连接,并更新分布式缓存与数据库中的车辆状态为下线状态;
若不一致,断开所述连接。
2.根据权利要求1所述的车辆在线状态失真解决方法,其特征在于,所述“将所述关联关系存储到分布式缓存”之后,进一步包括:
将分布式缓存中的数据进行快照,得到快照数据;
将所述快照数据写入服务器中。
3.根据权利要求1所述的车辆在线状态失真解决方法,其特征在于,所述“更新分布式缓存与数据库中的车辆状态为上线状态”之后,进一步包括:
所述前置机接收所述车辆发送的下线请求;
断开所述车辆与所述前置机的连接;
在分布式缓存中删除所述车辆与所述前置机的关联关系;
更新分布式缓存与数据库中的车辆状态为下线状态。
4.根据权利要求1所述的车辆在线状态失真解决方法,其特征在于,所述“更新分布式缓存与数据库中的车辆状态为上线状态”具体为:
生成更新分布式缓存与数据库中的车辆状态为上线状态的上线更新任务,并提交到异步操作线程池;
判断所述线程池中的线程是否全部处于运行状态;
若否,启用一个线程执行所述上线更新任务;
若线程全部处于运行状态,判断工作队列是否处于满负荷状态;
若否,将所述上线更新任务加入到工作队列;
若工作队列处于满负荷状态,判断线程池的总线程数是否达到最大值;
若总线程数没有达到最大值,启用一个新线程执行所述上线更新任务;
若所述新线程在预设时间内处于空闲状态,回收所述新线程;
若总线程数达到最大值,将所述上线更新任务提交到主线程执行。
5.根据权利要求1所述的车辆在线状态失真解决方法,其特征在于,所述“更新分布式缓存与数据库中的车辆状态为上线状态”之后,进一步包括:
将所述车辆状态发布到分布式缓存中预设的更新发布频道。
6.根据权利要求1所述的车辆在线状态失真解决方法,其特征在于,所述“关联所述车辆与所述前置机,得到关联关系”具体为:
关联所述车辆的ID与所述前置机的实例名,得到关联关系。
7.一种车辆在线状态失真解决系统,其特征在于,包括:
第一接收模块,用于一前置机接收到一车辆发送的上线请求;
建立模块,用于建立所述车辆与所述前置机的连接;
关联模块,用于关联所述车辆与所述前置机,得到关联关系;
存储模块,用于将所述关联关系存储到分布式缓存;
第一更新模块,用于更新分布式缓存与数据库中的车辆状态为上线状态;
监听模块,用于所述前置机根据预设的监测时间监听所述连接是否断开;
第一判断模块,用于若断开,判断所述前置机与存储在分布式缓存中与所述车辆最新关联的前置机是否一致;
第二判断模块,用于若一致,判断所述车辆是否在所述前置机内重复上线;
第一断开模块,用于若是,断开所述连接;
第二更新模块,用于若否,断开所述连接,并更新分布式缓存与数据库中的车辆状态为下线状态;
第二断开模块,用于若不一致,断开所述连接。
8.根据权利要求7所述的车辆在线状态失真解决系统,其特征在于,还包括:
快照模块,用于将分布式缓存中的数据进行快照,得到快照数据;
写入模块,用于将所述快照数据写入服务器中。
9.根据权利要求7所述的车辆在线状态失真解决系统,其特征在于,还包括:
第二接收模块,用于所述前置机接收所述车辆发送的下线请求;
第三断开模块,用于断开所述车辆与所述前置机的连接;
删除模块,用于在分布式缓存中删除所述车辆与所述前置机的关联关系;
第三更新模块,用于更新分布式缓存与数据库中的车辆状态为下线状态。
10.根据权利要求7所述的车辆在线状态失真解决系统,其特征在于,所述第一更新模块包括:
生成单元,用于生成更新分布式缓存与数据库中的车辆状态为上线状态的上线更新任务,并提交到异步操作线程池;
第一判断单元,用于判断所述线程池中的线程是否全部处于运行状态;
第一启用单元,用于若否,启用一个线程执行所述上线更新任务;
第二判断单元,用于若线程全部处于运行状态,判断工作队列是否处于满负荷状态;
加入单元,用于若否,将所述上线更新任务加入到工作队列;
第三判断单元,用于若工作队列处于满负荷状态,判断线程池的总线程数是否达到最大值;
第二启用单元,用于若总线程数没有达到最大值,启用一个新线程执行所述上线更新任务;
回收单元,用于若所述新线程在预设时间内处于空闲状态,回收所述新线程;
提交单元,用于若总线程数达到最大值,将所述上线更新任务提交到主线程执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610309393.3A CN107368366B (zh) | 2016-05-11 | 2016-05-11 | 车辆在线状态失真解决方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610309393.3A CN107368366B (zh) | 2016-05-11 | 2016-05-11 | 车辆在线状态失真解决方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107368366A true CN107368366A (zh) | 2017-11-21 |
CN107368366B CN107368366B (zh) | 2021-10-08 |
Family
ID=60303746
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610309393.3A Active CN107368366B (zh) | 2016-05-11 | 2016-05-11 | 车辆在线状态失真解决方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107368366B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108282219A (zh) * | 2018-01-31 | 2018-07-13 | 中电福富信息科技有限公司 | 用于车辆卫星定位系统的数据通讯的长链接切换处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697252A (zh) * | 2009-11-02 | 2010-04-21 | 中国铁路通信信号上海工程有限公司 | 车辆实时监测系统及方法 |
CN103118092A (zh) * | 2013-01-24 | 2013-05-22 | 中国联合网络通信集团有限公司 | 单次登录实现方法和装置 |
CN104618131A (zh) * | 2014-12-13 | 2015-05-13 | 广西科技大学 | 实时监视车载gps终端在线状况的方法 |
-
2016
- 2016-05-11 CN CN201610309393.3A patent/CN107368366B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697252A (zh) * | 2009-11-02 | 2010-04-21 | 中国铁路通信信号上海工程有限公司 | 车辆实时监测系统及方法 |
CN103118092A (zh) * | 2013-01-24 | 2013-05-22 | 中国联合网络通信集团有限公司 | 单次登录实现方法和装置 |
CN104618131A (zh) * | 2014-12-13 | 2015-05-13 | 广西科技大学 | 实时监视车载gps终端在线状况的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108282219A (zh) * | 2018-01-31 | 2018-07-13 | 中电福富信息科技有限公司 | 用于车辆卫星定位系统的数据通讯的长链接切换处理方法 |
CN108282219B (zh) * | 2018-01-31 | 2021-06-29 | 中电福富信息科技有限公司 | 用于车辆卫星定位系统的数据通讯的长链接切换处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107368366B (zh) | 2021-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106375072B (zh) | 机车通信网络冗余控制方法 | |
CN106209353A (zh) | 密钥管理方法及其系统 | |
CN112671928B (zh) | 设备集中管理架构、负载均衡方法、电子设备及存储介质 | |
CN110401509A (zh) | 用于提高汽车can总线传输效率的方法、设备、介质及装置 | |
CN103019866A (zh) | 基于消息队列的分布式方法和系统 | |
CN102158387A (zh) | 基于动态负载均衡与互相热备的保护故障信息处理系统 | |
CN103281356B (zh) | 一种分发文件的方法及系统 | |
CN106230622A (zh) | 一种集群实现方法及装置 | |
CN105991588B (zh) | 一种防御消息攻击的方法及装置 | |
CN113726573A (zh) | 冗余网络通信方法、装置、电子设备及存储介质 | |
CN107368366A (zh) | 车辆在线状态失真解决方法及其系统 | |
EP3568322A1 (de) | Zentrale datenablage im bordnetz | |
CN111314399A (zh) | 基于以太网的列车灵活动态编组方法、装置、介质及设备 | |
CN102510403A (zh) | 用于车辆数据接收和实时分析的集群分布式系统及方法 | |
CN112947333B (zh) | 一种基于socket长连接的均衡负载分片方法 | |
Zhou et al. | Vulnerability assessment of power cyber-physical system considering nodes load capacity | |
CN111400028B (zh) | 一种列车管理的负载均衡处理方法 | |
CN117762652A (zh) | 基于消息中间件的分布式事务的处理方法及装置 | |
CN204425400U (zh) | 应用服务器系统 | |
CN109428797A (zh) | 列车数据传输系统及方法 | |
CN104331353A (zh) | 软件高可用保证的方法 | |
CN102868594B (zh) | 一种消息处理方法和装置 | |
CN109120680A (zh) | 一种控制系统、方法及相关设备 | |
CN114064289A (zh) | 集群管理系统 | |
CN116017440B (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 |