1.API网关
- 避免将背部信息泄露给外部
- 为微服务添加额外的安全层
- 集合多个API
- 统一API入口(天气预报只要依赖网关就好了,不需要关心什么城市数据API和天气数据API):Pc就请求Web应用API(数据量大),移动就请求移动API
2.使用api网关的利与弊
- 好处:降低构建微服务的复杂性;微服务模拟与虚拟化
- 弊端:在架构上需要额外考虑更多编排与管理;路由逻辑配置要进行统一的管理
3.常见api网关的实现方式
- Nginx作为API网关
- Zuul,也是netflix公司开发的,SpringCloud封装好了,认证、鉴权、负载均衡、弹性路由等
- Kong
4.集成Zuul
- mico-weather-eureka-client-zuul新建copy,导入spring-cloud-starter-netflix-zuul
- 修改application添加@EnableZuulProxy
- 修改properties
- 访问:http://localhost:8080/hi/hello,这个就是代理过的
5.API网关设计与实现
- 集成zuul:天气采集,数据,城市,天气预报;只修改msa-weather-report-eureka-feign-gateway
- 本来天气预报依赖数据与城市,现在只要依赖zuul会好了,进行如下配置
spring.application.name=msa-weather-eureka-client-zuul
#启动后就会找这个服务器,并把自己注册进去
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
zuul.routes.city.path=/city
- msa-weather-eureka-client-zuul
6.天气预报微服务重构,改为依赖网关
- 修改DataClient
8.运行测试重构后的系统
- 运行eureka-server8761等
- 访问:http://localhost:8087/report/cityId/101282002
- 期间网关的一个问题导致city客户端访问不到:properties中zuul.routes.city.serviceId=,city写成了hi