
1) 【一句话结论】在PB级日志存储中,通过冷热分离的分层存储架构(热数据用分布式文件系统,冷数据用云对象存储)、数据分片与压缩技术,结合动态扩容与智能迁移策略,实现了存储扩展性、性能与成本的平衡。
2) 【原理/概念讲解】老师口吻解释关键概念:
3) 【对比与适用场景】
| 方案 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 分布式文件系统(如HDFS) | 集群式文件系统,数据分块存储 | 高可靠性(副本),适合热数据,但成本高 | 日志热数据,需要高可用 | 扩展性有限,冷数据存储成本高 |
| 云对象存储(如S3) | 弹性对象存储,按需扩容 | 弹性,冷热数据支持,成本按量付费 | 冷数据归档,长期存储 | 读取延迟较高,不适合热数据高频访问 |
| 冷热分离架构 | 分层存储,热数据快存储,冷数据归档 | 动态迁移,性能与成本平衡 | PB级日志,混合访问模式 | 需要智能TTL策略,数据迁移成本 |
4) 【示例】(伪代码)
def write_log(log_data, access_freq):
if access_freq == "hot": # 热数据
hdfs_client.write(log_data, "hdfs://path/hot_logs")
hdfs_client.set_replication(3)
hdfs_client.compress("lzo")
else: # 冷数据
s3_client.put_object(log_data, "s3://bucket/cold_logs")
def migrate_cold_data():
# 7天后迁移冷数据
hdfs_client.list_files("hdfs://path/hot_logs").filter(lambda f: f.modified < 7_days_ago)
hdfs_client.move_to_s3(f, "s3://bucket/cold_logs")
5) 【面试口播版答案】(约90秒)
“在360的日志存储项目中,我们面对PB级数据,核心是通过冷热分离+分布式架构实现扩展性。具体来说,热数据(近7天)存储在HDFS(副本3,LZ4压缩),冷数据(7天后)迁移到S3归档。性能上,通过日志类型分片(如web日志、app日志)和Redis缓存热点数据提升读取速度。成本优化方面,冷数据按月付费,热数据按小时计费,整体成本降低40%。”
6) 【追问清单】
7) 【常见坑/雷区】