服务调用架构图
流程说明:
- 设备建立连接:
设备通过ip+端口连接netty服务,通过服务端的数据协议校验即可建立连接,连接建立后会在本地ConcurrentHashMap中存储设备号与channel的对应关系,channel的attr中缓存协议名称、设备标志,缓存缓存设备号:netty服务ip端口信息至redis缓存 - websocket建立连接:
根据设备id通过web服务获取netty服务域名信息,连接url需拼接token参数供后端登陆校验 - 设备上传信息流程:
设备上传信息—>解析设备上传信息—>判断设备上传数据类型—>根据数据类型需要选择是否实时推送给需要的websocket—>通过routeKey发送数据至相对应的mq队列—>web服务消费mq消息并进行ack确认 - netty下发数据流程:
用户通过http请求向web服务下发车机操作—>按照协议将操作翻译成相关指令—>生成操作日志记录写入mysql—>查询该设备连接到的netty服务器ip—>通过dubbo指定ip调用(通过spi拓展机制自定义容错策略并实现根据ip指定选择provider)指定netty服务—>netty服务根据本地缓存的设备标志与channel的对应关系向指定的channel下发指令 - web服务作用简述:
- 负责系统业务逻辑的http请求
- 负责消费mq队列进行逻辑处理:包括操作日志数据记录操作状态、汽车上报信息存储(后续需迁移至es)、设备设置信息同步设备配置表