有没有人知道 cnzz 这种统计的 后端计算架构是怎么样实现的 那么海量的数据实时(雾= =.相对实时的)处理

2016-04-22 11:33:58 +08:00
 0x5010
有了解的么 一起讨论下
9039 次点击
所在节点    程序员
43 条回复
holinhot
2016-04-23 00:02:44 +08:00
有时候他位的统计也有问题。明细里面有。概览没数据
gluttony
2016-04-23 00:21:36 +08:00
每一次点击 /事件等都入数据库,经 hadoop 定时聚合计算后放到数据仓库 ( Data Warehouse ) 里,再从数据仓库生成报表。 No-SQL 兴起后这个流程应该有所改进。有技术含量的是 Google Analytics 的 ad-hoc 报表,就是用户可以添加包括手工输入正则表达式在内的各种条件细分后实时生成报表的功能,这不是光靠堆设备就能解决的。至今国内大部分统计系统都模仿不了,大家都是加几个预设写死的条件做个细分的样子。
SlipStupig
2016-04-23 02:50:59 +08:00
@0x5010 我跟公司写过这种统计大概每天统计请求一百万吧,这个并没那么难,如果只是存储访客信息, nginx+tornado*4 然后用 mysql 存储就行,为了让 mysql 压力小一点 100 次请求才提交一次事务,机器配置也不高 2core+4g 内存。
如果是做广告 dsp-trace ,有几种方案可以做
1.给用户设置 cookie ,请求接口将广告显示出来,然后后台数据库用 redis 设置一个 kv 就行(某个用户 某个时间访问了某个广告的 ID ),聚合的时候根据 cookie 去找,很容易通过这种方式去进行各种维度的聚合,其实去了根据维度去重复后数据量还好(其实产生的时候基本上到 redis 的时候就已经是个完整字典结构了)
2.还有将数据分布存储,隔一段时间 hadoop 或者 spark 进行离线计算,把相关数据库存储到 monogodb 里面去,前端展示结构从 mongodb 里面查询
javaluo
2016-04-23 08:33:12 +08:00
@gluttony 同意同意同意,超级牛!
zaishanfeng
2016-04-23 08:52:36 +08:00
这个很难吗? 无非是堆机器加简单分析 。 感兴趣的可以研究 ga
bzzhou
2016-04-23 09:12:13 +08:00
不了解 cnzz 的,不过做法大同小异。

有两个假设条件:

1. 首先,“实时处理”这个假设,实际应该是批量处理,只不过时间周期较短,甚至级别,达到实时的效果。
2. 然后从数据的纬度来看,是很自然可以按照站点级别进行拆分的。

满足 1 & 2 这两个条件,那么方案就很多了。

数据提交部分,主要面临的问题单个节点支撑不了,所以解决方案:“拆”
1. N 个数据接入节点,将用户上传的数据,按照站点 id 取模(假设模是 M ),写入对应的队列(假设 kafka )。
2. kafka 后面,挂 M 个消费者,独立处理一条数据流就 Ok ,然后写入 hdfs 或者 mysql

数据存储 & 处理:
就看存不存在在线的实时查询需求了;如果没有相对简单,直接把原始数据存入 hdfs ,然后用 hadoop/spark 直接离线分析就 ok 了,扩展性不是问题

实时分析就看数据规模, mysql, Greenplum 各种方案都有,甚至大厂甚至会定义自己的 olap 引擎。
bzzhou
2016-04-23 09:19:17 +08:00
@gluttony Google Analytics ad-hoc 某种程度上也是靠堆机器,只是 G 家机器资源池子够大,底层任务调度机制各方面做的都很好了,所以不怕这种复杂统计所带来的计算量冲击。

对于那些规模就百来台机器的厂子,要是瞬间来个几百个用户提交几百个复杂的统计,估计直接歇菜了。
audi
2016-04-23 09:23:10 +08:00
每次数据都入数据库的 你们太天真了 08 年奥运的时候,我们给 sohu 做全站流量统计,每天上亿的 pv ,你们就用数据库存吧。。。。这还只是一个站,国内几大门户,中型门户都是我们在做,每天总计几十亿级别的 pv 也直接存库吗?
JiShuTui
2016-04-23 09:27:03 +08:00
@audi 求分享
audi
2016-04-23 09:50:18 +08:00
@JiShuTui 手机码字不方便,等上 pc 后简单介绍下。
zpvip
2016-04-23 10:50:07 +08:00
@audi 期待
fo2w
2016-04-23 12:48:02 +08:00
@audi 期待兄弟分析学习,如果方便的话
tinyproxy
2016-04-23 13:06:12 +08:00
@0x5010 免费用户不给钱,但他们的数据可以卖啊
derpc
2016-04-23 13:32:01 +08:00
@audi 关注😁😁😁
cashcow
2016-04-23 14:10:43 +08:00
penjianfeng 说得很有道理的样子。
jokie
2016-04-23 14:25:03 +08:00
我们用的 CNZZ ,加载他们的 js 会随机跳转到别的网站,不知道这个是不是他们盈利的方法?
ZE3kr
2016-04-23 15:00:37 +08:00
大家可以研究一下 Piwik 这个开源的基于 PHP+MySQL 的统计,实时统计极为强大,能显示的内容也很多。

类似 @penjianfeng 和 @gluttony 所说, Piwik 也是一样,会定时处理才(比如一小时一次)报表,然后再将访客的日志写入本月、本日、当前小时的表中,算出页面浏览什么的。用户访问时只存储基本的日志,几乎没别的计算量(似乎此过程中都不连接数据库,只写入几个文件)。

Piwik 默认是 150 秒处理一次,但是建议大流量网站设置为一小时一次。

但是查看实时访客,只是读取最新的日志,然后立刻生成,返回结果,完全是实时。

我的 Piwik 就在自己的服务器上,运行的很不错。

https://media.landcement.com/sites/2/20160423145643/image.png

https://media.landcement.com/sites/2/20160423145638/image6.jpeg
zeinipiyan
2016-04-23 20:16:03 +08:00
@ZE3kr piwik 访问人数少还可以,人多了就要崩了吧
ZE3kr
2016-04-23 21:54:52 +08:00
@zeinipiyan Piwik 可以部署集群的,也适合超大流量的。比如开好多个 AWS EC2 负载均衡, auto-scaling ,配合 AWS RDS 使用应该没有问题。但是估计实时访客系统就不准了。
qcloud
2016-04-24 12:00:03 +08:00
@ZE3kr piwik 非常棒,但是太吃资源了,每次操作 piwik CPU 飙 100..我感觉 CPU 和内存都要爆了

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

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

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

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

© 2021 V2EX