物联网流程

2020/1/1

点击勘误issues (opens new window),哪吒感谢大家的阅读

# 物联网流程

redis主备服务存储内存缓存数据

电池下发控制器(下发jt808发送消息,获取返回结果,获取心跳数据,批量获取)调用电池服务

柜子下发控制器(下发clientId柜子消息,获取柜子铁塔的返回结果,获取柜子心跳数据,批量获取)调用柜子服务

调用一个测试服务接口信息

kafka,电池,柜子,事件

电池kafka实时,从kafka获取电池实时数值,在websocket是否有订阅该设备,有就发给客户端订阅者PC;从kafka获取电池心跳信息与缓存中map比较,存储电池心跳更新到(本地缓存map)中,如果有更新的电池心跳就缓存到内存redis中。服务器该服务器CPU,内存,使用电池设备情况。

柜子Kafka实时,本地map用于存储心跳信息,在websocket是否有订阅该设备,有就发给客户端订阅者PC;从kafka获取柜子心跳信息与缓存中map比较,存储柜子心跳更新到(本地缓存map)中,如果有更新的柜子心跳就缓存到内存redis中。服务器该服务器CPU,内存,使用柜子设备情况。

kafka事件,本地存储jt808,柜子数据;jt808接收消息,柜子接收消息;从Kafka获取分别存储到(本地缓存map)中;广播事件拉取kafka在线内容同时移除(本地缓存map)指定的设备,清空指定心跳信息本地map缓存

服务

发现电池服务(发送jt8080电池消息-从内存缓存redis获取电池心跳信息-发送kafka-jt808SendMsg-本地ip-下发指令,(kafka事件)移除本地接收消息映射缓存map电池设备,下发成功);指定电池设备id从内存redis中获取电池心跳信息并返回;下发指令jt808发送消息内容存储到kafka。下发成功; 获取发送后的结果,redis中获取,移除客户端的消息(jt808接收消息本地map存储)

发现柜子服务(从内存缓存redis中获取柜子心跳信息,发送柜子消息,区分接入设备所属,发送指令事件到kafka,下发指令下发成功;获取柜子返回的消息,从redis中心跳信息,获取成功)

  • websocket

订阅websocket消息;前端发送订阅,获取订阅的心跳信息,创建订阅请求请求设备信息。

  • 控制电池

存储原始报文数据cassandra,主备;电池接口 控制 电池,发送控制设置电池的消息jt808发送消息,jt808数据(消息体),用户端请求设置电池数据,(发送消息到电池客户端),获取返回结果从jt808本地缓存获取map对象中存储的Jt808响应,获取返回结果成功;

根据客户端id,电池设备id获取电池实时数据,从本地缓存中获取数据,没有再去redis中获取数据,获取数据后存储到本地缓存中,返回数据给客户端;电池主机订阅kafka(电池订阅主机),发送电池设备实时信息到kafka消息队列;取消订阅删除本地的订阅主机缓存map包含客户端id以及主机

  • kafka

电池的kafka接收,从kafka消息队列中获取电池下发指令(jt808发送消息),客户端与主机缓存到本地map中,向客户端发送消息(将消息发送给客户端设备),从本地缓存中获取Netty缓存的会话,将jt808的电池通过netty发送给设备;电池的kafka广播接收,在线事件,清楚本地缓存map

  • 电池充电放电处理服务(kafka发送电池充电放电记录)