尝试找出一个涉及数据摄取和分析的项目,并可以使用一些关于工具和软件的建议。
我们让传感器创建具有2-3个字段的记录,每个记录每秒产生约200条记录(约2KB/秒),并且每分钟将它们发送到远程服务器一次,导致每个传感器每天产生约1800万条记录和200MB数据。不确定我们需要多少传感器,但它可能会从个位数开始。
我们需要能够对最近的数据采取行动(警报)(不确定时间段猜测少于1天),以及对过去的数据运行查询。我们想要的是可伸缩和相对稳定的东西。
我正在考虑使用弹性搜索(然后可能使用x-pack或sentinl来提醒)。我也想过Postgres。Kafka和Hadoop绝对是大材小用了。我们在AWS上,所以我们也可以使用像kinesis这样的工具。
问题是,什么是适合这项工作的软件/体系结构?
发布于 2018-10-03 04:06:07
您是否与您的AWS解决方案架构师讨论过该使用案例?他们喜欢这种东西,他们会很乐意帮你找出正确的架构。它可能非常适合AWS IoT services
如果您不使用托管IoT服务,您将希望将消息推送到可伸缩队列,如Kafka或Kinesis (如果您每天处理18M *5个传感器= 90M个事件,即每秒>1000个事件。Kafka在这里不是过度杀伤力;许多其他堆栈可能是杀伤力不足)。
然后从Kinesis将数据传输到更快的堆栈中进行分析/查询,例如HBase、Cassandra、Druid或ElasticSearch,具体取决于您团队的偏好。有些人会说这是时间序列数据,所以您应该使用InfluxDB之类的time series database;但是,这取决于您。只需确保它是一个性能良好的数据库(并且运行良好!)当受到每秒1000次写入的稳定负载时。为此,我不建议使用RDBMS,甚至Postgres也不推荐。上面提到的这些应该都可以处理。
此外,为了安全起见,不要忘记将消息从Kinesis传输到S3,即使您不打算永远保留这些消息(只需设置一个生命周期规则,以便在这种情况下从存储桶中删除旧数据)。毕竟,这是大数据,规则是“每时每刻都会崩溃”。如果您的分析堆栈崩溃,您可能不希望完全丢失数据。
至于警报,这取决于1)您为分析部分选择的堆栈,以及2)您想要使用的触发器类型。从你的描述来看,我猜你很快就会想要构建更高级的触发器,比如用于异常检测的机器学习模型,因此你可能想要不轮询分析堆栈,而是直接从Kinesis消费事件的东西。
https://stackoverflow.com/questions/52612148
复制相似问题