V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bbsfoo
V2EX  ›  程序员

像车辆定位,儿童手表定位之类应用的数据是如何存储和查询的?

  •  
  •   bbsfoo · 2022-10-15 12:26:16 +08:00 · 1589 次点击
    这是一个创建于 552 天前的主题,其中的信息可能已经有所发展或是发生改变。

    应用特点和需求: 1 、终端很多 2 、每个终端每秒都可会产生定位数据 3 、服务器端怎样接收如此多的数据?是 http 还是 socket 私有的协议? 4 、怎样快速查询出某个设备的当前定位? 5 、怎样快速查询出历史定位数据?

    一般是怎样的架构啊??

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

    之前是 CS 模式,已重写为 BS.至于架构,各个系统的需求不一样,参与角色也不一样,不好说.
    weak
        5
    weak  
       2022-10-15 18:19:16 +08:00 via iPhone
    MQTT 一楼正解
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1091 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:19 · PVG 07:19 · LAX 16:19 · JFK 19:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.