一、什么是Zuul
zuul包含了对请求的路由和过滤两个最主要的功能:
其中路由功能负责将外部请求转发到剧透的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础,Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul转发后获得。
提供代理+路由+过滤的功能
1.新建模块microservicecloud-zuul-gateway-9527,并修改pom
org.springframeword.cloud
spring-cloud-starter-eureka
org.springframeword.cloud
spring-cloud-starter-zuul
2.修改yml
server:
port:9527
spring:
application:
name:microservicecloud-zuul-gateway
eureka:
client:
service-url:
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
info:
app.name:atguigu-microcloud
company.name:www.atguigu.com
build.artifactId:$project.artifactId$
build.version:$project.version$
3.修改host
127.0.0.1 myzuul.com
4.修改主启动类
@SpringBootApplication
@EnableZuulProxy
public class Zuul_9527_StartSpringCloudApp{
public static void main(String[] args){
SpringApplication.run(Zuul_9527_StartSpringCloudApp.class,args);
}
}
5.启动服务,访问http://myzuul.com:9527/microservicecloud-dept/dept/get/2
二、zuul路由访问映射规则
1.修改yml
zuul:
routes:
mydept.serviceId:microservicecloud-dept
mydept.path:/mydept/**
访问http://myzuul.com:9527/mydept/dept/get/2
此时原路径也可以访问新路径也可以访问
2.原真实服务名忽略,修改yml文件
zuul:
ignored-services:microservicecloud-dept
routes:
mydept.serviceId:microservicecloud-dept
mydept.path:/mydept/**
使用ignored-services:"*"可以禁用所有的原服务名
三、SpringCloudConfig分布式配置中心
微服务意味着将单个应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所有一套集中式的、动态的配置管理设施必不可少。SpringCloud提供了ConfigServer来解决这个问题,我们每一个微服务自己带着一个application.yml,上百配置文件管理极其不便。
SpringCloudConfig为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。
SpringCloudConfig分为服务端和客户端两部分。
服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密/解密信息等访问接口
客户端则是通过制定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息配置服务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过git客户端工具来方法的管理和访问配置内容
1.先用自己的Github账号在上面新建一个名为microservicecloud-config的新Repository
2.由上一部获取SHH协议的git地址
3.本地硬盘目录上新建git仓库并clone
4.直接在clone下来的目录里新建一个yml文件(必须使用utf-8格式保存)
spring:
profiles:
active:
-dev
---
spring:
profiles:dev #开发环境
application:
name:microservicecloud-config-atguigu-dev
--
spring:
profiles:test #测试环境
application:
name:microservicevloud-config-atguigu-test
5.将yml推送上github
6.新建模块microservicecloud-config-3344,修改pom
org.springframework.cloud
spring-cloud-config-server
7.修改yml
server:
port:3344
spring:
application:
name:microservicecloud-config
cloud:
config:
server:
git:
url:[email protected]:xxxx/microservicecloud-config.git #GitHub上面的git仓库名字
8.修改主启动类
@SpringBootApplication
@EnableConfigServer
public class config_3344_StartSpringCloudApp{
public static void main(String[] args){
SpringApplication.run(Config_3344_StartSpringCloudApp.class,args);
}
}
9.修改host
127.0.0.1 config-3344.com
10.启动config微服务
访问http://config-3344.com:3344/application-dev.yml
访问http://config-3344.com:3344/application-test.yml
访问http://config-3344.com:3344/application-qas.yml(不存在的配置)
四、SpringCloudConfig配置读取规则
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
五、SpringCloudConfig与客户端连接
1.新建microservicecloud-config-client.yml文件(utf-8格式!!!)
spring:
profiles:
active:
-dev
---
server:
port:8201
spring:
profiles:dev
application:
name:microserviceCloud-config-client
eureka:
client:
service-url:
defaultZone:http://eureka-dev.com:7001/eureka/
---
server:
port:8202
spring:
profiles:test
application:
name:microservicecloud-confing-client
eureka:
client:
service-url:
defaultZone:http://eureka-test.com:7001/eureka/
2.文件提交github
3.新建模块microservicecloud-config-3355,修改pom
org.springframework.cloud
spring-cloud-starter-config
4.新建bootstrap.yml
application.yml是用户级的资源配置项
bootstrap.yml是系统级的,优先级更高
SpringCloud会创建一个“BootstrapContext”,作为Spring应用的“ApplicationContext”的父上下文。初始化的时候,“BootStrapContext”负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的“Environment”。
“Bootstrap”属性有高优先级,默认情况下,它们不会被本地配置覆盖。“BootStrapContext”和“ApplicationContext”有着不同的约定,所以新增一个“bootstrap.yml”文件,保证“BootstrapContext”和“ApplicationContext”配置的分离
spring:
cloud:
name:microservicecloud-config-client #需要从github上读取的资源文件名,注意没有yml后缀
profile:dev #本次访问的配置项
label:master
url:http://config-3344.com:3344 #本微服务启动后先去找3344号访服务,通过SpringCloudConfig获取github上的服务地址
5.新建application.yml
spring:
application:
name:microservicecloud-config-client
6.修改host
127.0.0.1 client-config.com
7.新建类
@RestController
public class ConfigClientRest{
@Value("${spring.application.name}")
private String applicationName;
@Value("${eureka.client.service-url.defaultZone}")
private String eurekaServce;
@Value("${server.port}")
private String port;
@RequestMapping("/config")
public String getConfig(){
String str = "applicationName:"+applicationName+"\t eurekaServers:"+eurekaServers+"\t port:"+port;
System.out.println(str);
return str;
}
}
8.启动3344,3355服务,访问3355的/config方法