V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
morota
V2EX  ›  数据库

一个程序开发问题请教各位 V 友大佬,每秒 10 万条数据需要存储,怎样选择技术方案

  •  
  •   morota · 16 小时 21 分钟前 · 7294 次点击

    物联网传感器发送的数据,走 tcp 或者 mqtt ,每秒大概有 10 万条,每条数据大概 20 个字节大小(5 个 int 值) 现在的问题是:服务端如何保存这些数据。

    1, 用什么数据库,如何高频插入 2, 服务器选什么样的配置,来配合数据插入。CPU ,内存,硬盘需要多大。

    请各位大佬不吝指教

    117 条回复    2024-11-30 00:35:56 +08:00
    1  2  
    breadykidliu
        101
    breadykidliu  
       8 小时 52 分钟前
    @kenneth104 到时候会有缓存同步问题,层数多了还会错乱
    ITdream
        102
    ITdream  
       8 小时 49 分钟前
    给你个参考, 之前做的压测, kafka 堆积在可接受范围内

    (1)数据处理服务集群,6 台( 2c8g )- 消费者
    (2)Kafka 集群,3 台( 2c8g )
    (3)IoTDB 集群 3C3D,3 台( 4c16g )- 数据层

    单个上报
    每次请求上报 1 条数据,目前能支持每秒最大并发为 13500 ,每次请求字段数为 42 ,报文大小在 1.2k 左右;

    数组上报
    每次请求上报 20 条数据,目前能支持每秒最大并发为 3600 设备 * 20 ,报文大小在 22.3k 左右
    janus77
        103
    janus77  
       8 小时 46 分钟前
    一个接口吗?如果是多个接口,那按分布式不就行了
    wqkenqing
        104
    wqkenqing  
       8 小时 40 分钟前
    方案应该很多,你传的数据的条数多,但量不算大,每秒大概 2M 。就是 TPS 要求高些,可以考虑 clickhouse+kafka 物化视图。flink 也可以。写入的话,hbase 非常好用,但你里的数据量,应该不值当上这个。其它类似 clickhouse 的一些 olap 工具也可以调研一下,基本应该能满足你的需求。
    leeyuzhe
        105
    leeyuzhe  
       8 小时 32 分钟前
    @qiyilai #32 请展开说说
    Suomea
        106
    Suomea  
       8 小时 27 分钟前
    kafka + Doris ,Doris 直接使用 Routineload 接入 Kafka 数据。
    1. Doris 国产的,有问题社区有官方人员对接答复,体验很好。
    2. 使用固态硬盘存储。
    3. Doris 冷数据支持存储到 HDFS 。
    herewego
        107
    herewego  
       8 小时 21 分钟前
    丢 ES
    mark2025
        108
    mark2025  
       8 小时 21 分钟前
    pgsql 单点写入 110MByte 每秒,pg17 提升到 180MB 。你这个数据量不算啥,只要固态盘就行。
    bthulu
        109
    bthulu  
       8 小时 20 分钟前
    @pkxutao 文件写满 1G, 切换新文件. 旧文件通过 mysql source 归档.
    dupenn
        110
    dupenn  
       8 小时 18 分钟前
    @meeop “简单啊,你搞 10w 个服务器负载均衡,每个服务器就只需要 1qps 的存储了,随便搞”
    看了半天了,也就你这个回答最有意思
    nativeBoy
        111
    nativeBoy  
       8 小时 12 分钟前
    如果数据有规律的话,是否可以考虑编码减少数据量
    winnie2012
        112
    winnie2012  
       7 小时 39 分钟前
    我们现在就是 Kafka + PostgreSQL ,Kafka 只收集数据不处理,PostgreSQL 的表设计参考了 TDengine 的原则,一个设备一张分区子表,按 1 个设备 1 秒插入 1 条数据来算,单表的一年数据量才 3000 万,分散插入压力和查询压力,后台起个 N 个任务批量往 PostgreSQL 里插入数据。
    hongye
        113
    hongye  
       7 小时 32 分钟前
    以前碰到过这类的场景,收集上来的数据基本上都是一样,价值不大,能边缘处理就边缘处理。
    qiyilai
        114
    qiyilai  
       7 小时 22 分钟前
    @leeyuzhe ,并不是说产品多差多难用,我回复也是说选 td 就得选企业收费版
    1 、开源版支持的系统有限,尤其是和信创有关的(欧拉 麒麟)
    2 、开源版实测的写入能力比不上单节点的 influxdb (例如将 prometheus 的存储改为 td 后,td 的 cpu 内存波动剧烈且无法查询,influxdb 则没有)
    3 、开源版的一些函数是不给用的,见官方文档(这个无可厚非毕竟是要赚钱的)
    4 、使用开源版出现的问题在官方群里提问基本不会被解答的(也能理解)
    guo4224
        115
    guo4224  
       6 小时 10 分钟前
    随便搞个 es 什么都能写,怕丢不保险可以搞个 mq ,每秒十万真的不多
    EndlessMemory
        116
    EndlessMemory  
       5 小时 0 分钟前
    加个中间层
    weiwenhao
        117
    weiwenhao  
       51 分钟前
    垃圾心跳数据没什么好存的,非要存就存日志。本地设备可以做简单计算就做一下简单计算,汇聚成 1 ~ 5 分钟平均或者 95 数据在上报。

    汇聚后的数据再上报到云端服务器,云端服务器写到 kafka 里面。数据存储可以用 es/hadoop/influxdb 等文档形数据库
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1393 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 17:27 · PVG 01:27 · LAX 09:27 · JFK 12:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.