Soul 网关入门示例演示

Soul 网关入门示例演示

简介

Soul网关简介

Soul网关是一个基于WebFlux的异步的,高性能的,响应式的API网关;

  • 特点
    • 支持各种语言(http协议),支持dubbo,springcloud协议;
    • 插件化设计思想,插件热插拔,易扩展;
    • 灵活的流量筛选,能满足各种流量控制;
    • 内置丰富的插件支持,鉴权,限流,熔断,防火墙等等;
    • 流量配置动态化,性能极高,网关消耗在 1~2ms;
    • 支持集群部署,支持 A/B Test, 蓝绿发布。

源码地址

官方文档地址 : Soul官方文档.
github地址:github仓库.

环境要求

  1. JDK 1.8+
  2. Maven 3.2.x
  3. git
  4. MySQL 5.X (8.X 存在一些报错情况,推荐使用5.X)

项目结构

本篇我们主要介绍一下这几个模块,其他模块的内容待跟进…
模块说明

使用实例

Springboot 工程使用示例(divide 插件)

  1. 首先我们先启动Soul网关的控制台程序;
    在这里插入图片描述
    启动完以后,我们就可以通过访问https://localhost:9095来访问网关的控制台了;
    在这里插入图片描述

  2. 其次我们再启动Soul网关的主程序,网关的默认端口式9195;
    在这里插入图片描述

  3. 然后我们再启动一个Springboot工程示例;
    在这里插入图片描述

  4. 使用Postman完成请求转发示例测试;
    我们先使用postman请求springboot里的接口测试;
    在这里插入图片描述
    然后我们可以在控制台的插件列表配置divide插件(默认打开),我们可以使用这个插件的配置来配置我们的路由、规则和负载均衡策略(这里我们使用默认即可),配置完以后记得点击同步自定义divide,将配置的信息同步到网关JVM缓存里面。
    我们的这些配置都是写到数据库里面的, 网关是要应对高并发的响应,不可能一个请求过来的时候还去数据库里面查一遍,这样的话,网关是没有什么QPS的,支撑不起来大量的集群的,大并发;数据同步指的是将数据库的数据同步到我们的JVM内存里面来,同步成Map、List、等数据;每个内存的数据要保证和每个操作人员的修改保持一致网关里的数据都是走内存的,效率是很快的,这样我们的网关才能支持的起大并发的操作;
    在这里插入图片描述
    我们通过访问我们的网关地址和我们配置的路由来访问我们的服务;
    在这里插入图片描述

  5. 负载均衡测试
    我们通过高悬Allow parallel run和修改端口号启动两个SoulTestHttpApplication工程;端口分别式8188,8189
    在这里插入图片描述
    我们可以在控制台的divide插件里配置我们的负载均策略;
    在这里插入图片描述
    我们通过postman分别请求同一个接口10次,我们可以在soulBootstrapApplication工程的Console下看到localhost:8188和localhost:8189两个服务器均等的被访问到;大家可以随意调权重试试,看看效果;
    在这里插入图片描述

  6. divide插件使用说明

    • 添加依赖
         <groupId>org.dromara</groupId>
         <artifactId>soul-spring-boot-starter-client-springmvc</artifactId>
         <version>${soul.version}</version>
      </dependency>
      
    • 配置soul参数
      soul:
        	http:
      	    adminUrl: http://localhost:9095
      	    port: 8189
      	    contextPath: /http
      	    appName: http
      	    full: false
      

    添加依赖和配置soul参数即可;

写在最后

为什么需要数据同步?

  1. Soul网关是服务层和控制台分离的,而服务层又是可以集群部署的,存在数据一致性问题;
  2. 网关时公司流量入口,为了提升响应速度,所有的数据应该存在JVM内存中,这样每次请求的响应速度非常之快;

采用何种数据同步策略?

soul网关提供了一下三种,可以任意选择

  1. 基于zookeeper的监听订阅模式;
  2. webSocket推送模式;
  3. http长轮询;

猜你喜欢

转载自blog.csdn.net/qq_35115942/article/details/112644689