SpringCloud学习心得(五) 路由网关(zuul)

转载请标明出处:
http://blog.csdn.net/forezp/article/details/69939114

本文出自方志朋的博客


在Spring Cloud微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经过负载均衡(zuul、Ngnix),再到达服务网关(zuul集群),然后再到具体的服。,服务统一注册到高可用的服务注册中心集群,服务的所有的配置文件由配置服务管理(下一篇文章讲述),配置服务的配置文件放在git仓库,方便开发人员随时改配置。

Zuul是Netflix开源的微服务网关,他可以和Eureka,Ribbon,Hystrix等组件配合使用。Zuul组件的核心是一系列的过滤器,这些过滤器可以完成以下功能:

# 身份认证和安全: 识别每一个资源的验证要求,并拒绝那些不符的请求

# 审查与监控:

# 动态路由:动态将请求路由到不同后端集群

# 压力测试:逐渐增加指向集群的流量,以了解性能

# 负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求

# 静态响应处理:边缘位置进行响应,避免转发到内部集群

# 多区域弹性:跨域AWS Region进行请求路由,旨在实现ELB(ElasticLoad Balancing)使用多样化

Spring Cloud对Zuul进行了整合和增强。目前,Zuul使用的默认是Apache的HTTP Client,也可以使用Rest Client,可以设置ribbon.restclient.enabled=true.


创建service-zuul工程

pom文件:

    <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>
        <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>
            <scope>test</scope>
        </dependency>

    </dependencies>

配置文件:

spring:
  application:
    name: service-zuul-eric
 
server:
  port: 8769

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
      
zuul:
  routes:
    api-a:
      path: /api-a/**
      serviceId: service-ribbon-eric
    api-b:
      path: /api-b/**
      serviceId: service-feign-eric

首先指定服务注册中心的地址为http://localhost:8761/eureka/,服务的端口为8769,服务名为service-zuul-eric;以/api-a/ 开头的请求都转发给service-ribbon-eric服务;以/api-b/开头的请求都转发给service-feign-eric服务;

启动类:加上注解@EnableZuulProxy,开启zuul的功能

package cn.eric.springcloud;

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;

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

依次启动eureka-server、client、ribbon、feign、zuul这五个工程

在浏览器里面输入:http://localhost:8769/api-a/hi?name=eric

hi eric,i am from port:8762

在浏览器里面输入:http://localhost:8769/api-b/hiFeign?name=eric

hi eric,i am from port:8762


猜你喜欢

转载自blog.csdn.net/money9sun/article/details/80450245