面试题答案
一键面试系统架构
- 数据采集层:
- 从 HBase 集群采集数据,针对同步与异步复制的不同,分别采用不同策略。对于同步复制,可在主集群的 RegionServer 上部署采集代理,实时获取写入数据;对于异步复制,从复制队列(如 Kafka 等消息队列用于异步复制时)获取数据。
- 数据处理层:
- 采用分布式计算框架如 Spark 或 Flink。将采集到的数据进行清洗、聚合等操作,计算性能相关指标,如复制延迟、吞吐量等。
- 存储层:
- 利用 HBase 自身存储处理后的数据,便于历史数据查询和分析。同时可搭配 Redis 存储实时指标数据,提高查询效率。
- 预警层:
- 基于计算出的性能指标,与预设阈值比较,触发预警。通过消息队列(如 RabbitMQ)将预警信息发送给相关处理模块。
- 展示层:
- 使用可视化工具如 Grafana 展示性能指标和预警信息,方便运维人员查看。
关键组件
- 采集代理:部署在 RegionServer 上,负责实时采集 HBase 写入数据或从异步复制队列获取数据。
- Spark/Flink:用于数据处理和指标计算。
- HBase:存储历史性能数据。
- Redis:存储实时性能指标。
- RabbitMQ:传递预警信息。
- Grafana:可视化展示。
数据采集方式
- 同步复制数据采集:
- 在主集群 RegionServer 上部署采集代理,通过监听 HBase 的 Write-Ahead Log(WAL)或 RegionServer 的内部数据写入接口,实时获取写入数据,并将数据发送到数据处理层。
- 异步复制数据采集:
- 如果采用消息队列(如 Kafka)进行异步复制,采集代理从 Kafka 主题中消费数据,获取异步复制的数据,然后传递给数据处理层。
预警触发机制
- 指标计算:
- 在数据处理层计算性能指标,如同步复制延迟 = 当前时间 - 数据写入主集群时间;异步复制吞吐量 = 单位时间内从消息队列消费的消息数量。
- 阈值设定:
- 根据业务需求和系统经验,设定合理的阈值。例如,同步复制延迟阈值设为 50ms,异步复制吞吐量阈值设为 1000 条/秒。
- 预警触发:
- 当计算出的性能指标超过阈值时,预警层触发预警,将预警信息发送到消息队列,相关模块(如短信发送模块、邮件发送模块等)从消息队列获取预警信息并通知相关人员。