Spring Cloud学习笔记(八)-智能路由网关Zuul的配置以及网关负载均衡介绍

说明:本文仅作为本人学习<<深入理解Spring Cloud与微服务构建>>一书的学习笔记,所有代码案例及文字描述均参考该书,不足之处,请留言指正,不胜感激.
一.为什么需要Zuul?
a.Zuul,Ribbon以及Eureka相结合,可以实现智能路由和负载均衡的功能,Zuul能够将请求流量按某种策略分发到集群状态的多个服务实例.
b.网关将所有服务的API接口统一聚合,并统一对外暴露.外接系统调用API接口时,都是由网关对外暴露的API接口,外界系统不需要知道微服务系统中各服务相互调用的复杂性,从而提高了安全性.
c.网关服务可以做用户身份认证和权限认证,防止非法请求操作API接口,对服务器起到保护作用.
d.网关可以实现监控功能,实时日志输出,对请求进行记录.
f.网关可以用来实现流量监控,在高流量的情况下,对服务进行降级.
g.API接口从内部分离出来,方便做测试.
二.搭建Zuul服务
1.我们在前面服务的基础上搭建,新建一个module,取名zuul-server,然后导入Zuul的起步依赖,以及Eureka的起步依赖(Spring Cloud框架的各个服务都需要向服务中心注册),如下:

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

2.在启动类上加上@EnableEurekaClient,开启Eureka Client的功能;加上@EnableZuulProxy,开启Zuul的功能,如下:

/**
 * 网关服务
 *
 * @author zhyu
 * @version v1.0
 * @date 2018年07月02日 20:08:34
 */
@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy//开启zuul功能
public class ZuulServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ZuulServerApplication.class, args);
    }
}

3.接着配置application.yml,如下:

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 5000
spring:
  application:
    name: zuul-server
zuul:
  routes:
    producerapi:   #"producerapi"是自己定义的,需要指定它的path,serviceId
      path: /producerapi/**
      serviceId: producer-server  
      #将/producerapi开头的url路由到指定的producer-server服务
  prefix: /v1   #路径前缀

4.依次启动eureka-server,zuul-server,以及两个producer-server服务,访问:http://localhost:5000/v1/producerapi/producer,浏览器上会交替出现:

hi,this is 8762
hi,this is 8763

可见在使用服务名serviceId来配置的时候,Zuul默认在路由转发做了负载均衡.通过查看zuul的起步依赖可以发现,zuul的起步依赖集成了ribbon,hystrix等.

猜你喜欢

转载自blog.csdn.net/fly_zhaohy/article/details/80848310
今日推荐