Spring Cloud 2.x系列之网关zuul入门(一)

基于Spring的微服务结点在能力上没有高低贵贱之分,但是在角色上会分为边缘服务和内部服务两部分。内部服务是为对内暴露服务的结点,供架构内部来调用;边缘服务是对外部网络暴露的服务结点,也就是对外API接口。

开发人员为了防止服务被黑客攻击,需要编写各种权限机制,这些机制在每个微服务结点都要实现一次。一旦鉴权上有什么bug,又要全部节点上推倒重来,噩梦;运维人员在边缘服务前段都会架一个F5或者Nginx等负载均衡的代理,需要手动维护一份服务列表和服务地址的路由信息,随着结点的扩展或地址调整这份列表要变来变去。

为了解决鉴权重复的问题,使业务结点本身只关心实现自己的业务,将对权限的处理抽离到上层。外部客户先请求到Zuul上,在Zuul服务上对权限进行统一实现和过滤,以实现微服务结点的过滤和验证;为了解决请求路由和安全过滤,Spring Cloud推出了一个API gateway组件:Spring Cloud Zuul。

 

Zuul对路由的配置有三种方式:

第一种(path-url):如果请求/sina这个地址,将会转发到http://www.sina.com.cn上去

 

第二种(path-serviceId):如果请求/user-consumer开头的地址,将会转发到eureka上serviceId为sc-user-provider这个服务上去。

 

第三种(给微服务名指定path):给sc-user-provider这个微服务指定了它的请求地址是/user-service/**

(其实这里还隐藏了第四种:什么都不配,默认给注册到eureka上的所有服务以第三种方式进行路由,path就是微服务自己的名字,但是此种方式又是不安全的,相当于将非边缘服务也暴露给外网,一般需要关闭这个默认配置zuul.ignored-services=*,或者至少将受保护的微服务列表维护到zuul.ignored-services中)

 

今天介绍一下第一种方式

1、新建项目sc-zuul,对应的pom.xml文件如下

 

<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">

   <modelVersion>4.0.0</modelVersion>

   <groupId>spring-cloud</groupId>

   <artifactId>sc-zuul</artifactId>

   <version>0.0.1-SNAPSHOT</version>

   <packaging>jar</packaging>

   <name>sc-zuul</name>

   <url>http://maven.apache.org</url>



   <parent>

      <groupId>org.springframework.boot</groupId>

      <artifactId>spring-boot-starter-parent</artifactId>

      <version>2.0.4.RELEASE</version>

   </parent>

   <dependencyManagement>

      <dependencies>

        <dependency>

           <groupId>org.springframework.cloud</groupId>

           <artifactId>spring-cloud-dependencies</artifactId>

           <version>Finchley.RELEASE</version>

           <type>pom</type>

           <scope>import</scope>

        </dependency>

      </dependencies>

   </dependencyManagement>

   <properties>

      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

      <maven.compiler.source>1.8</maven.compiler.source>

      <maven.compiler.target>1.8</maven.compiler.target>

   </properties>

   <dependencies>

      <dependency>

        <groupId>org.springframework.cloud</groupId>

        <artifactId>spring-cloud-starter-netflix-zuul</artifactId>

      </dependency>



   </dependencies>

</project>

2、新建配置文件application.yml

 

server:

  port: 8070

spring:

  application:

    name: sc-zuul


zuul:

  routes:

    sina:

      path: /sina/**

      url:http://www.sina.com.cn

    baidu:

      path: /baidu/**

      url:http://www.baidu.com

 

3、新建启动类ZuulApplication.java

package sc.zuul;



import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.netflix.zuul.EnableZuulProxy;



@SpringBootApplication

@EnableZuulProxy

public  classZuulApplication {


   public static void main(String[] args) {

      SpringApplication.run(ZuulApplication.class, args);

   }

}

4、启动项目

5、验证

访问地址http://127.0.0.1:8070/baidu/跳转到百度

 

访问地址http://127.0.0.1:8070/sina/跳转到新浪

 

参考

https://blog.csdn.net/yejingtao703/article/details/77816555/

https://www.cnblogs.com/ityouknow/p/6944096.html

源码:

https://gitee.com/hjj520/spring-cloud-2.x/tree/master/sc-zuul

一套不错的springboot教程喜欢的话可以通过二维码购买,然后联系小编领红包

完本文有收获!请转发分享给更多人


欢迎关注“JAVA乐园”,我们分享最有价值的互联网技术干货文章,助力您成为有思想的全栈架构师,我们只聊互联网、只聊架构!打造最有价值的架构师圈子和社区。

  • 长按下方的二维码可以快速关注我们

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BUG弄潮儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值