最開(kāi)始只是想找個(gè)API網(wǎng)關(guān)防止API被惡意請(qǐng)求,找了一圈發(fā)現(xiàn)基于Nginx的OpenResty(Lua語(yǔ)言)擴(kuò)展模塊Orange挺好(也找了Kong,但是感覺(jué)復(fù)雜了點(diǎn)沒(méi)用),還偷懶用Vagrant結(jié)合Docker來(lái)快速搭建環(huán)境,基于別人的Dockerfile把整個(gè)實(shí)驗(yàn)跑通了,覺(jué)得還不錯(cuò)。想著好像CoreOS是專門(mén)為Docker服務(wù)的,還買(mǎi)了一本《CoreOS實(shí)踐》花小半天時(shí)間看完了,CoreOS在集群環(huán)境下確實(shí)很牛,但是我的環(huán)境還是輕量級(jí)點(diǎn),所以還是基于CentOS來(lái)做,就這樣研究了兩天時(shí)間,與大家分享一下,歡迎留言拍磚或交流!。

問(wèn)題

一般開(kāi)發(fā)接口的時(shí)候各種語(yǔ)言都已經(jīng)有很成熟的框架了,互聯(lián)網(wǎng)領(lǐng)域用得最多的應(yīng)該是RESTfull+JSON的模式,但是小型項(xiàng)目對(duì)接口基于沒(méi)有安全方面、性能等的考慮, 之前寫(xiě)過(guò)一篇直接通過(guò)JS抓取數(shù)據(jù)的《玩爽了!直接在Chrome里抓取數(shù)據(jù)》,就算考慮的話實(shí)現(xiàn)起來(lái)也缺少簡(jiǎn)便的辦法,時(shí)間上也不一定允許。

 

解決方案

隨著微服務(wù)的流行,需要有一個(gè)類似于API網(wǎng)關(guān)的中間件來(lái)做API的管理工作,也就是API的實(shí)現(xiàn)方面更多的考慮業(yè)務(wù)邏輯,安全、性能、監(jiān)控可以交由網(wǎng)關(guān)來(lái)做(如下圖所示,下圖根據(jù)Kong官方文檔修改),這樣既提高業(yè)務(wù)靈活性又不缺安全性。

 

環(huán)境搭建

開(kāi)