Zuul很简单,大致是这么玩的:
Zuul它本身也是一个注册在Eureka的微服务 它为其他的微服务提供一个统一的对外的窗口 这样便隐藏了服务的地址,同时也可以隐藏服务名,并且限定如何访问服务
依赖
<!--实体类 + web--> <dependencies> <dependency> <groupId>org.example</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.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <version>2.3.2.RELEASE</version> </dependency> <!--ribbon--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> <version>1.4.7.RELEASE</version> </dependency> <!-- eureka --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> <version>1.4.7.RELEASE</version> </dependency> <!--Hystrix--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> <version>1.4.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId> <version>1.4.7.RELEASE</version> </dependency> <!--actuator完善监控信息--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--zuul--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> <version>1.4.7.RELEASE</version> </dependency> </dependencies>
配置
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: true info: app.name: gfpz-springcloud company.name: blog.possible2dream.cn zuul: routes: mydept.serviceId: springcloud-provider-dept mydept.path: /mydept/** ignored-services: "*" #不能再使用这个路径访问了 *隐藏全部的微服务 prefix: /knight #设置公共的前缀
开启注解
@SpringBootApplication @EnableZuulProxy public class ZuulApplication_9527 { public static void main(String[] args) { SpringApplication.run(ZuulApplication_9527.class, args); } }
host配置
127.0.0.1 www.possible2dream.cn
注册中心可以看到Zuul已经注册
http://eureka7001.com:7001/
通过Zuul所在的主机对服务进行调用(加了前缀,隐藏了服务名,隐藏了服务的IP,并且不允许带服务名访问(过滤))
http://www.possible2dream.cn:9527/knight/mydept/dept/get/2
(mydept实际等于标识了要访问的哪个服务,起到了路由的作用)
总结
Zuul包含了对请求的路由和过滤两个主要功能丶
至此,Springcloud Netflix五大神兽就已经完结:Ribbon,Eureka,Feign,Hystrix,Zuul丶
https://github.com/ChenCurry/springcloud.git