用于车辆卫星定位系统的数据通讯的长链接切换处理方法与流程

文档序号:14942668发布日期:2018-07-13 21:25阅读:180来源:国知局

本发明涉及电信通讯领域,尤其涉及用于车辆卫星定位系统的数据通讯的长链接切换处理方法。



背景技术:

移动终端使用中大部分处于移动状态,就有可能会遇到没有信号、基站切换等原因,导致终端重新连接tcp链接,服务端旧链接有可能会正常关闭,也可能处于失联状态。对于单机版的状态更新处理就简单:只要通过将新链接替换旧链接即可,状态也随之更新,不存在更新冲突。但对于服务器集群的处理就会比较复杂:它不能保证新连接的tcp链接还是分配原服务器上(负载均衡的存在,ip切换等),这样原服务器可能存在超时释放,而新链接已经连接到另一台服务器,如图1集群链接恢复移动终端状态更新⑩。

最简单的办法是根据实时周期上报数据同步更新状态,但问题在于周期上报数的周期最大约为30秒,终端状态更新过于频繁,且它并不是每次非更新不可,只需在特定条件下更新即可,另外从系统性能考虑也不建议实时更新。如何解决呢,当然经常的解决办法是头痛医头,脚痛医脚,即只在有冲突时段做实时更新,如“xx连接请求”后规定时间内(*1,根据超时时间及周期上报的周期来定),且接收到周期上报才更新移动终端状态,理论上也没问题,只是当周期上报的周期有调整时,可能*1时间也需要调整;另外功能模块间耦合度高,后期运维难度大。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供用于车辆卫星定位系统的数据通讯的长链接切换处理方法,减少频繁更新车辆状态的操作,提高服务性能。避免脏数据发生,为服务器横向扩展提供了保障。

本发明采用的技术方案是:

用于车辆卫星定位系统的数据通讯的长链接切换处理方法,其包括以下步骤:

s1,车载移动终端与当前服务器建立链接,

s2,当前服务器获取该车载移动终端的车辆id,并对应本次链接生成当前链接记录码缓存于当前服务器内存中,每次链接对应一个不同的当前链接记录码;

s3,当前链接首次与当前服务器连接时,当前服务器与数据库建立连接的同时数据库更新车辆状态数据;所述车辆数据包括车辆id、当前链接记录码和车辆状态;

s4,当前服务器周期性获取从车载移动终端周期上报的数据并存储该数据;

s5,当链路断开时,当前服务器向数据库发送车辆状态更新请求,更新请求中包含当前服务器缓存的当前链接记录码;

s6,数据库检测当前服务器缓存的当前链接记录码与数据库中对应数据列表的当前链接记录码是否一致;

检测当前服务器的当前链接记录码一致时,数据库接收当前服务器发送的车辆状态更新数据,数据库更新数据列表内的数据;

检测当前服务器的当前链接记录码不一致时,数据库拒绝接收当前服务器发送的车辆状态更新数据,保持当前数据列表内的数据不变。

进一步地,步骤s2中车载移动终端的车辆id为唯一,且每次链接时车载移动终端的车辆id都是不变的;每次链接对应一个当前链接记录码,同一链接的当前链接记录码是唯一且不变的。

步骤s3中数据库更新车辆数据的具体步骤为:

s3-1,数据库基于车辆id查询是否已有对应的数据列表,

s3-2,当数据库已存在对应数据列表时,更新对应的数据列表的当前链接记录码和车辆状态;

s3-3,当数据库不存在对应数据列表时,创建对应新的数据列表并写入车辆数据。

步骤s4中当前服务器周期性获取从车载移动终端周期上报的数据期间收到链接正常断开请求时,保持当前服务器内存内缓存的当前链接记录码为关键字,更新数据库中的车辆状态数据标记为“离线”。

步骤s4中当前服务器获取周期数据超时,保持在当前服务器内存内缓存的当前链接记录码为关键字,更新数据库中的车辆状态数据标记为“离线”;当前服务器获取周期更新数据未超时,保持在当前服务器内存内缓存的当前链接记录码不变,并且不更新数据库中的车辆状态。

当步骤s6中数据列表内的车辆状态更新为“离线”时,进一步包括如下步骤:

s6-1,数据库向当前服务器返回更新结果,正常说明车辆还未上线,异常说明车辆已经上线了;

s6-2,当前服务器清除服务器内存内缓存的当前链接记录码。

