立项背景:为解决多平台公开数据(天气、汇率、热搜等)分散、获取效率低、缺乏可视化监控的问题,设计并实现了该数据聚合展示平台,将多源异构数据统一抓取、清洗并归档展示。
核心功能:包含四个数据源(天气、每日一句、汇率、百度热搜)的定时抓取,采用 Quartz 动态注册 4 个 Job 按 cron 调度。后端入库后,前端通过 ECharts 进行多维度可视化展示,包括温度趋势折线图、汇率柱状图、热搜标签饼图以及任务执行日志。
业务流程:定时任务触发抓取 -> 统一入库 -> 任务日志记录(耗时/成功失败) -> 前端仪表盘展示,形成完整的数据采集与监控闭环。
架构与设计:基于 Spring Boot 4 + MyBatis-Plus + MySQL,采用抓取器接口化设计(DataFetcher 统一接口),新增数据源只需实现接口+配置即可。通过 FetchOrchestrator 事务编排保证主表与明细表入库的一致性。
负责模块与结果:独立完成全部架构设计、数据库表设计(10张表)及前后端开发。实现了雪花 ID + Long 序列化为 String,避免前端 JS 精度丢失。页面统一标注数据来源,仅跳转原链接不抓取正文,具备良好的合规意识。
难点与解决方案:解决了多城市抓取瞬间并发导致被限流的问题(设置每城市间隔1秒);修正了汇率查询重复的逻辑(按 snapshot_id 查),并解决了百度热搜移动端链接的格式化问题。