soul网关学习day01

今天开始对soul的学习,目标:

通过官方文档初步了解soul

环境搭建并运行demo(运行soul-admin soul-bootstrap)

准备工作

IDE(已安装idea)、JDK1.8、相关工具(git、maven)

百度soul源码地址:

码云(国内) https://gitee.com/shuaiqiyu/soul/

github(国外) https://github.com/Dromara/soul

官方文档 https://dromara.org/zh-cn/docs/soul/soul.html

soul简介

下载代码的时候先通过官方文档了解一下soul是什么:可扩展,高性能,响应式的 API 网关

API网关概念参考 https://www.jianshu.com/p/7baab672b822

soul网关学习day01_第1张图片

从上面soul的架构图来看,soul大概包括几个部分:集群、插件、处理模块、管理端、监控及面板,官方介绍soul的功能特点:

  • 提供了诸如限流、熔断、转发和路由监控等插件;
  • 与 HTTP、RESTful、WebSocket、Dubbo 和 Spring Cloud 无缝对接;
  • 支持热插拔,用户可以定制化开发;
  • 为了灵活的适配,选择器和规则可以动态的适配;
  • 支持集群部署;
  • 支持 A/B 测试和灰度发布。

环境搭建

  1. 源码可以通过git clone,我的环境因为github访问超时clone失败,改用下载zip解压
  2. 通过idea maven package或以下命令编译
mvn clean package install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true

此处有官方的入门教程:https://dromara.org/zh-cn/docs/soul/induction.html 本次并未完全按照该步骤进行

代码结构

soul网关学习day01_第2张图片

soul的模块结构

  • soul-admin : 插件和其他信息配置的管理后台
  • soul-bootstrap : 用于启动项目,用户可以参考
  • soul-client : 用户可以使用 Spring MVC,Dubbo,Spring Cloud 快速访问
  • soul-common : 框架的通用类
  • soul-dist : 构建项目
  • soul-metrics : prometheus(普罗米修斯)实现的 metrics
  • soul-plugin : Soul 支持的插件集合
  • soul-spi : 定义 Soul spi
  • soul-spring-boot-starter : 支持 spring boot starter
  • soul-sync-data-center : 提供 ZooKeeper,HTTP,WebSocket,Nacos 的方式同步数据
  • soul-examples : RPC 示例项目
  • soul-web : 包括插件、请求路由和转发等的核心处理包

运行

soul-admin

  • 插件和其他信息配置的管理后台

soul支持mysql或者h2,因为本地没有安装mysql,暂时使用h2,放开application.yml中下图注释的属性

soul网关学习day01_第3张图片

运行SoulAdminBootstrap启动soul-admin,然后访问:http://localhost:9095/index.html 默认用户名:admin 密码: 123456

(官方文档:https://dromara.org/en-us/docs/soul/setup.html)

soul网关学习day01_第4张图片

 

soul网关学习day01_第5张图片

从菜单看管理端主要有两块功能:系统管理(System Manage)包括了用户、插件、授权、元数据、字典等管理功能,而插件列表(PluginList)里包括了插件管理功能中配置的插件的配置管理,如下图:

soul网关学习day01_第6张图片

 

soul-bootstrap

  • 用于启动项目,用户可以参考

运行SoulBootstrapApplication启动soul-admin,然后访问:http://localhost:9195 ,返回

{"code":-107,"message":"Can not find selector, please check your configuration!","data":null}

看起来原因是没有配置selector,具体如何解决,下回分解

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