快速入口

开源仓库:https://github.com/rbetree/daydayweather

一句话介绍

DayDayWeather 是一个基于 Spring Boot / Spring Cloud 的天气预报微服务系统,用来练习“从单体到微服务”的拆分、服务治理与缓存加速的完整链路。

解决什么

当查询类业务从“能跑”走向“可扩展”时,单体应用往往会在部署、扩容与依赖治理上变得笨重。这个项目以“城市信息”和“天气展示/聚合”为边界拆分服务,引入注册发现与声明式调用,并用 Redis 承接热点数据,形成一套可复现实验环境,方便验证服务拆分后的协作方式与性能优化思路。

在实现上,citylist8820 提供城市列表等基础数据,showweather8810 作为展示/聚合服务对外提供页面,并通过 OpenFeign 调用城市服务;共享的模型与工具沉淀在 weather-common,避免服务间复制粘贴导致的耦合与维护成本上升。

pom.xml 锁定 Spring Boot 2.7.18、Spring Cloud 2021.0.9,并将 java.version 固定为 17,让依赖基线与运行环境更可复现,也更适合作为长期练习与对比的样例工程。

核心亮点

  • pom.xml 聚合多模块:eureka8888eureka9999citylist8820showweather8810weather-common
  • 双 Eureka 节点互注册,验证注册中心的基础高可用与故障切换
  • OpenFeign 将服务间 HTTP 调用收敛为接口声明,减少样板代码与错误分支
  • Redis 缓存城市列表与热点天气数据,降低下游接口压力并提升查询响应

我把它当作一套“可观察、可重复”的微服务练习台:可以在注册中心观察实例上下线,在 Redis 中验证缓存写入与过期策略的效果,并通过 Feign 调用链路理解服务间依赖关系。

快速开始

环境要求以仓库 pom.xml 为准:Java 17、Maven、Redis。启动顺序建议先注册中心(88889999),再启动业务服务(88208810);本地访问天气页面:http://localhost:8810

启动后可在 Eureka 控制台(http://localhost:8888 / http://localhost:9999)查看服务注册情况;showweather8810 通过注册发现与 Feign 调用获取城市基础数据,并将热点结果写入 Redis,形成“注册发现 → 服务调用 → 缓存命中”的最小闭环。