8.API网关的意义

1.API网关

  1. 避免将背部信息泄露给外部
  2. 为微服务添加额外的安全层
    • 意义
  3. 集合多个API
  4. 统一API入口(天气预报只要依赖网关就好了,不需要关心什么城市数据API和天气数据API):Pc就请求Web应用API(数据量大),移动就请求移动API

2.使用api网关的利与弊

  1. 好处:降低构建微服务的复杂性;微服务模拟与虚拟化
  2. 弊端:在架构上需要额外考虑更多编排与管理;路由逻辑配置要进行统一的管理

3.常见api网关的实现方式

  1. Nginx作为API网关
  2. Zuul,也是netflix公司开发的,SpringCloud封装好了,认证、鉴权、负载均衡、弹性路由等
  3. Kong

4.集成Zuul

  1. mico-weather-eureka-client-zuul新建copy,导入spring-cloud-starter-netflix-zuul
  2. 修改application添加@EnableZuulProxy
  3. 修改properties
  4. 访问:http://localhost:8080/hi/hello,这个就是代理过的

5.API网关设计与实现

  1. 集成zuul:天气采集,数据,城市,天气预报;只修改msa-weather-report-eureka-feign-gateway
  2. 本来天气预报依赖数据与城市,现在只要依赖zuul会好了,进行如下配置
spring.application.name=msa-weather-eureka-client-zuul
#启动后就会找这个服务器,并把自己注册进去
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

zuul.routes.city.path=/city/**
zuul.routes.hi.serviceId=msa-weather-city-eureka

zuul.routes.data.path=/data/**
zuul.routes.data.serviceId=msa-weather-data-eureka
  1. msa-weather-eureka-client-zuul

6.天气预报微服务重构,改为依赖网关

  1. 修改DataClient

8.运行测试重构后的系统

  1. 运行eureka-server8761等
  2. 访问:http://localhost:8087/report/cityId/101282002
  3. 期间网关的一个问题导致city客户端访问不到:properties中zuul.routes.city.serviceId=,city写成了hi
阅读更多
想对作者说点什么? 我来说一句

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

关闭
关闭
关闭