zuul-什么是微服务中的网关

一)什么是微服务中的网关

1.微服务中的zuul

zuul是SpringCloud中的一个路由组件,我们可以使用的zuul对外提供一个统一的入口访问我们提供的Provider,看上去zuul很像Customer,但是不然,其实我们可以将zuul理解成一个的门户,它为是web应用所有服务请求的前门,用户的请求经过网关,在进行对服务的消费

2.为什么需要网关
第一:我们知道我们要进入一个服务本身,很明显我们没有特别好的办法,直接输入IP地址+端口号,我们知道这样的做法很糟糕的,这样的做法大有问题,首先暴露了我们实体机器的IP地址,别人一看你的IP地址就知道服务部署在哪里,让别人很方便的进行攻击操作。
第二:我们这么多服务,我们是不是要挨个调用它呀,我们这里假设做了个权限认证,我们每一个客户访问的都是跑在不同机器上的不同的JVM上的服务程序,我们每一个服务都需要一个服务认证,这样做烦不烦呀,明显是很烦的。
第三:没有网关我设计起来的网站模式是Customer直接调用Provider,这样我们会发现,客户端和服务之间耦合度太大。

3.使用网关解决的问题
1.服务IP地址暴露问题,统一入口,我们通过网关为微服务提供统一的入口,网关起到外部和内部的隔离(Customer和Provider的隔离),保持后台服务的安全性
2.鉴权校验:识别请求的权限,拒绝不符合要求的请求
3.动态路由:动态的将请求路由到指定的服务上
4.减少客户端和服务端耦合度,服务可以独立的发展,通过网关完成映射。

在这里插入图片描述

二)zuul的入门案例

1.创建项目

在这里插入图片描述

2.使用zuul进行网关服务的时候需要基本的三个的坐标

1)web启动器
2)EurekaClient(因为Zuul也是一个服务需要在注册中心内注册)
3)zuul
3.pom文件

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.sxt</groupId>
    <artifactId>6-zuul-proxy</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>6-zuul-proxy</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
    </properties>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

4.修改启动类

1.在启动类上添加一个重要的注解@EnableZuulProxy注解用于开启网关代理服务

@SpringBootApplication
@EnableZuulProxy //开启网关代理
public class Application
{

    public static void main(String[] args)
    {
        SpringApplication.run(Application.class, args);
    }

}

5.修改全局配置文件

spring.application.name=6-zuul-proxy
server.port=9020
eureka.client.service-url.defaultZone=http://peer1:8081/eureka/,http://peer2:8082/eureka/,http://peer3:8083/eureka/

6.启动服务进行网关的测试

1)直接访问数据是没有问题的
在这里插入图片描述

2)启动网关服务
服务在中心已经注册成功了

在这里插入图片描述

3)如何通过网关进行服务的访问呢?
很简单使用网关的url+服务的名字+访问的地址
也是能访问到数据的。
http://localhost:9020/1-e-product-provider/product/selectAllProduct

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值