
1) 【一句话结论】:设计360安全产品用户行为分析的数据仓库/数据湖架构,核心采用“数据湖+数据仓库”分层架构,通过ELT处理流程实现原始数据与结构化分析数据的分离,结合分布式计算(Spark批处理、Flink流处理)支撑实时与离线分析,并融入数据同步、质量保障、隐私脱敏及成本优化等关键要素,确保满足360安全产品对实时恶意行为检测与用户行为分析的需求。
2) 【原理/概念讲解】:数据仓库与数据湖是数据存储的核心组件。数据湖(如MinIO对象存储)存储原始、非结构化/半结构化数据(如用户日志、API请求),类似“水库”,汇集所有原始数据源;数据仓库(如Hive,基于云存储)存储经过清洗、转换、主题化后的结构化数据(如用户行为分析表),类似“自来水厂”,为分析提供加工后的数据。架构分层为:①数据采集层:通过ELT(Extract-Load-Transform)从日志、API等源采集数据;②存储层:数据湖存储原始日志,数据仓库存储分析表;③计算层:Spark(批处理,如用户行为统计)与Flink(流处理,如实时异常检测);④服务层:BI工具(如Tableau)提供分析报表。需考虑数据治理(元数据管理、数据质量检查)、安全(传输加密、存储脱敏)、隐私(用户敏感信息脱敏、访问控制)。
3) 【对比与适用场景】:
| 对比项 | 数据仓库(DW) | 数据湖(DL) |
|---|---|---|
| 定义 | 面向主题、集成、时变、非易失的、多粒度数据集合 | 存储原始、非结构化/半结构化数据(如日志、图片) |
| 特性 | 预定义模式(星型/雪花模型)、结构化、面向分析 | 按需模式、原始数据、支持多种格式(JSON、CSV、日志) |
| 使用场景 | 成熟业务(如用户行为分析、安全事件分析,需结构化、实时查询) | 新业务探索(如用户画像、异常行为检测,需灵活处理非结构化数据) |
| 注意点 | 需预定义模式,开发成本高,扩展性有限 | 存储成本高,需处理数据质量,需结合计算引擎 |
4) 【示例】:以360安全产品“恶意登录检测”为例。
from pyflink import StreamExecutionEnvironment
from pyflink.table import StreamTable, StreamTableResult
env = StreamExecutionEnvironment.get_execution_environment()
env.set_parallelism(4)
# 读取Kafka日志
table = env.from_table_source(
"Kafka",
topic="user_login",
properties={"bootstrap.servers": "kafka:9092", "group.id": "login_analyzer"},
value_format="json"
)
# 解析并计算异常
result = table.select(
"user_id, login_time, ip, device",
"count(login_time) as fail_count",
"row_number() over (partition by user_id order by login_time desc) as rn"
).where("fail_count > 2 and rn <= 1")
result.insert_into("Hive", "warehouse/user_login_realtime")
env.execute("Login Anomaly Detection")
5) 【面试口播版答案】:
“设计360安全产品用户行为分析的数据仓库/数据湖架构,核心采用‘数据湖+数据仓库’分层架构。首先,数据采集层通过ELT从日志、API等源采集原始数据;存储层分为数据湖(如MinIO)存储原始日志,数据仓库(如Hive)存储结构化分析表;计算层用Spark批处理和Flink流处理,支撑实时与离线分析;服务层通过BI工具提供报表。数据湖中原始日志的解析错误通过规则检查,不符合的记录并告警。数据湖与仓库用时间戳增量同步,冲突处理仓库优先。用户IP等敏感信息脱敏为城市代码,历史数据(超过30天)归档至低成本存储(如S3 Glacier),计算层用Flink优化状态管理(减少检查点开销),确保登录异常检测延迟小于200ms,满足360安全产品的实时性要求。”(约90秒)
6) 【追问清单】:
7) 【常见坑/雷区】: