SpringCloud搭建一个简单的天气预报系统(一)----服务拆分

本文介绍了如何使用SpringCloud将原有的单体架构天气预报系统拆分为微服务,包括天气数据采集、天气数据API、天气预报和城市数据API四个微服务,详细阐述了架构设计、数据流向、通信设计以及手动编码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 前言

将之前的单体架构系统进化为微服务架构系统,把springcloud融入实战中,有助于对它的理解,也可以达到活学活用的目的。

源码下载地址

2. 天气预报系统的架构设计

2.1 现有天气预报系统的弊端

要想将现有的系统进行改造,就必须知道此系统的一些弊端(针对性改造)。
有以下弊端:

  • 大而全
  • 混杂了太多的功能(职责不单一)
  • 难以维护、扩展

2.2 改造需求

知道了此系统的弊端,就知道了如何进行改造。

  • 微服务拆分应该足够小(业务单一)
  • 微服务能支持水平扩展
  • 能实现微服务间的相互调用

2.3 微服务拆分

在这里插入图片描述

2.4 代码拆分

在这里插入图片描述

2.5 系统的数据流向

在这里插入图片描述

2.6 系统的通信设计

2.6.1 第三方天气接口

  • 调用方式: GET
    http://wthrcdn.etouch.cn/weather_mini?citykey={cityId}
  • 参数:cityId为城市ID

2.6.2 天气数据接口

  • 调用方式: GET
    /weather/cityId/{cityId}
  • 参数:cityId为城市ID
  • 调用方式:GET
    /weather/cityName/{cityName}
  • 参数:cityName为城市名称

2.6.3 天气预报接口

  • 调用方式: GET
    /report/cityId/{cityId}
  • 参数:cityId为城市ID

2.6.4 城市数据接口

  • 调用方式: GET
    /cities
  • 参数:无

2.7 系统的存储设计

  • XML(城市列表)
  • Redis

3. 项目结构

在这里插入图片描述
创建springcloud项目(一个父工程下有多个子模块)。不会的可以参考 使用IDEA创建maven+springCloud项目

4. 手动编码

主要对之前的单体项目进行拆分,需要修改的代码进行贴出,没贴出的表示不需要修改。

4.1 天气数据采集微服务的实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值