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

252 天前
 morota

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

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

请各位大佬不吝指教

12336 次点击
所在节点    数据库
122 条回复
meeop
252 天前
简单啊,你搞 10w 个服务器负载均衡,每个服务器就只需要 1qps 的存储了,随便搞
wulili
252 天前
看似很多,也就每秒 2mb 左右的数据量,内存能有什么压力,都先丢内存里,把数据整合一下,再慢慢插入数据库或者写入文件都可以吧。
jimrok
252 天前
先用日志方式收数据,多台服务器的磁盘写入肯定能保证,放入数据库你要考虑好,单节点吞吐量肯定不够,需要一个群集才能吃下这些数据,还需要分片存储。每个设备你要知道存在那个库,哪个表里,还需要一套元数据管理服务。
ming159
252 天前
假设一条消息 1KB. 10W 条 约 100MB 数据.
在这个基础上留出一定的余量, 比如 就按 200MB 算. 关键是 2 处 IO 瓶颈.
1. 你的服务器 SSD 硬盘每秒写入速度是多少?
2. 带宽是多少?

剩下的,写个简单的测试程序,先直接内存生成 200MB 假数据, 循环往测试服务器写. 你会发现,貌似一台单机基本就没压力.
剩下的就是看你们团队技术偏好,数据增长规模多少,来选合适的数据库就行了. 一台不行 2 台.
songyoucai
252 天前
@a67793581 看你具体需求,一般都是先丢进消息队列,然后时序数据库去消费, 在消费的时候,根据具体的业务逻辑来格式化数据。消息队列只管生产和消费,时序数据库要管查询、计算,统计。
everhythm
252 天前
真实需求真的是这样么……相当于 10w 人在线的实时联网游戏了

首先每秒 10w 条,是不是一定分开 10w 条请求,不是的话考虑合并上报,楼上也说了每几分钟合并成文件上传,即合并数据的空间或时间

然后这个高频插入,是插入之后需要实时查询么,不实时那慢慢屯到 MQ 慢慢消化也行?数据插入后如何使用会影响你的设计
MagicLi
252 天前
@morota #10 你这个带宽估计太粗糙了,如果是 4G 的话,稍微留一点余量。
a67793581
252 天前
@songyoucai 嗯 目前公司用的是 kafka + flink + hive
pkoukk
252 天前
楼上都在说啥啊,物联网数据,5 个 int ,这不就是标准时序数据库么? 10W 在时序数据库里算个锤子多
市面上流行的时序数据库都支持百万级写入
sampeng
251 天前
就一句,和技术无关。无论如何先落盘。再消费到系统里面做业务存储。不然有锅都没地儿甩。存储随便,这点 metric 数据你是看不起谁呢…
ytmsdy
251 天前
kafka+ InfluxDB
pkoukk
251 天前
@Plutooo 消息队列的吞吐能力影响因素太多了,首先是集群数量和机器配置。
然后各种队列配置也影响很大,Retention 策略,Hash 策略,是否压缩等等等等
fengemma9
251 天前
付费数据库适合你
morota
251 天前
@pkoukk 直接往里面插入吗?每秒都插入?
Plutooo
251 天前
@pkoukk #52 我记得这个吞吐量说的都是单机情况
JungleZZ
251 天前
有个疑问,这些数据是直接落库使用的吗?我也是做物联网的,我们设备的数据都是转到 rocketmq 供下游服务消费后了处理了之后才存表的。举例:计算设备每天的运行时间,那肯定得是第二天统计了头天的数据然后存表。就算是大量的数据要落库,你也可以考虑下他们是否要求实时性,如果不是,那就丢队列慢慢消费。
pkxutao
251 天前
@rockxsj #4 请教下,为什么不能直接入 kafka ,需要先落到本地文件的原因是什么?
fuis
251 天前
直接三板斧搞定:Kafka ,Redis ,MySQL 。数据来了之后先存到 mq 里慢慢消费
reatang
251 天前
可不可以在开头过滤一些无所谓的数据,手工降频
pkxutao
251 天前
@bthulu #21 请问写文件的话,怎么做逻辑查询呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1093560

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX