创建网关服务项目
引入zuulMaven地址
<!--网关-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<!--actuator监测中心-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--eureka客户端--->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId> spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--springcloudconfig客户端配置服务中心-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
配置服务调用规则
application.wml
spring:
application:
name: zuul
eureka:
client:
#registerWithEureka: false #false:不作为一个客户端注册到注册中心
#fetchRegistry: false
#serviceUrl:
#defaultZone: http://localhost:8761/eureka/
server:
port: 80
# 这一段zuul配置也可以用一个单独的配置服务项目进行实时更新
#服务一member
#只要请求包含logins的都将拦截走nember服务
#服务二pay
*****************************start*********************************
zuul:
routes:
users:
path: /login/**
serviceId: member
pay:
path: /pay/**
serviceId: pay
#如果模块服务有做集群的,zuul网关会默认做轮询机制
#配置zuul路由时用将此属性设置为false//转发调用服务出错,修改为true
ribbon:
ReadTimeout: 60000
ConnectTimeout: 60000
MaxAutoRetries: 0
MaxAutoRetriesNextServer: 1
eureka:
enabled: true
*******************************end*****************************************
#开启所有端口的监控
management:
endpoints:
web:
exposure:
include: "*"
启动器:
加入这几个注解OK
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableZuulProxy
@EnableEurekaClient
public static void main(String[] args) {
SpringApplication.run(ZuulServer.class,args);
}
//配置时施更新
@RefreshScope
@ConfigurationProperties("zuul")
public ZuulProperties zuulProperties(){
return new ZuulProperties();
}
网关过滤器使用:
@Component
public class ZuulFilters extends com.netflix.zuul.ZuulFilter {
//filterType代表过滤类型
@Override
public String filterType() {
return null;
}
//filterOrder代表过滤器顺序
@Override
public int filterOrder() {
return 0;
}
//shouldFilter代表这个过滤器是否生效 设置为true生效
@Override
public boolean shouldFilter() {
return true;
}
//处理逻辑的地方,做权限控制、日志等都是在这里
@Override
public Object run() throws ZuulException {
return null;
}
}
分布式配置服务中心
maven地址:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
配置:application.yml
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: #git远程配置文件地址
search-paths:
- gkconfig
native:
search-locations: #本地地址
label: master #分支
server:
port: 8888
启动器
@EnableConfigServer
@EnableDiscoveryClient
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class ConfigServer {
public static void main(String[] args) {
SpringApplication.run(ConfigServer.class,args);
}
}