Soul源码学习(一)——soul原理及环境搭建

概述

Soul 是基于 WebFlux实现的响应式的 API 网关,具有异步、高性能、跨语言等特点。

作者:我希望能够有一样东西像灵魂一样,保护您的微服务。在参考了 Kong、Spring Cloud Gateway等优秀的网关后,站在巨人的肩膀上,Soul 由此诞生!

目前 Soul 功能列表如下:

  • 支持各种语言,无缝集成到 Dubbo、Spring Cloud、Spring Boot 中。
  • 丰富的插件支持,鉴权,限流,熔断,防火墙等等。
  • 网关多种规则动态配置,支持各种策略配置。
  • 插件热插拔,易扩展。
  • 支持集群部署,支持 A/B Test。

整体架构图如下:

img

环境准备

  • java1.8+
  • mysql
  • git
  • maven

本地单机部署

  1. 下载源码,并进行编译

    git clone https://github.com/dromara/soul.git
    mvn clean package install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true
    
  2. 启动admin控制台

    在模块soul->soul-admin下,找到配置文件修改数据库信息,连接到本地mysql数据库,程序会自动创建数据库和表结构。

    spring:
      #profiles:
      #  active: h2
      thymeleaf:
        cache: true
        encoding: utf-8
        enabled: true
        prefix: classpath:/static/
        suffix: .html
      datasource:
        url: jdbc:mysql://localhost:3306/soul?useUnicode=true&characterEncoding=utf-8
        username: root
        password: 
        driver-class-name: com.mysql.jdbc.Driver
    
  3. 登录admin后台

    浏览器访问localhost:9095,默认用户名、密码admin/123456登录后台

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-25wQXJ7S-1610637858086)(/Users/lijiajun/Library/Application Support/typora-user-images/image-20210114171435776.png)]

  4. 启动核心网关服务soul-bootstrap

    在模块soul->soul-bootstrap, 通过idea直接启动服务。

数据库设计

  • 插件采用数据库设计,来存储插件,选择器,规则配置数据,以及对应关系。
  • 数据库表UML类图:

Soul源码学习(一)——soul原理及环境搭建_第1张图片

  • 设计详解:
    • 一个插件对应多个选择器,一个选择器对应多个规则。
    • 一个选择器对应多个匹配条件,一个规则对应多个匹配条件。
    • 每个规则在对应插件下,不同的处理表现为handle字段,handle字段就是一个json字符串。具体的可以在admin使用过程中进行查看。

你可能感兴趣的:(soul,网关)