背景
前面我们实现了SpringCloud的Dashboard流监控
,本文将继续介绍Zuul
路由网关。
什么是Zuul?
Zuul
是SpringCloud
中的微服务网关。网关: 是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由,定位到具体的服务节点上。
Zuul
是一个微服务网关,首先是一个微服务。也是会在Eureka
注册中心中进行服务的注册和发现。也是一个网关,请求应该通过Zuul
来进行路由。
Zuul
网关不是必要的。是推荐使用的。
使用Zuul
,一般在微服务数量较多(多于10个)的时候推荐使用,对服务的管理有严格要求的时候推荐使用,当微服务权限要求严格的时候推荐使用。
网关有以下几个作用:
- 统一入口:未全部为服务提供一个唯一的入口,网关起到外部和内部隔离的作用,保障了后台服务的安全性。
- 鉴权校验:识别每个请求的权限,拒绝不符合要求的请求。
- 动态路由:动态的将请求路由到不同的后端集群中。
- 减少客户端与服务端的耦合:服务可以独立发展,通过网关层来做映射。
实现
springcloud-zuul-9527
创建模块
编辑pom.xml
<dependencies>
<!-- Zuul依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<!-- Hystrix依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>com.langjialing</groupId>
<artifactId>springcloud-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<dependency>
<groupId>com.netflix.ribbon</groupId>
<artifactId>ribbon-loadbalancer</artifactId>
<version>2.2.5</version>
</dependency>
</dependencies>
编辑application.yaml
server:
port: 9527
spring:
application:
name: springcloud-zuul
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
instance-id: zuul9527.com
prefer-ip-address: false # 隐藏实际IP
info:
app.name: langjialing
url.name: 潇雅.com
修改本地hosts文件
具体操作请参考此处。
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com
127.0.0.1 eureka7003.com
127.0.0.1 www.langjialing.com
创建启动类
package com.langjialing.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
@EnableZuulProxy
@EnableEurekaClient
@SpringBootApplication
public class ZuulApplication_9527 {
public static void main(String[] args){
SpringApplication.run(ZuulApplication_9527.class);
}
}
功能测试
启动模块。
这里本应该是通过
Zuul
实现路由功能的。但博主这里无法正常路由,这里作为存疑之处,后续有时间再看。
总结
本文介绍了Zuul
实现路由网关。至此我们已基本将SpringCloud
的组件介绍完了。
另外还有一块内容是SpringCloud Config 的分布式配置中心
。
由于微服务架构中服务模块比较多,每个应用的配置信息都配置在各自的application.yaml
中,这会导致系统的维护会特别繁琐。
SpringCloud Config 的分布式配置中心
可以实现集中配置管理,可以很好地解决服务模块的配置文件问题。
目前由于博主前面介绍的一些模块出现了比较多的存疑之处无法解决,而且博主目前处于一个换工作的阶段,没有太多时间来完善。因此SpringCloud
的系列文章暂时到此为止,后续博主会继续完善SpringCloud
的内容。