soul从入门到放弃1--项目搭建

2021-01-14  本文已影响0人  滴流乱转的小胖子

零、概述

用于工作、学习的需要开始学习soul,希望能坚持下去,不像专栏的名字一样 ------ soul从入门到放弃

本篇导读:网关的基本概念、soul主要架构、环境的基本搭建

一、基本概念

什么是api网关(服务网关)?

服务网关 = 路由转发 + 过滤器

以上这些功能本质上都是通过过滤器实现的

什么是soul?

一个基于WeuFlux实现的响应式API网关,具有异步的,高性能的,跨语言的等特点。

soul的主要功能

插件的热插拔,规则的动态配置。
举个列子,比如一个接口你限流是1秒50次,但是你想调小点,像Springcloud-gateway 或者zuul 是不是还得改动配置 然后重启。 soul则不需要,直接在soul-admin找到对应的接口修改即可.</pre>

架构图

image image

此图绿色部分为客户端,按照网关要求的数据格式来请求网关服务。

soul的底层是webflux,如果soul是集群部署的话,可以开启nginx,来反向代理网关服务。

Soul-admin

是soul的控制台,负责管理插件插拔,选择器的配置,规则的配置。将数据写入mysql中,同时基于SPI(HTTP、Zookeeper、Websocket三种之一),实现数据同步机制(后续篇章会详解)。

Soul Cluster

soul启动后,会根据数据同步机制,拉去远端相关配置信息至本地,写入本地JVM,然后开启监听,来动态更新JVM中的数据,

Plugins--Handler

基于插件责任链模式的执行流程,每个插件各司其职。插件是根据用户在soul-admin配置网关请求数据,规则,来执行具体逻辑。

二、环境搭建

依赖工具:朴实无华的工具,降低网关引入门槛

JDK 1.8+

Maven 3.2.x

Git

mysql 5.x :温馨提醒,轻易不要尝试mysql 8

克隆代码

giee:git clone https://gitee.com/shuaiqiyu/soul.git --depth=1

github:git clone https://gitee.com/shuaiqiyu/soul.git --depth=1

关于: depth

maven编译

可以skip一些,提升运行效率

mvn clean package install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true

修改配置及启动

soul-admin

soul-admin/src/main/resources/application.yml

image

修改mysql的配置项目,之后 启动项目即可。

项目启动会类LocalDataSourceLoader,会执行schema.sql脚本,自动创建库、表、相关初始化数据。

访问地址:http://localhost:9095/

用户名:admin 密码:123456


image.png
各种插件

soul-bootstrap

基本不需要修改,只要注意与后台连接地址一致即可

image

访问地址:http://localhost:9195/

三、心得总结

环境搭建的过程,复习很多maven与git上的使用小技巧

本篇幅讲了soul的大致架构,对分布式系统的交互有了新的理解,下一篇将撸起胳膊开始最简单的http接口测试

靡不有初,鲜克有终。希望自己能坚持写完这个系列

上一篇下一篇

猜你喜欢

热点阅读