zoukankan      html  css  js  c++  java
  • SpringCloud之zuul网关(八)

    简介

      zuul包含了对请求的路由过滤两个最主要的功能

      其中路由功能复杂将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求的处理过程进行干预,是实现请求效验,服务聚合等功能的基础,Zuul和Eureka进行整个,将zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过zuul跳转后获得。

    提供 = 代理 + 路由 + 过滤三大功能

    服务网关基本配置

    新建springcloud-zuul-gateway服务

    ① 添加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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>srpingcloud</artifactId>
            <groupId>com.common</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
        <artifactId>springcloud-zuul-gateway-9527</artifactId>
        <dependencies>
            <!-- zuul路由网关 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-zuul</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
            </dependency>
            <!-- actuator监控 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <!-- hystrix容错 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-hystrix</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-config</artifactId>
            </dependency>
            <!-- 日常标配 -->
            <dependency>
                <groupId>com.common</groupId>
                <artifactId>springcloud-api</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jetty</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>
            </dependency>
            <!-- 热部署插件 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
        </dependencies>
    </project>

    ② 编写application.yml配置

    server: 
      port: 9527
     
    spring: 
      application:
        name: microservicecloud-zuul-gateway #注册eureka的名字
     
    eureka: 
      client: 
        service-url: 
          defaultZone: http://eureka1:7001/eureka,http://eureka2:7002/eureka,http://eureka3:7003/eureka  
      instance:
        instance-id: gateway-9527.com #改hosts文件
        prefer-ip-address: true 
     
    info: #可写可不写
      app.name: atguigu-microcloud
      company.name: www.atguigu.com
      build.artifactId: $project.artifactId$
      build.version: $project.version$

    ③ hosts修改

    hosts文件的位置在C:WindowsSystem32driversetchosts

    ④ 添加启动类注解配置

    package com.yt.springcloud;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
    @SpringBootApplication
    @EnableZuulProxy//代理
    public class Zuul_9527_StartSpringCloudApp
    {
        public static void main(String[] args)
        {
            SpringApplication.run(Zuul_9527_StartSpringCloudApp.class, args);
        }
    }

    启动

    • 三个Eureka集群
    • 服务提供者springcloud-provider-dept-8001
    • zuul服务

    测试

    网关和微服务注册进入eureka集群:http://localhost:7001/

     不使用路由:http://localhost:8001/dept/get/1

    使用路由:http://myzuul.com:9527/springcloud-dept/dept/get/1
    springcloud-dept是服务提供者的微服务名称


    路由访问映射规则

    ① 修改application.yml

    测试: http://myzuul.com:9527/mydept/dept/get/1

    只让路由映射的mydept可以访问!!!

    修改application.yml文件

    访问测试

     

    单个写具体微服务名称,多个可以用"*"

    修改application.xml文件

    设置统一公共前缀

    修改application.yml配置文件

    测试

     

    总结

  • 相关阅读:
    Mysql登录错误:ERROR 1045 (28000): Plugin caching_sha2_password could not be loaded
    Docker配置LNMP环境
    Docker安装mysqli扩展和gd扩展
    Docker常用命令
    Ubuntu常用命令
    单例模式的优缺点和使用场景
    ABP 多租户数据共享
    ABP Core 后台Angular+Ng-Zorro 图片上传
    ERROR Error: If ngModel is used within a form tag, either the name attribute must be set or the form control must be defined as 'standalone' in ngModelOptions.
    AbpCore 执行迁移文件生成数据库报错 Could not find root folder of the web project!
  • 原文地址:https://www.cnblogs.com/FondWang/p/12257908.html
Copyright © 2011-2022 走看看