springcloud(六)服务网关 Zuul

一、概述

在分布式项目架构中,我们会将服务进行拆分,不同的微服务负责各自的业务功能,实现软件架构层面的解耦合。但是如果拆分之后的微服务数量太多,是不利于系统开发的,因为每个服务都有不同的网络地址,客户端多次请求不同的微服务需要调用不同的 URL,如果同时去维护多个不同的 URL 无疑会增加开发的成本。

二、原理

这个解决方案就是 API 网关,API 网关可以对所有的 API 请求进行管理维护,相当于为系统开放出一个统一的接口,所有的外部请求只需要访问这个统一入口即可,系统内部再通过 API 网关去映射不同的微服务。对于开发者而言就不需要关注具体的微服务 URL 了,直接访问 API 网关接口即可,API 网关的结构如下图所示。

 

三、实现

1、在父工程下创建 Module gateway。

2、在 pom.xml 中添加 Zuul 和 Eureka Client 依赖,Zuul 也作为一个 Eureka Client 在注册中心完成注册。

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>

3、在 resources 路径下创建配置文件 application.yml,添加网关相关配置。

server:
  port: 8030 #当前 Eureka Client 服务端口
spring:
  application:
    name: gateway #当前服务注册在 Eureka Server 上的名称
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8761/eureka/ #注册中心的访问地址

#zuul.routes.*:自定义微服务的访问路径,如 zuul.routes.provider:/p/**,provider 微服务就会被映射到 gateway 的 /p/** 路径。
zuul:
  routes:
    provider: /p/**

4、创建springboot启动类 GateWayApplication

/**
 * @EnableZuulProxy
 * 包含 @EnableZuulServer 的功能,而且还加入了 @EnableCircuitBreaker 和 @EnableDiscoveryClient。
 *
 * @EnableAutoConfiguration
 * 可以帮助 Spring Boot 应用将所有符合条件的 @Configuration 配置都加载到当前 Spring Boot 创建并使用的 IoC 容器。
 */
@EnableZuulProxy
@EnableAutoConfiguration
public class GateWayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GateWayApplication.class,args);
    }
}

5、依次启动注册中心、服务提供者 provider,运行 GateWayApplication。

6、访问注册中心网关 gateway 已经在 Eureka Server 完成注册。

7、调用服务。

同时 Zuul 自带了负载均衡功能 ,修改provider端口再启动一个服务提供者,访问两次 http://localhost:8030/p/student/index,分别请求了端口为 8011 和 8012 的 provider 微服务,实现了负载均衡。

四、总结

本节使用 Zuul 组件实现服务网关的具体操作,Zuul 需要结合 Eureka Client 在注册中心完成注册,Zuul 是一个在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架,相当于客户端和 Netflix 流应用 Web 网站后端所有请求的中间层,可以简化代码的开发。

完整demo下载地址:

https://gitee.com/zhengj/myspringcloud.git

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值