101电商平台高频实时访问架构

来源:互联网 发布:mac os10.12.6iso 编辑:程序博客网 时间:2024/04/19 10:57
     对于一个大型网站的电商平台来说,随着业务不断增长,用户规模不断增加。面对大流量、高并发的访问,网站性能问题就成了一个瓶颈,那么如何分析一个网站处理的能力,需要我们通过多方面的指标来分析处理。这些指标一般包括: 首页平均响应时长、搜索商品处理能力、登录鉴权能力、下单处理能力等。通过实时分析各个指标的能力可以为网站的建设者提供优化方案。接下来通过模拟下单生成日志,来实时分析下单处理能力。这些方案具有很强的通用性,只要掌握处理方案的方法,就可以做到应对一切变化,最后通过一个案例实时统计PV和UV

1、项目技术架构


架构规划说明: 
(1)需要在每台web服务器上都部署一个flume。
(2)zookeeper集群,建议3-5个节点。
(3)kafka集群,建议使用5-10个节点。
(4)storm集群,建议使用5-10个节点。
(5)mysql,主备 使用两台即可。
(6)webui,一台服务器就可以。
(7)hbase集群,建议5-10个节点。

只有kafka、storm、hbase用到了zookeeper。

2、技术架构要点分析

(1) 每个web服务器上都部署一个flume,这样flume监控本地服务器的端口,收集日志时候可以减少网络传输
(2) 随着业务的不断增加,web服务器也需要增加,而每台web服务器上都要部署flume,就会产生大量的日志,为保证后续数据的处理,这里使用kafka作为消息传输的通道,这个每个flume产生的event都可以放到kafka集群上,等待后续系统的消费
(3)storm程序作为一个消息主要读取kafka中的数据,storm作为消费者,通过kafkaspout直接把flume中的数据让storm处理
(4)引入HBase主要考虑对原始数据进行备份,方便后续处理,由于数据量大,需要快速写入,故存放到HBase中
备注:HBase和Storm同时消费数据,若保证两个消费者都可以消费到数九,只需要存储kafka时候通过groupid区分
(5) flume 如何收集日志,通过log4j配置,对产生的日志通过设置日志界别,并设置flume的source为avro source,log4j配置文件直接org.apache.flume.clients.log4jappender.Log4jAppender直接写入flume
,本项目使用flume1.5.2 版本进行日志收集,故sink阶段没有kafkasink,故开发者需要自定义kafka 的sink。

总结,对于一个日志实时分析系统来说,常用的架构log4j + flume-ng + storm (实时处理)/ hbase(后续离线分析)

0 0
原创粉丝点击