首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实时数据处理体系结构

实时数据处理体系结构
EN

Stack Overflow用户
提问于 2016-08-29 19:30:43
回答 1查看 224关注 0票数 2

我正在为下面的内容构建架构,并希望了解其他人对它的看法。

假设系统正在运行一些非平凡的算法(所以它不是简单的某物之和等等)。在每个用户上收集的数据。一些用户将拥有10行数据,有些用户将拥有数万行数据。随着时间的推移,数据将是用户地理位置。用户数量将超过1,000万-1亿,而且许多用户的数据每天都在输入,有些用户可能每分钟都会收到。

每隔一段时间(1/5/15分钟,基本上是尽快),我想对每个用户的数据运行一个非平凡的算法,它会吐出几个数字,然后再报告出来。

一种建模方法是将数据存储在NoSQL db中,并在Akka集群上处理每个用户的数据。对移民局有什么建议吗?

这里的用户数据基本上是一个附加日志,一旦添加,数据就不会改变--但是它一直在增长,一些用户比其他用户拥有更多的数据。为了处理每个用户的数据,所有的数据都需要加载到内存中的某个地方,所以最好的情况是,所有数据都在内存中,并在一分钟的间隔内重新处理--缺点是,我需要to的RAM才能做到这一点,如果内存中的服务器出现故障,那么所有的数据都需要重新加载,这需要一段时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-30 07:51:40

我目前正在处理一个类似的问题。我的系统大约有3500万条“记录”,每条记录中大约有4-5个值。我目前能够处理他们(一个非平凡的处理)约20个小时,在一个中型桌面(6核心AMD,旋转盘)。

为了存储,我尝试了几乎所有的东西,从Postgres开始,搬到了Hypertable的Cassandra。然后我意识到,我的用例只涉及按顺序重放数据,而不需要在写或读中随机访问。我找到了纪事,这正是我要找的。由于我没有足够的内存来存储所有的数据,所以我需要从磁盘上读取所有的数据,而使用“纪事报”,我的记录达到了每秒800.000条左右。

我不知道“纪事”的当前版本,但我使用的版本创建了一个“索引”文件,我发现这个文件是多余的。从那时起,我使用了自己的代码,基本上是没有索引文件的纪事(内存映射文件),这使我在大约30 MB/秒的旋转磁盘上的记录达到1.300.000个/秒。

存储的另一点是压缩数据。这会带来很大的不同。我为我的数据编写了一个对齐的压缩(当我将一个值压缩为3位时,它实际上只写了3位,而不是8位)。我发现使用字节边界压缩会比(对我的数据)差30%-40%。例如,我预计来自一个人的GPS数据不会迅速变化,因此每个连续的数据点可能只需要几个比特。

因为我不像您那样需要实时处理,所以我的主要目标是在一台(或至少几台)机器上尽可能地提高处理性能。我试了Akka,Hadoop (这只是一个皮塔,不推荐它),周围玩的Apache火花。我的问题是,其中大多数都是在一个大型集群中运行的,而且在一台机器上没有我想要的那么快(或者至少,我无法使它们达到我想要的速度)。

最后,我自己实现了一个处理链,就像我说的那样,使用I/O处理大约500.000条记录/秒,因为我的数据很容易被分割成独立的碎片,所以我可以不需要协调节点就可以扩展。

如果您有更多的数据,并且需要实时处理,您可能需要比我更多的扩展,那么个人的性能可能不是最重要的部分。

不管怎么说,我希望这能帮上忙。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39213782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档