本发明采用以上技术方案,具有如下优点:(1)使用双关键字,不同场合使用不同关键字,避免脏数据发生。在数据库的车辆状态设计时设置车辆id(key)、当前链接记录码(key)、车辆状态;其中主关键字为车辆id或当前链接记录码;当前链接记录码为uuid且会变,车辆id不变。(2)独特的状态迁移---使用当前链接记录码为状态迁移。当每次连接请求鉴权通过时生产唯一的当前链接记录码,以“车辆id”为更新条件,将数据库中的“车辆id、记录id、车辆状态”更新为当前的“车辆id、记录id、在线”,且数据存在时更新,不存在时插入;同时当前链接记录码保存到服务器的缓存内存中(释放时使用)。(3)减少数据库写操作。当连接正常释放或超时释放时以当前链接记录码为更新条件,更新数据先与数据库的存储的当前链接记录码进行一致性比较,比较一致时将数据库中车辆状态更新“离线”,然后再通知服务器删除内存缓存的当前链接记录码数据;如果当前链接记录码比较一致时,则更新失败,说明原记录已经被新连接请求更新过了,即当前为最新状态。(4)连接请求、连接释放(链接超时或收到链接关闭)一一对应,一旦连接请求被新连接请求覆盖后,旧连接释放将失效(不更新状态),因为旧的连接释放与新连接无对应关系,从而它能保持最新状态。

附图说明

以下结合附图和具体实施方式对本发明做进一步详细说明;

图1为现有技术中车载移动终端更新状态示意图;

图2为本发明用于车辆卫星定位系统的数据通讯的长链接切换处理方法的流程示意图;

图3为本发明应用于场景1的状态示意图;

图4为本发明应用于场景2的状态示意图;

图5为本发明应用于场景3的状态示意图;

图6为本发明应用于场景4的状态示意图。

具体实施方式

如图2-6之一所示,本发明公开了用于车辆卫星定位系统的数据通讯的长链接切换处理方法,其包括以下步骤:

s1,车载移动终端与当前服务器建立链接,

s2,当前服务器获取该车载移动终端的车辆id,并对应本次链接生成当前链接记录码缓存于当前服务器内存中,每次链接对应一个不同的当前链接记录码;

s3,当前链接首次与当前服务器连接时,当前服务器与数据库建立连接的同时数据库更新车辆状态数据;所述车辆数据包括车辆id、当前链接记录码和车辆状态;

s4,当前服务器周期性获取从车载移动终端周期上报的数据并存储该数据;

s5,当链路断开时,当前服务器向数据库发送车辆状态更新请求,更新请求中包含当前服务器缓存的当前链接记录码;

s6,数据库检测当前服务器缓存的当前链接记录码与数据库中对应数据列表的当前链接记录码是否一致;

检测当前服务器的当前链接记录码一致时,数据库接收当前服务器发送的车辆状态更新数据,数据库更新数据列表内的数据;

检测当前服务器的当前链接记录码不一致时,数据库拒绝接收当前服务器发送的车辆状态更新数据,保持当前数据列表内的数据不变。

步骤s2中车载移动终端的车辆id为唯一,且每次链接时车载移动终端的车辆id都是不变的;每次链接对应一个当前链接记录码,同一链接的当前链接记录码是唯一且不变的。

步骤s3中数据库更新车辆数据的具体步骤为:

s3-1,数据库基于车辆id查询是否已有对应的数据列表,

s3-2,当数据库已存在对应数据列表时,更新对应的数据列表的当前链接记录码和车辆状态;

s3-3,当数据库不存在对应数据列表时,创建对应新的数据列表并写入车辆数据。

步骤s4中当前服务器周期性获取从车载移动终端周期上报的数据期间收到链接正常断开请求时,保持在当前服务器内存内缓存的当前链接记录码为关键字,更新数据库中的车辆状态数据标记为“离线”。

步骤s4中当前服务器获取周期数据超时,保持在当前服务器内存内缓存的当前链接记录码为关键字,更新数据库中的车辆状态数据标记为“离线”;当前服务器获取周期更新数据未超时,保持在当前服务器内存内缓存的当前链接记录码不变,并且不更新数据中的车辆状态。

当步骤s6中数据列表内的车辆状态更新为“离线”时,进一步包括如下步骤:

s6-1,数据库向当前服务器返回更新结果,正常说明车辆还未上线,异常说明车辆已经上线了;

s6-2,当前服务器清除服务器内存内缓存的当前链接记录码。

下面针对不同的工作场景进行详细说明:

1)场景1:移动终端正常断开:

如图3所示,车载移动终端与当前服务器建立socket连接时,生成对应该次链接的当前记录码具体到本次链接为uuid1;

当前服务器周期性获取从车载移动终端周期上报的数据期间收到链接正常断开请求时,socket关闭,保持在当前服务器内存内缓存的当前链接记录码为主关键字,更新数据库中的车辆状态数据标记为“离线”。

具体地,数据库更新时进行当前记录码一致性检测时,由于当前服务器缓存的uuid1不变与数据库中记录的uuid相等,附加判定条件uuid相同,数据库成功将车辆状态更新为离线。

2)场景2:新旧链接分配到同一台服务器,且服务器未检测到旧链接断(瞬断):

如图4所示,当旧的链接异常或者切换基站时,车载移动终端与旧链接使用的当前服务器(同一台服务器)重新建立链接时,当前服务器针对新的链接生成对应新的当前记录码,具体到本次链接为uuid2,并缓存至当前服务器的内存中;

