4.天气预报系统的微服务架构设计

1.微服务划分

  1. 天气数据采集界限(数据采集,数据存储),天气预报(数据展示),天气数据API(数据查询),城市数据API(数据查询)
  2. 现有的弊端:大而全而难
  3. micro-weather-report拆分:
    msa-weather-collection-server、
    msa-weather-data-server、
    msa-weather-city-server、
    msa-weather-report-server
    • 系统的数据流向:第三方==(天气数据采集微服务A)》数据存储,天气数据采集微服务A又从城市数据API获取城市列表,采集相应城市
    • 系统的通信设计:
  4. 第三方,GET:http://wthrcdn.etouch.cn/weather_mini?citykey=101280601
  5. 天气数据接口:GET /weather/cityId/{cityId}
  6. 城市数据接口: GET /cites
    • 系统的存储设计
  7. NoSql:Redis
  8. XML,比数据库简单,城市列表不会变的静态数据,根据场景选择的,只有合适否

2.天气数据采集微服务实现

  1. 配置:JDK 8+,Redis 3.2.100,Apache HttpClient 4.5.3,Spring Boot Web Start,Spring Boot Redis Start,Spring Boot Quartz Start,Quartz Schedule
  2. copy生成msa-weather-collection-server,查看pom引用
  3. 修改了,WeatherDataCollectionService
  4. 数据先写死了,todo 改为由城市数据api,来提供数据,先写死
  5. 删除城市数据Service和包
  6. city这个Bean需要,但是不需要解析了,删除工具类XmlBuiler
  7. 最后,整个代码量减少
//todo 改为由城市数据api,来提供数据,先写死
cityList = new ArrayList<>();
City city = new City();
city.setCityId("101280601");
cityList.add(city);

4. 天气数据api微服务的实现

5.天气预报微服务的实现

  1. 天气数据不是从WeatherDataService获取了
//todo该 改为由天气数据API微服务来提供
Weather data = new Weather();
data.setAqi("81");
data.setCity("深圳");未来5
  1. 访问:http://localhost:8080/report/cityId/101280601

6.城市api微服务的实现

  1. msa-weather-city-server
  2. 访问:http://localhost:8080/cities
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