Soul 源码分析00 get started

Soul 源码分析00 get started

这是一个异步的,高性能的,跨语言的,响应式的API网关。我希望能够有一样东西像灵魂一样,保护您的微服务。参考了Kong,Spring-Cloud-Gateway等优秀的网关后,站在巨人的肩膀上,Soul由此诞生!

Features

  • 支持各种语言(http协议),支持 dubbo,springcloud协议。
  • 插件化设计思想,插件热插拔,易扩展。
  • 灵活的流量筛选,能满足各种流量控制。
  • 内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。
  • 流量配置动态化,性能极高,网关消耗在 1~2ms。
  • 支持集群部署,支持 A/B Test, 蓝绿发布。

官方文档

Github repo

本人使用的是 master分支 b1ed3daa87a1633cc6c5cc131baa0cdd78df643c 版本, 未来可能会有略微不同

# clone repo 到本地
git clone https://github.com/dromara/soul
# 然后进行编译项目:
mvn clean package install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true

# 编译中会遇到有些包找不到的问题, 主动地去编译相应的模块就好, 重复此步骤
# eg:
mvn clean package install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true -f soul-plugin/soul-plugin-monitor/pom.xml

编辑 soul-admin的配置文件 soul-admin/src/main/resources/application.yml

# 去掉h2配置文件的注释
spring:
  profiles:
    active: h2
# 或者配置mysql数据库
datasource:
    url: jdbc:mysql://localhost:3306/soul?useUnicode=true&characterEncoding=utf-8
    username: root
    password:
    driver-class-name: com.mysql.jdbc.Driver

在IDEA中运行 soul-admin 的入口函数 soul-admin/src/main/java/org/dromara/soul/admin/SoulAdminBootstrap.java

访问 http://127.0.0.1:9095 我们就看到首页了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iMcNBsqX-1610688268039)(00login.png)]

默认的 账号: admin 密码:123456

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hQlcbH4S-1610688268043)(01index.png)]

随后在IDEA中运行 soul-bootstrap 的入口函数 soul-bootstrap/src/main/java/org/dromara/soul/bootstrap/SoulBootstrapApplication.java

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9lf9lokt-1610688268044)(02start_bootstrap_log.jpg)]

注意这个log是soul-admin产生的,也就是soul-bootstrap启动后与admin建立了连接

这个时候访问 http://localhost:9195/ 也就是soul-bootstrap会返回

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

bootstrap产生log

2021-01-15 00:20:00.542 ERROR 93827 --- [-work-threads-2] o.d.soul.plugin.base.utils.CheckUtils    : can not match selector data: divide

根据提示我们打开divide页面, http://localhost:9095/#/plug/divide

添加selector

在这里插入图片描述
在这里插入图片描述

添加selector中我发现 protocol 和 ip:port 会拼接成我们的代理目标地址, 也就是说https : // 这部分也是要手动写的,这是可以优化的点, 做成可选项的 schema, ip, 和port可选缺省 80, 这样可以更规范配置,另外如上图所示这样的写法也是可以正常被代理到 http://baidu.com 的

添加rule
在这里插入图片描述
保存后测试下gateway功能

$curl -i localhost:9195
HTTP/1.1 302 Found
Content-Length: 161
Connection: keep-alive
Content-Type: text/html
Date: Thu, 14 Jan 2021 16:29:38 GMT
Keep-Alive: timeout=4
Location: http://www.baidu.com/
Proxy-Connection: keep-alive
Server: bfe/1.0.8.18

<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>bfe/1.0.8.18</center>
</body>
</html>

可以看到我们访问刚配置好的根路径 / 已经得到重定向返回结果, 浏览器会重定向到https的百度

至此, 最基本的soul gateway已经跑起来了

已标记关键词 清除标记
相关推荐
<p> <b><span style="background-color:#FFE500;">【超实用课程内容】</span></b> </p> <p> <br /> </p> <p> <br /> </p> <p> 本课程内容包含讲解<span>解读Nginx的基础知识,</span><span>解读Nginx的核心知识、带领学员进行</span>高并发环境下的Nginx性能优化实战,让学生能够快速将所学融合到企业应用中。 </p> <p> <br /> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><br /> </b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><span style="background-color:#FFE500;">【课程如何观看?】</span></b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> PC端:<a href="https://edu.csdn.net/course/detail/26277"><span id="__kindeditor_bookmark_start_21__"></span></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 移动端:CSDN 学院APP(注意不是CSDN APP哦) </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 本课程为录播课,课程永久有效观看时长,大家可以抓紧时间学习后一起讨论哦~ </p> <p style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <br /> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <strong><span style="background-color:#FFE500;">【学员专享增值服务】</span></strong> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b>源码开放</b> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 下载方式:电脑登录<a href="https://edu.csdn.net/course/detail/26277"></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a>,播放页面右侧点击课件进行资料打包下载 </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页