• Spring Cloud 之 服务网关


             

    在微服务架构体系中,使用API 服务网关后的系统架构图如下:

    API服务网关的主要作用如下:

    • 服务访问的统一入口
    • 服务访问的负载均衡功能
    • 服务访问的路由功能

    在SpringCloud中,基于Netflix 和Zuul 组件来实现API 网关功能,下面先来构建一个服务网关项目:

    1. pom文件

       

    
    

    <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.1.3.RELEASE</version>
    </parent>

    <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
    </properties>


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


    <
    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> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>

    2. application.yml 配置

    management:
      endpoints:
        web:
          exposure:
            include: "*"
    spring: 
      application: 
        name: gateway
      
    server:
      port: 8280
    
    eureka:
      client:
        serviceUrl:
          defaultZone: http://eurekaServer:8761/eureka/

    3 . 网关服务启动类

    @SpringBootApplication
    @EnableZuulProxy
    public class App 
    {
        public static void main( String[] args )
        {
            SpringApplication.run(App.class, args) ;
        }
    }

    启动上述服务后,我们访问具体服务时只要按照如下的方式进行统一访问就可以了:

            http : // {api网关服务器域名} : {api网关服务监听端口号} / {服务在注册中心注册和服务名} / {服务的@RequestMapping配置的路径}

    上面的形式说得专业些就是:http://[ zuul 路 由 服务器 地址]/[ serviceId]/[ 具体 服务 的 端点]

    同时上面的这也就是网关提供的默认的路由访问规则 , 使用的是在 Eureka 中注册的微服务的ID, 有时候这种映射机制并不能满足需求,比如 对于 用户 服务, 我们 不想 使用 userservice 这个 路径, 而是

    想更简单一点直接使用 user。 此时, 可以 在 Zuul 路由服务器 配置文件中通过增加格式 为“ zuul.routes.微服 务 d= 指定 路径” 的属性配置方式 进行配置,对访问路径进行控制。

    配置完成后,我们可以通过  http://127.0.0.1:8280/actuator/routes 来查看网关当前的路由规则。

  • 相关阅读:
    python-MongoDB 非关系型数据库
    python-爬虫-Beautifulsoup模块
    python-flask-路由匹配源码分析
    python-flask-配置文件的源码分析
    python-爬虫-selenium模块
    python-flask-请求源码流程
    python-爬虫
    iOS开发——创建你自己的Framework
    手把手教你封装下载管理器
    AFNetwork 作用和用法详解
  • 原文地址:https://www.cnblogs.com/hzhuxin/p/11016410.html
Copyright © 2020-2023  润新知