Spring Cloud 一
SpringCloud是目前比较火的微服务架构,他是将原来一整个耦合在一起的服务按照某种方式进行拆分,之所以说是按照某种方式进行拆分的意思是可能会按照业务模块进行,也可能会按照其他的依据比如业务流程拆分,总而言之就是将一个的项目拆分成不同的应用单独进行部署,这样每个单独的应用就只关注自身所负责的那部分业务从而达到变更时改动小,维护简单,业务清晰等的目的。今天我们就来看下SpringCloud中的Zuul SpringCloud的路由网管。
一、是什么?能干嘛?
SpringCloud中的Zuul路由网管包含了对请求的路由和过滤两个功能。
1、路由就是将外部的请求转发到具体的微服务上是外部访问的统一的入口。
2、请求过滤就是对外部的请求进行干预,对请求进行过滤和服务聚合的基础。
Zuul会将自己注册进Eureka最为一个单独的应用,然后从Eureka中获取注册的微服务列表进行请求的转发,也即是请求是通过zuul转发才能进行微服务的访问。
二、如何开始?
1、配置相关的POM
<!-- zuul路由网关 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
2、修改Yml配置文件
server:
port: 9527 #端口信息
spring:
application:
name: microservicecloud-zuul-gateway #应用在Eureka注册的饮用名
eureka:
client:
service-url: #Eureka集群
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
instance:
instance-id: gateway-9527.com #访问域名
prefer-ip-address: true #显示Ip
zuul:
#ignored-services: microservicecloud-dept
prefix: /atguigu #访问域名前缀
ignored-services: "*" #忽略的访问域名
routes:
mydept.serviceId: microservicecloud-dept #路由的应用
mydept.path: /mydept/** #路由的地址
info: #介绍信息
app.name: atguigu-microcloud
company.name: www.atguigu.com
build.artifactId: $project.artifactId$
build.version: $project.version$
3、添加主启动类的注解
@SpringBootApplication
@EnableZuulProxy
public class Zuul_9527_StartSpringCloudApp
{
public static void main(String[] args)
{
SpringApplication.run(Zuul_9527_StartSpringCloudApp.class, args);
}
}
4、启动测试
1、首先启动Eureka
2、启动provider
3、启动Zuul
我们可以看到Eureka上已经注册了微服务和我们的Zuul了:
image.png
然后我们通过直接访问provider的方式看看效果:
image.png
然后通过采用网管Zuu l的方式进行访问看看效果:
image.png
注意Zuul的访问规则,首先是我们的域名,加上在Eurake上注册的微服务名,在加上路径就可以访问到了。
接下来我们看看Zuul的其他功能,既然可以最为网关那么就可以尽心路由设置。
5、Zuul的路由访问的映射规则设置:
1、可以设置代理域名:
修改配置:
zuul:
routes:
mydept.serviceId: microservicecloud-dept #路由的应用
mydept.path: /mydept/** #代理域名
那么我们就可以使用代理域名访问了,我们看下效果
image.png
2、忽略原路径,采用代理路径
修改配置:
zuul:
ignored-services: microservicecloud-dept
routes:
mydept.serviceId: microservicecloud-dept #路由的应用
mydept.path: /mydept/** #代理域名
我们看下效果:
image.png
我们可以看到带来路径是可以访问的,我们在看看原路径的访问:
image.png
我们的原路径已经不能访问了。
3、屏蔽多个路径呢,其实我们采用 "*" 就可以了。
zuul:
ignored-services: "*" #忽略的访问域名
routes:
mydept.serviceId: microservicecloud-dept #路由的应用
mydept.path: /mydept/** #代理域名
我们可以看下访问结果,原路径:
image.png
代理路径:
image.png
我们看到都是能访问了。
6、添加统一前缀,方便管理。
修改配置
zuul:
# ignored-services: microservicecloud-dept
prefix: /lly #访问域名前缀
ignored-services: "*" #忽略的访问域名
routes:
mydept.serviceId: microservicecloud-dept #路由的应用
mydept.path: /mydept/** #代理域名
我们访问下看下效果:
这样我们就达到了采用统一的域名前缀访问微服务的目的了。
上面就是使用Spring Cloud的Zuul网关的6种用法,至于具体的实现还是要跟着源码去看看是啥原理。
大家不要纠结上面中文乱码的问题就是在建立链接的时候缺少配置:
?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
加上上面的那句就可以了。