
1) 【一句话结论】
采用分布式流式计算架构,以Flink为核心处理引擎,通过数据采集标准化、流处理并行与容错优化、存储分层设计及动态告警机制,实现每秒数百万条网络流量日志的实时恶意IP识别与低延迟告警。
2) 【原理/概念讲解】
老师口吻解释各模块核心逻辑:
{"timestamp":"2023-10-27T10:15:30Z","src_ip":"192.168.1.100","dst_ip":"8.8.8.8","proto":"TCP","bytes":1024,"label":"normal"}),再写入Kafka,保证高吞吐与容错。3) 【对比与适用场景】
| 框架 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| Flink | 分布式流处理引擎,支持事件时间、状态计算、精确一次处理 | 低延迟(亚秒级)、高吞吐、容错强(Checkpoint) | 实时威胁检测、金融风控 | 需配置事件时间,复杂度较高 |
| Spark Streaming | Spark的流处理组件,基于微批处理 | 延迟较高(毫秒级)、易用性高 | 日志聚合、数据清洗 | 适合非实时告警,延迟不满足实时要求 |
4) 【示例】
伪代码展示流处理逻辑(含数据采集标准化、并行与Checkpoint、异常检测):
// 数据采集:Kafka读取标准化日志
DataStream<NetworkLog> logs = env.socketTextStream("kafka-broker", 9092);
// 数据处理:解析并提取特征
logs.map(log -> {
JSONObject json = new JSONObject(log);
return new IPFeature(
json.getString("src_ip"),
json.getLong("bytes"),
json.getInt("connections"),
json.getString("proto")
);
});
// 特征聚合:10秒窗口,按IP哈希分区
logs
.keyBy(IPFeature::getIp, (env) -> new KeyedProcessFunction() {
@Override
public void open(Configuration config) {
env.getExecutionConfig().setParallelism(n); // 并行度n
}
})
.process(new WindowedProcessFunction<IPFeature, IPStat>() {
@Override
public void processElement(IPFeature value, Context ctx, Collector<IPStat> out) throws Exception {
long windowEnd = ctx.timerService().currentProcessingTime();
long windowStart = windowEnd - 10000; // 10秒窗口
out.collect(new IPStat(
value.getIp(),
value.getConnections(),
value.getBytes(),
windowEnd
));
}
});
// 异常检测:动态阈值(基于历史基线)
IPStat stats = ...; // 聚合结果
stats
.filter(stat -> {
double avgConn = getBaselineConn(stat.getIp());
double avgBytes = getBaselineBytes(stat.getIp());
return stat.getConnections() > avgConn * 1.5 || stat.getBytes() > avgBytes * 1.5;
})
.map(stat -> new Alert(stat.getIp(), "恶意攻击模式"))
.addSink(new KafkaSink("alert-topic", "alert-broker", 9092));
5) 【面试口播版答案】
(约90秒)
“面试官您好,我设计的360安全威胁实时检测系统采用分布式流式架构,核心是Flink处理海量日志。首先,数据采集层通过日志解析器将Snort、NetFlow等不同代理的日志统一为JSON格式,写入Kafka保证高吞吐。流处理层用Flink按IP哈希分区,设置1秒Checkpoint,计算10秒窗口内IP的连接数和流量,结合历史基线动态判断异常。存储层短期特征存Elasticsearch(按时间分片),长期数据存HDFS,时序指标用InfluxDB。告警模块结合规则引擎和机器学习模型,当检测到连接数超阈值或流量异常时,通过RabbitMQ发送邮件/短信告警。整个系统能实时处理百万级日志,低延迟识别恶意IP并告警。”
6) 【追问清单】
7) 【常见坑/雷区】