# 天气预报系统 **Repository Path**: systemt1st/weather ## Basic Information - **Project Name**: 天气预报系统 - **Description**: 天气服务API - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-17 - **Last Updated**: 2025-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 天气预报系统 #### 介绍 本项目是一个基于Spring Cloud微服务架构的天气预报系统,用于查询和展示全国各城市的天气信息。系统通过调用第三方天气API获取实时天气数据,并提供缓存机制以提高查询效率和减轻外部API的访问压力。项目主要展示了如何使用Spring Cloud构建微服务应用,包括服务注册与发现、服务间通信等核心功能。 #### 软件架构 软件采用微服务架构,主要包含以下模块: 1. **服务注册与发现** - `eureka-server-8100`:Eureka服务注册中心,端口8100 - `eureka-server-8200`:Eureka服务注册中心(高可用备份),端口8200 2. **业务服务模块** - `weather-api`:天气API服务,对外提供天气查询接口 - `weather-cache`:天气缓存服务,负责缓存天气数据,减少外部API调用,使用Redis实现高效缓存 - `weather-view`:前端视图服务,提供用户界面 - `city-client`:城市客户端服务,获取城市列表和城市相关信息 3. **公共模块** - `common`:包含共享的数据模型、DTO和工具类 4. **技术栈** - Spring Boot 2.7.5 - Spring Cloud 2021.0.3 - Java 17 - Maven 构建系统 - Feign 用于服务间通信 - Eureka 用于服务注册与发现 - Redis 用于数据缓存 #### 安装教程 1. 克隆项目到本地 ```bash git clone https://gitee.com/你的用户名/天气预报系统.git cd 天气预报系统 ``` 2. 安装Redis(缓存服务依赖) - Windows: 下载并安装Redis for Windows - Linux: `sudo apt-get install redis-server` - MacOS: `brew install redis` 3. 编译项目 ```bash mvn clean package -DskipTests ``` 4. 启动服务(按照以下顺序) ```bash # 0. 确保Redis服务已启动 # Windows: redis-server.exe # Linux/MacOS: redis-server # 1. 启动Eureka服务器 java -jar eureka-server-8100/target/eureka-server-8100-0.0.1-SNAPSHOT.jar java -jar eureka-server-8200/target/eureka-server-8200-0.0.1-SNAPSHOT.jar # 2. 启动缓存服务 java -jar weather-cache/target/weather-cache-0.0.1-SNAPSHOT.jar # 3. 启动城市客户端服务 java -jar city-client/target/city-client-0.0.1-SNAPSHOT.jar # 4. 启动天气API服务 java -jar weather-api/target/weather-api-0.0.1-SNAPSHOT.jar # 5. 启动前端视图服务 java -jar weather-view/target/weather-view-0.0.1-SNAPSHOT.jar ``` #### 使用说明 1. 访问Eureka控制台查看服务注册情况 - http://localhost:8100/ 或 http://localhost:8200/ ![输入图片说明](1.png)![输入图片说明](2.png) 2. 访问前端页面查询天气 - http://localhost:8080/(具体端口以weather-view模块配置为准) ![输入图片说明](4.png) 3. 直接调用API查询天气 ``` GET http://localhost:8080/api/weather/search?cityid=城市ID ``` 4. 关于城市ID - 城市ID可通过城市客户端服务获取 - 例如:北京(101010100),上海(101020100),广州(101280101)等 5. Redis缓存配置 - 默认配置连接本地Redis服务(localhost:6379) - 可在`weather-cache`模块的配置文件中修改Redis连接信息 - 天气数据默认缓存时间为1小时,可根据需要在配置文件中调整 #### 参与贡献 1. 本项目使用第三方天气API:[天行数据-全国天气预报API](https://www.tianapi.com/apiview/72-1) - 使用前请先在天行数据平台注册并获取API密钥 - 在项目配置中设置你的API密钥 2. Fork 本仓库 3. 新建 feature_xxx 分支 4. 提交代码 5. 新建 Pull Request #### 开发者须知 1. 在使用前,请修改配置文件中的API密钥 2. 本项目默认使用的是免费版API,有调用次数限制 3. 生产环境部署时,建议增加更多的错误处理和限流措施 4. Redis缓存建议在生产环境中配置密码和持久化