概述
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/projects/soul/overview/
二、环境准备
- 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网关源码学习01-搭建环境运行项目soul网关源码学习01-搭建环境运行项目的全部内容,希望文章能够帮你解决soul网关源码学习01-搭建环境运行项目soul网关源码学习01-搭建环境运行项目所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复