Soul网关
初识Soul网关
猫大人的项目集:https://dromara.org/en-us/;Soul网关的github地址:https://github.com/Dromara/soul
逛github就像逛B站一样star,watch,fork一键三连必不可少,为猫大人拉拉票~
言归正传,我们认识一项技术时,首先需要明确的是:这个技术是什么,用的是什么思想,用来解决什么问题;
Soul网关是怎样一个框架
这是一个异步的,高性能的,跨语言的,响应式的API网关。它:
1. 支持各种语言(http协议),支持 dubbo,springcloud协议。
2. 插件化设计思想,插件热插拔,易扩展。
3. 灵活的流量筛选,能满足各种流量控制。
4. 内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。
5. 流量配置动态化,性能极高,网关消耗在 1~2ms。
6. 支持集群部署,支持 A/B Test, 蓝绿发布。
需要的安装环境:
1. JDK 1.8+
2. Maven 3.2.x
3. Git
4. mysql
Soul网关源码拉取
只是把Soul拉下来比较单调,就多讲点成为Soul Contributor的方法吧,开始接任务的时候其实早就做完了,但由于以前没用github进行过协同开发,所以一直瑟瑟发抖不敢提交,怕出错,在研究了Soul文档以及提交规范不下10遍后,才战战兢兢的提了pull request,结果很快就被accept了(当然,可能和我的任务特别简单有关…)
-
fork
这一步是成为Contributor的第一步,将Soul源码fork到自己的仓库,然后运行以下指令:
git clone 你自己的repository
这个时候你自己的repository就会变成origin,为后续Push操作提供了上传依据。
-
设置upstream
git remote add upstream https://github.com/dromara/soul.git
-
选择需要修改的issue,就是issue列表中的数字;当然其实有更复杂的操作,不过我暂时没用到,复杂的操作如下:
请在选择您要修改的issue。如果是您新发现的问题或想提供issue中没有的功能增强,请先新建一个issue并设置正确的标签。 在选中相关的issue之后,请回复以表明您当前正在这个issue上工作。并在回复的时候为自己设置一个deadline,添加至回复内容中。
大概是如果没有的话需要自己主动提一个issue;并表示你在该issue上工作,并且回复相应的信息。
-
切换到你的仓库里fork的master分支,这步我记得不是太清楚了,似乎一开始就work在master分支?但这样操作保险点,应该在第二步可以保证本地fork到的代码是soul仓库中最新的。
git checkout master git pull upstream master git checkout -b [issueNo,就是issue上的数字]
仔细看了下,有这样一个说明:
注意 :PR会按照squash的方式进行merge,如果不创建新分支,本地和远程的提交记录将不能保持同步
不是太懂squash是什么意思,但还是照着做比较好。
-
注意代码格式,Soul有相应的代码规范,在如下网址(我就不凑这个字数了):
https://dromara.org/zh-cn/docs/soul/code-conduct.html
-
push到你fork的git仓库,直接运行以下指令就好了:
git add 修改代码 git commit -m 'commit log' git push origin issueNo
-
push以后去仓库可以看到,会有个提示说你的代码可以merge了,点击那个按钮就可以进入pull request的编辑界面了。说个小插叙,就是开始不知道前面那个√怎么打上去的,然后发现github下面其实会有个文档教怎么去编辑的,最终结果就是,在需要打勾的条目前面会有一个“[ ]”,把它改成“[x]”就能在preview上看到,前面都√,勾上了。
-
接下来就是修修改改pr的代码。
Soul网关初体验
需要maven环境,然后我是运行以下maven指令,和其他同学有点小区别,但其实差别应该不是太大:
mvn clean install -Dmaven.javadoc.skip=true -Drat.skip=true -DskipTests
觉得console里面不断地刷东西很烦的话,就在上面的命令后面加" > log.txt";感觉一般就是看看结果成功没,哪里出错了,感觉没必要在console里面不停的刷,我电脑性能不太行,刷的感觉会特别卡,估计是内存不足的原因,不过这台笔记本又不给加内存条…就,凑合着用吧…
基本没啥意外的话都会成功的,然后就是跑Soul-admin了,要改的就是soul-admin下的application.yml
这个位置改成本地数据库的密码;如果不用mysql的话,url和driver-class-name也要一起改了。
跑起来以后大家的界面都一样,我就不放上来了。
soul-bootstrap也差不多,还没有打断点去追,这几天又开始莫名其妙的忙起来了,就先更这么多,看看能不能(抄 划掉)借鉴一下其他同学的思路。