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