章节目录
1. 前言
之前的实现中,已经有了很多的微服务API,如:天气数据API微服务、天气预报API微服务等。每个微服务提供各自的API,其他第三方是通过微服务的名称进行调用,这样的管理是有一个问题-----API没有一个统一的管理。自己想要哪个微服务就调用哪个微服务,没有一个统一的入口。而API网关就是来做一个统一的入口。
2. API网关
2.1 意义
- 集合多个API
- 统一API入口
2.2 利与弊
2.2.1 利
- 避免将内部信息泄露给外部
- 为微服务添加额外的安全层
- 支持混合通信协议
- 降低构建微服务的复杂性
- 微服务的模拟与虚拟化
2.2.2 弊
- 在架构上面需要额外考虑更多编排与管理
- 路由逻辑配置要进行统一的管理
- 可能引发单点故障
2.3 常见的实现方式
常见的API网关的实现方式:
- NGINX
- Zuul
- Kong(API网关的管理平台)
3. 集成Zuul
3.1 简介
Zuul是Spring Cloud全家桶中的微服务API网关。
所有从设备或网站来的请求都会经过Zuul到达后端的Netflix应用程序。作为一个边界性质的应用程序,Zuul提供了动态路由、监控、弹性负载和安全功能。Zuul底层利用各种filter实现如下功能:
- 认证和安全:识别每个需要认证的资源,拒绝不符合要求的请求。
- 性能监测:在服务边界追踪并统计数据,提供精确的生产视图。
- 动态路由:根据需要将请求动态路由到后端集群。
- 压力测试:逐渐增加对集群的流量以了解其性能。
- 负载卸载:预先为每种类型的请求分配容量,当请求超过容量时自动丢弃。
- 静态资源处理:直接在边界返回某些响应。
- …
3.2 如何集成
这里将“weather-eureka-client”微服务集成Zuul
1)、导入依赖
<dependency>
<g