进一步地,当前服务器与数据库建立连接,同时数据库更新车辆数据;所述车辆数据包括车辆id、当前链接记录码和车辆状态,由于同一车辆的车载移动终端再次连接并更新数据库,车辆id与旧链接的时的一致,数据库存在对应该车辆id的数据列表;数据更新车辆数据时,将新的当前记录码(uuid2)替换数据列表中的旧的当前记录码(uuid1);

当前服务器通过新的链接周期性获取从车载移动终端周期上报的数据时,由于服务器内存中缓存的为uuid2,与数据库中记载的uuid的数据一致,数据库正常更新车辆状态数据;

在本场景中,图4的⑨的uuid2虽然与③uuid1不同,但车载移动终端上线新链接建立时,数据库更新数据是依据车辆id进行更新的,并不进一步不附加判定条件当前记录码uuid,数据库更新正常ok(这就是所谓的瞬断,用户察觉不得链接断)。

3)场景3:新旧链接分配到不同服务器,且新链接建立时,旧链接使用的服务器未检测到旧链接断开(瞬断):

如图5所示,新旧链接分配到不同服务器,且新链接建立时,旧链接使用的服务器未检测到旧链接断开(瞬断);车载移动终端建立新链接时由新的服务器与数据库连接更新,由于是车载移动终端上线新链接建立时,数据库更新数据是依据车辆id进行更新的,并不进一步不附加判定条件当前记录码uuid,数据库正常更新,数据库中的uuid,更新为新链接对应的uuid2。

新链接建立后,由于旧的链路已经断开,旧的服务器周期性获取从车载移动终端周期上报的数据时,检测到获取周期更新数据超时,旧的服务器保持旧的服务器内存内缓存的当前链接记录码uuid1不变,同时将周期更新数据中的车辆状态数据标记为“离线”;旧的服务器与数据库建立连接并发送更新数据请求,

数据库进行当前记录码一致性检测,此时由于数据库对应该车辆id的当前记录码已经变更为新链接的当前记录码uuid2,数据库检测当前记录码不一致,数据库拒绝旧的服务器请求的数据更新。

在本场景中,图5中流程⑨的处理虽然与流程③不在同一台服务器,但不影响数据库状态更新;流程⑩的旧链接超时的uuid1与流程③的uuid1相同,但与流程⑨中数据库更新后的uuid不同,由于周期性更新数据时的附加判定条件为uuid相同时才更新,因此,旧的服务器的数据不更新,从而也不改变更移动终端状态。

4)场景4:新旧链接分配到不同服务器,且新链接建立前,旧的服务器检测到旧链接断(瞬断):

如图6所示,新链接建立前,旧的服务器检测到旧链接断,流程⑧的处理同场景1,数据库中的车辆状态数据正常更新为离线,

但随后新链接建立时,当前服务器针对新的链接生成对应新的当前记录码,具体到本次链接为uuid2,并缓存至当前服务器的内存中;

进一步地,当前服务器与数据库建立连接,同时数据库更新车辆数据;所述车辆数据包括车辆id、当前链接记录码和车辆状态,由于同一车辆的车载移动终端再次连接并更新数据库,车辆id与旧链接的时的一致,数据库存在对应该车辆id的数据列表;数据更新车辆数据时,将新的当前记录码(uuid2)替换数据列表中的旧的当前记录码(uuid1),同时将车辆状态更新为“在线”;此后通过新链接周期性更新数据,处理正常。

本发明在于谁在线就谁处理离线,简单的使用前链接记录码uuid对应,解决了超时期间又上线后被超时处理成离线问题,另外没有增加额外不必要的处理,实现服务器性能最优化;另外,本发明对业务处理只处理必须处理的步骤,并没有增加额外复杂的逻辑处理,服务器处理性能达到最佳。

本发明采用以上技术方案,具有如下优点:(1)使用双关键字,不同场合使用不同关键字,避免脏数据发生。在数据库的车辆状态设计时设置车辆id(key)、当前链接记录码(key)、车辆状态;其中主关键字为车辆id或当前链接记录码;当前链接记录码为uuid且会变,车辆id不变。(2)独特的状态迁移---使用当前链接记录码为状态迁移。当每次连接请求鉴权通过时生产唯一的当前链接记录码,以“车辆id”为更新条件,将数据库中的“车辆id、记录id、车辆状态”更新为当前的“车辆id、记录id、在线”,且数据存在时更新,不存在时插入;同时当前链接记录码保存到服务器的缓存内存中(释放时使用)。(3)减少数据库写操作。当连接正常释放或超时释放时以当前链接记录码为更新条件,更新数据先与数据库的存储的当前链接记录码进行一致性比较,比较一致时将数据库中车辆状态更新“离线”,然后再通知服务器删除内存缓存的当前链接记录码数据;如果当前链接记录码比较一致时,则更新失败,说明原记录已经被新连接请求更新过了,即当前为最新状态。(4)连接请求、连接释放(链接超时或收到链接关闭)一一对应,一旦连接请求被新连接请求覆盖后,旧连接释放将失效(不更新状态),因为旧的连接释放与新连接无对应关系,从而它能保持最新状态。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1