Soul网关发布2.1.X之后,它到底有多方便?
點(diǎn)擊上方“朱小廝的博客”,選擇“設(shè)為星標(biāo)”
后臺(tái)回復(fù)”加群“加入公眾號(hào)專(zhuān)屬技術(shù)群
Soul 網(wǎng)關(guān)自從去年10月我開(kāi)源以來(lái),經(jīng)歷了一年的事情,接受到了來(lái)自社區(qū)很多朋友的建議,并進(jìn)行持續(xù)不斷的優(yōu)化,已經(jīng)提供了非常豐富的功能,很多功能都是高度自定義,可視化,高度可擴(kuò)展的,現(xiàn)在做一個(gè)歸納總結(jié)。
-
插件
-
提供了系統(tǒng)自帶的各種插件,比如簽名,監(jiān)控,限流,熔斷,http代理,dubbo代理,websocket等等。
-
支持用戶(hù)快速的進(jìn)行插件的自定義開(kāi)發(fā)。
-
插件的所有數(shù)據(jù),開(kāi)關(guān)狀態(tài)支持動(dòng)態(tài)變更。
-
數(shù)據(jù)同步
-
提供了 http長(zhǎng)輪詢(xún),zookeeper,websocket ?三種不同的數(shù)據(jù)同步策略,讓用戶(hù)自由選擇。
-
推薦用戶(hù)使用websocket方式,最輕量,在集群環(huán)境下,效率更高。
-
對(duì)于用戶(hù)
-
首先我們提供了便于用戶(hù)接入的 client包,用戶(hù)可以把快速的把自己的項(xiàng)目接入到soul 網(wǎng)關(guān)。
-
默認(rèn)情況下,用戶(hù)完全不用關(guān)心 soul網(wǎng)關(guān)的選擇器,規(guī)則等配置。
-
用戶(hù)之前的接口完全是零侵入,不需要任何更改,只是需要把訪(fǎng)問(wèn)域名改成網(wǎng)關(guān)的域名即可。
-
比如 dubbo用戶(hù),幾乎就是http的方式完成了 http協(xié)議到 dubbo協(xié)議的互相轉(zhuǎn)換。
-
soul 使用的是http協(xié)議,那么注定它就是跨語(yǔ)言的,net程序員,php程序員等等,要和java進(jìn)行數(shù)據(jù)交互,那么就大大的可行了。
舉個(gè)列子 ,比如你有一個(gè) dubbo接口 參數(shù)定義是一個(gè)java bean,
public?void?insert(final?DubboTest?dubboTest)?{}public?class?DubboTest?implements?Serializable?{private?String?id;private?String?name; }如果你使用 soul網(wǎng)關(guān)要發(fā)起對(duì)它的調(diào)用,你的http傳參數(shù) 就是在 body 里面 傳一個(gè)json字符串 ,和普通的http調(diào)用無(wú)差別。
{"id":"123","name":"xiaoyu"} -
對(duì)于開(kāi)發(fā)者(程序員)
-
隨著使用者越來(lái)越多,每個(gè)公司使用情況又不一樣,soul 網(wǎng)關(guān)在2.1.X版本,處處留出來(lái)更多的高度自定義擴(kuò)展性,讓開(kāi)發(fā)者,更加方便或者有信心融入進(jìn)來(lái)。
-
比如,自定義插件,過(guò)濾器,dubbo參數(shù)解析器,iphost解析器,返回結(jié)果等等。。這里我著重說(shuō)一下自定義返回結(jié)果。
我們知道,soul 網(wǎng)關(guān)默認(rèn)的返回結(jié)果是:
json {"code":200, "message ": "成功!","data" :"helloWorld!"}
但是,在運(yùn)用 soul 網(wǎng)關(guān)對(duì)你的業(yè)務(wù)系統(tǒng)進(jìn)行調(diào)用的時(shí)候,你的業(yè)務(wù)系統(tǒng)可能定義的結(jié)果并不是上述結(jié)構(gòu),可能你的 字段叫 ?msg,這樣就會(huì)造成結(jié)構(gòu)不一樣,給前端處理帶來(lái)了困擾。我們注意到了這個(gè)事情 :https://github.com/Dromara/soul/issues/109 , 現(xiàn)在已經(jīng)優(yōu)化,用戶(hù)可以定制化的來(lái)定義返回結(jié)果,具體的要看 soul 文檔。
說(shuō)了這么多,吹了這么多牛逼,那么我們來(lái)看看 soul網(wǎng)關(guān)到底可以在什么場(chǎng)景下能發(fā)揮大作用。
-
后臺(tái)管理web
-
首先隨便微服務(wù)的流行,我們的后臺(tái)都劃分成很多的微服務(wù),我相信你們每個(gè)公司都有一個(gè)后臺(tái)管理系統(tǒng)吧,如果我沒(méi)猜錯(cuò)的話(huà),他們大體上是如下架構(gòu)。
-
很簡(jiǎn)單對(duì)吧,就是有個(gè)運(yùn)營(yíng)管理平臺(tái)的web項(xiàng)目,去調(diào)用每個(gè)微服務(wù),來(lái)進(jìn)行后臺(tái)的查看等等。隨著你們業(yè)務(wù)需要的加大,可能這里需要調(diào)用的微服務(wù)越來(lái)越多,你的 controller越來(lái)越多,現(xiàn)在比如你修改了 商品模塊的 接口,你要發(fā)版會(huì)造成所有其他的模塊也操作不了(就是你發(fā)版影響了其他模塊的使用,別杠這里只是比方,不要整藍(lán)綠發(fā)版啥的,明白意思吧)。
如果有運(yùn)營(yíng)人員在操作其他模塊,會(huì)不會(huì)吐槽你? -
假如你是公司架構(gòu)師,我說(shuō)的是假如,那么你要怎么解決這個(gè)問(wèn)題呢?當(dāng)然,我們把這樣一個(gè)大的web系統(tǒng),拆分成很多小web系統(tǒng),單獨(dú)的進(jìn)行發(fā)布,但是這樣會(huì)引入一個(gè)問(wèn)題,怎么統(tǒng)一登陸,鑒權(quán)?(很多后臺(tái)管理系統(tǒng)還有權(quán)限的劃分) ,這個(gè)時(shí)候,soul 網(wǎng)關(guān) 就能發(fā)揮重要的作用了,下面我只是列舉了一下簡(jiǎn)單的調(diào)用圖。
-
這樣多方便,集成了網(wǎng)關(guān),每個(gè)微服務(wù)注冊(cè)到網(wǎng)關(guān),網(wǎng)關(guān)根據(jù)路由規(guī)則來(lái)進(jìn)行調(diào)用。自動(dòng)發(fā)現(xiàn)服務(wù),連運(yùn)維配置 nginx的工作都省了,把運(yùn)維的工資給你,美滋滋。
-
公司入口網(wǎng)關(guān)(開(kāi)放平臺(tái))
-
如果一個(gè)公司要做開(kāi)放平臺(tái)或者入口網(wǎng)關(guān),鑒權(quán),限流,監(jiān)控,熔斷肯定少不了。
-
如果貴公司是dubbo體系,開(kāi)發(fā)人員寫(xiě)了dubbo服務(wù)后,還要傻乎乎的新增一個(gè)web項(xiàng)目,來(lái)提供接口給別人調(diào)用嗎?
-
如果一個(gè)接口被攻擊,你怎么處理呢?如果被大流量攻擊,你怎么處理呢?
-
不巧,soul 在設(shè)計(jì)之初就是來(lái)干這種事情的,我們來(lái)看一下整體的架構(gòu)圖。
零零總總還有很多其他功能
-
比如支持 websocket 代理。
-
比如支持文件上傳下載。
-
比如你可以自定義的開(kāi)發(fā)你的插件啊。
最后最后
-
github地址 :https://github.com/Dromara/soul
-
gitee地址 :https://gitee.com/shuaiqiyu/soul
-
文檔:https://dromara.org/zh-cn/docs/soul/soul.html
-
歡迎大家關(guān)注,如果貴公司有使用到,或者需要學(xué)習(xí)交流,或者提供代碼參與開(kāi)發(fā)的朋友也可以加群來(lái)進(jìn)行討論 ,qq群(429951241)
-
最后 3.0 已經(jīng)在進(jìn)行開(kāi)源了,3.0是經(jīng)歷過(guò)2年雙11大并發(fā)場(chǎng)景驗(yàn)證過(guò)的,現(xiàn)在一步一步將它開(kāi)源出來(lái),希望給大家?guī)?lái)幫助.
想知道更多?掃描下面的二維碼關(guān)注我
?
超強(qiáng)干貨來(lái)襲 云風(fēng)專(zhuān)訪(fǎng):近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的Soul网关发布2.1.X之后,它到底有多方便?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 阿里巴巴的独立环境是如何实现的
- 下一篇: 一个字符串中到底能有多少个字符? 我竟然