应用特点和需求: 1 、终端很多 2 、每个终端每秒都可会产生定位数据 3 、服务器端怎样接收如此多的数据?是 http 还是 socket 私有的协议? 4 、怎样快速查询出某个设备的当前定位? 5 、怎样快速查询出历史定位数据?
一般是怎样的架构啊??
1
Jet 2022-10-15 13:24:06 +08:00
IoT 领域有很成熟的解决方案了,比如 MQTT + 时序数据库。
|
2
oyasumi 2022-10-15 14:08:34 +08:00 via iPad
dynamodb
|
3
wangbin526 2022-10-15 17:50:18 +08:00
肯定是 http 快啊,用 fastapi 做后台最多也就上百行代码搞定,性能也不差,频率到每秒这么高的话用 redis 做个缓存,缓存几十秒再一起插入,还不行就用 go 吧
存储量小的随便,量大的话找个时序数据库,比如国产 TDengine ,每设备一个表查询很简单的 如果需要终端随时能快速响应的话只能上 MQTT 了,Docker 部署个国产的 EMQX 也很方便,但终端还是另外用 http 发定位性能会好很多,不然开源的 EMQX 还得自己写 Hook 存数据库 |
4
a33291 2022-10-15 17:59:54 +08:00
说一下我们这边目前的实现
1. mysql 数据库,尚未引入时序数据库.但我们主要的服务方式是离线私有化部署 2. 定位设备和定制手机+定制 app 联动,定位设备采用基于 tcp 的私有协议交互(未使用 mqtt),手机端使用私有 tcp 协议+http 协议和平台交互 3. 当设备上报位置数据后,根据经纬度(坐标系转换)反查地址信息等完善基础信息(这块相对复杂,定位有 gps 基站 wifi 等),然后存入历史表并更新对应设备的最新位置 4. 历史表直接查(当前甚至未做时间窗口优化),有必要的索引,数据量一般在千万级 之前是 CS 模式,已重写为 BS.至于架构,各个系统的需求不一样,参与角色也不一样,不好说. |
5
weak 2022-10-15 18:19:16 +08:00 via iPhone
MQTT 一楼正解
|