SpringCloud网关组件Zuul

微服务:独立的工程之间通过框架形成的一个集群的服务调用;这个集群称之为微服务集群;

微:集群中的工程(服务器),都是独立运行的项目;功能非常单一微小,例如后台的增删改查可以切分成4个独立运行的微服务工程.

springCloud的微服务框架具有很多的功能组件:

1 服务治理 eureka 所有工程都可以在eureak中注册自己的服务名称,如果名称一致,将会被eureka作为同一个服务来使用;
2 负载均衡调用组件:ribbon, 前端的客户端的组件
3 接口客户端组件: feign 底层依赖ribbon+template实现的调用。看不到实际调用的方法,利用接口,注解
4 熔断器:Hystrix, 当服务调用出现任何异常或者问题时,可以利用熔断的逻辑完成错误的解决;类似代码中的try catch
5 分布式配置:config,分布式配置组件;

6 网关组件:zuul,实现网关路由,监听,对当前的需要的服务进行网关治理;

ZUUL网关

微服务集群提供的网关,监听等功能的微服务组件;
访问的时候根据url路径,过滤网关拦截的信息,访问指向的服务

1 quickstart 的骨架

可以再 start.spring.io 生成一个springboot工程

2 pom依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.arno</groupId>
  <artifactId>zuul-client</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>zuul-client</name>
  <url>http://maven.apache.org</url>
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

  <dependencies>
    <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
        </dependency>
  </dependencies>
   <dependencyManagement>
          <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR4</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

3 application.properties
server.port=8097

//指向注册中心,与eureka center一致,服务启动后会自动到下面的地址注册名称为service-zuul的服务
eureka.client.serviceUrl.defaultZone=http://localhost:8090/eureka/
//定义自己的服务名称
spring.application.name=service-zuul
//定义拦截路径为localhost:8097/api-a/**
//zuul.routes.api-a中的api-a为自定义的字符串,必须和值/api-a/**中的api-a一致
zuul.routes.api-a.path=/api-a/**
//定义拦截到api-a的请求时转发的服务
//当请求localhost:8097/api-a/hi?name=haha 的时候转向到service-ribbon服务也就是http://service-ribbon/hi?name=haha
zuul.routes.api-a.serviceId=service-ribbon
//定义拦截路径为localhost:8097/api-b/**
//zuul.routes.api-b中的api-b为自定义的字符串,必须和值/api-b/**中的api-b一致
zuul.routes.api-b.path=/api-b/**
//定义拦截到api-b的请求时转发的服务
//当请求localhost:8097/api-b/hi?name=haha 的时候转向到service-feign服务也就是http://service-feign/hi?name=haha
zuul.routes.api-b.serviceId=service-feign

4 启动类

@EnableEurekaClient 到注册中心注册服务
@EnableZuulProxy 打开网关代理

package com.arno;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

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

接下来可以测试

localhost:8097/api-a/hi?name=haha
是否调用了service-ribbon
localhost:8097/api-b/hi?name=haha
是否调用了service-feign

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值