实时日志统计的问题

2018-07-19 22:13:18 +08:00
 xcaptain

要实现一个多维度的统计功能,比如说按时间,城市,性别,设备等维度进行统计。我调研了一下 kafka streams,能从 topic 中创建 stream,然后在 stream 上可以写 ksql 查询,但是 ksql 查询的结果还是 stream,没法直接放到 mysql 中进行统计报表展示,如果不用 stream 的话就变成了写 consumer 然后把统计结果写入到 mysql,kafka 的优势就体现不出来了,求教一下大家都是怎么做统计的

4815 次点击
所在节点    云计算
10 条回复
owenliang
2018-07-19 22:45:29 +08:00
storm 了解一下,spark streaming 了解一下
woshishabi
2018-07-20 00:33:00 +08:00
@owenliang 跟这些没关系。LZ 需要换一个存储后端,延迟低点的,KV Storage 即可,然后自行组织索引结构,流式吞吐量上去了 mysql 不是非常合适。本人做流式大概六年多了,LZ 这种简单 stateless 场景即使自己写 processor 不依赖框架也行。如果真要上,不建议 storm,其余随你折腾。
thundernet8
2018-07-20 02:00:34 +08:00
用 Druid 试试
xcaptain
2018-07-20 09:01:27 +08:00
@woshishabi 能更详细的说下后端存储的设计吗?我目前用 confluence platform 流计算这块基本是搞定了,后端如何存确实是没想清楚,用 kv 存储的话如何做范围查询呢
xcaptain
2018-07-20 09:22:39 +08:00
@thundernet8 以前没用过这个,查了一下好像比 kafka stream 更符合我的需求,感谢
woshishabi
2018-07-20 09:24:01 +08:00
@xcaptain 需要支持 range query 的 kv store,比如 rocksdb 这样的 做好 sharding 即可,吞吐量 /延迟不会有问题,但是运维的话对于小团队可能比较麻烦点,需要开源组件或者自己维护 replica. 另外有个次一点的选择,hbase,在线服务有时是可以用的,吞吐量足够延迟会大点,看你是不是经常做查询以及对查询的延迟要求,然后对每一个维度都建一个索引即可。
woshishabi
2018-07-20 09:34:37 +08:00
顺便说一句这需求用 spark streaming or flink or 其他什么基本没区别,为啥,就是简单的无状态统计服务(流式里最最基础的)。一两个 processor 就能搞定的事情(一个 parser 做数据清洗+聚合再来一个负责 import 的足够了),这么简单的拓扑,拿框架说事的基本都在扯淡。瓶颈自然是 storage client 这里。
cf0834
2018-07-20 09:51:52 +08:00
storm、spark streaming、flink 都可以玩转你的需求
aboutyang
2018-07-20 13:56:15 +08:00
kafka streams + kafka connect
xcaptain
2018-07-20 16:53:47 +08:00
今天又调研了一下 kafka + clickhouse,目前来看效果还不错,clickhouse 的语法类似 mysql,学习成本比较低,开源的数据可视化工具 redash 也支持 clickhouse,可能就用这个方案了

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

https://www.v2ex.com/t/472484

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

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

© 2021 V2EX