spring cloud学习--Zuul

  Zuul包含了对请求的路由和过滤两个最主要的功能:

  其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,类似于保安的职能,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础,Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获取其他的微服务消息,也即以后访问微服务是通过Zuul跳转后获得,最终Zuul服务还是会注册进Eureka。提供 服务代理 ,路由,过滤三大功能。

  从以上这张架构图中,我们可以看到所有的请求都必须通过API GateWay服务才能到达后面的服务,这就是Zuul所需要承担起来的责任。可见他的存在是很重要的

  1.新建 boot 工程 修改pom文件

<dependencies>

	<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>

	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-hystrix</artifactId>
	</dependency>


	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-config</artifactId>
	</dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-actuator</artifactId>
	</dependency>

	<dependency>
		<groupId>com.wuzz.cloud</groupId>
		<artifactId>cloudservice-api</artifactId>
		<version>${project.version}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-jetty</artifactId>
	</dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
	</dependency>

	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>springloaded</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-devtools</artifactId>
	</dependency>

</dependencies>

  2.修改application.yml

server:
  port: 9527

spring: 
  application:
    name: cloudmicroservice-zuul-getway

eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
  instance:
    instance-id: getway-9527.com
    prefer-ip-address: true #访问路径显示IP地址

info:
  app.name: wuzz.cloudmicroservice
  company.name: www.newings.com
  build.artifactId: $project.artifactId$
  build.version: $project.version$

  3.修改主启动类

@SpringBootApplication
@EnableZuulProxy
public class DeptConsumer_Zuul_9527_App 
{
    public static void main( String[] args )
    {
    	SpringApplication.run(DeptConsumer_Zuul_9527_App.class, args);
    }
}

  启动Eureka集群,再启动 一个微服务服务提供者,再启动本开启了Zuul服务的微服务。可以通过 http://localhost:8001/dept/get/1 来访问服务提供者的服务 ,由于配置了Zuul,我们还可以通过 localhost:9527/CLOUD-PROVIDER-DEPT/dept/get/1 这个地址去访问

红色:对应的zuul服务的网关

蓝色:对应的zuul在Eureka集群上寻找到的已经注册在Eureka上的服务的服务名

黑色:对应的Restful请求地址

扫描二维码关注公众号,回复: 2880287 查看本文章

  以上的配置  就对于localhost:9527/CLOUD-PROVIDER-DEPT/dept/get/1 这个服务地址,我们依然可以看到对应的微服务注册的真实服务名,这样子不利于服务的安全性,我们可以通过Zuul的路由规则来配置一个暴露地址,通过Zuul的路由跳转 ,去访问真实的服务地址。

  修改pom文件

zuul:  # zuul 的配置规则
  prefix: /wuzz # 统一的公共前缀
  ignored-services: cloud-provider-dept  #  "*" 所有 忽略原有服务名
  routes:
    mydept.serviceId: cloud-provider-dept #域名映射
    mydept.path: /mydept/**

  这个时候我们可以通过 http://localhost:9527/wuzz/mydept/dept/get/1 去访问 ,此时再通过localhost:9527/CLOUD-PROVIDER-DEPT/dept/get/1 这个地址已经无法访问了。

猜你喜欢

转载自www.cnblogs.com/wuzhenzhao/p/9506828.html