学习soul源码01-搭建环境运行项目

学习soul源码01-搭建环境运行项目

目标:

  • 看官方文档,了解整个网关的大体情况
  • 搭建环境,运行项目

一、看官方文档

特性

  • 基于WebFlux的响应式API网关
  • 异步
  • 高性能
  • 跨语言

功能

  • 支持各种语言,无缝集成到 Dubbo、Spring Cloud、Spring Boot 中。

    Soul 是极其少支持 Dubbo 的 API 网关,通过 Dubbo 泛化调用 实现。

  • 支持各种语言(http协议),支持 dubbo,springcloud协议。

  • 插件化设计思想,插件热插拔,易扩展。

  • 灵活的流量筛选,能满足各种流量控制。

  • 内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。

  • 流量配置动态化,性能极高,网关消耗在 1~2ms。

  • 支持集群部署,支持 A/B Test, 蓝绿发布。

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

二、环境准备

  • JDK1.8+
  • Maven
  • Git
  • Mysql5.X(官方文档推荐最好5.X版本,8.X可能存在报错的情况)

三、搭建环境

  • 进入官网(先watch、star、fork三连)

    官网地址:https://github.com/dromara/soul

  • 克隆代码

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

瞄一眼代码结构

  • soul-admin:后台管理系统
  • soul-bootstrap:网关入口
  • soul-client:网关转发的各种客户端
  • soul-common:公共模块,实体类、枚举类、工具类等
  • soul-dist:用于打包的模块
  • soul-example:各种demo
  • soul-metrics:看起来应该是监控之类的东西
  • soul-plugin:各种组件,核心模块
  • soul-register-center:注册中心
  • soul-spi:服务发现机制
  • soul-spring-boot-starter:用于加载各种配置
  • soul-sync-data-center:数据同步
  • soul-web:调用api时执行各种插件、过滤器等

四、运行项目

网关管理系统(soul-admin)

  • 修改数据库配置application.yml,也可以直接用h2,然后运行SoulAdminBootstrap

    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
    
  • 访问系统:http://localhost:9095,账号:admin,密码:123456

启动网关(soul-bootstrap)

​ 运行SoulBootstrapApplication,从后台日志可以看出启动过程加载了一堆插件,可以猜想整个网关的核心应该就是这些插件。每个功能一个插件,看起来很清晰,可以根据需求配置自己需要的插件。

.....
2021-01-13 21:37:47.243  INFO 14996 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[monitor] [org.dromara.soul.plugin.monitor.MonitorPlugin]
2021-01-13 21:37:47.243  INFO 14996 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[response] [org.dromara.soul.plugin.httpclient.response.WebClientResponsePlugin]
2021-01-13 21:37:47.244  INFO 14996 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[response] [org.dromara.soul.plugin.alibaba.dubbo.response.DubboResponsePlugin]
2021-01-13 21:37:47.954  INFO 14996 --- [           main] b.s.s.d.w.WebsocketSyncDataConfiguration : you use websocket sync soul data.......
2021-01-13 21:37:48.547  INFO 14996 --- [           main] o.d.s.p.s.d.w.WebsocketSyncDataService   : websocket connection is successful.....

五、总结

  • 简单的了解一下soul是一个高性能网关,具有鉴权、限流、熔断、防火墙等功能,看了一下使用插件的示例。
  • 从搭建环境的过程中,感觉跟普通的springboot项目区别不大,就是简单的修改一下配置然后startup就行了。
  • 看了一下整个项目的代码结构,猜一下各个模块的用处(假设性原则),对整体代码有个印象。
  • 针对接下来的学习,先给自己提几个问题,高性能是怎么实现的,数据是怎么同步的,插件化的好处是什么。

你可能感兴趣的:(soul源码,网关,java,spring)