现有天气预报系统的弊端
- 大而全
- 混杂了太多的功能
- 难以理解
- 难以维护
- 难以扩展
改造需求
- 微服务的拆分应该足够的小,每个微服务的业务是非常单一的
- 微服务应能支持水平扩展
- 如果有需要,应能够实现微服务间的相互调用
天气预报系统的微服务拆分
微服务代码的拆分
-
msa-weather-collection-server:天气数据采集微服务 -
msa-weather-data-server:天气数据API微服务 -
msa-weather-city-server:城市数据API微服务 -
msa-weather-report-server:天气预报微服务
系统的数据流向
系统的通信设计
- 第三方天气接口
- 调用方式:
GET
http://wthrcdn.etouch.cn/weather_mini?citykey={cityId} - 参数:
cityId为城市ID
- 调用方式:
- 天气数据接口
- 调用方式:
GET/weather/cityId/{cityId} - 参数:
cityId为城市ID - 调用方式:
GET/weather/cityName/{cityName} - 参数:
cityName为城市名称
- 调用方式:
- 天气预报接口
- 调用方式:
GET/report/cityId/{cityId} - 参数:
cityId为城市ID
- 调用方式:
- 城市数据接口
- 调用方式:
GET/cities - 参数:无
- 调用方式:
系统的存储设计
NoSQL