最開始只是想找個API網(wǎng)關(guān)防止API被惡意請求,找了一圈發(fā)現(xiàn)基于Nginx的OpenResty(Lua語言)擴展模塊Orange挺好(也找了Kong,但是感覺復雜了點沒用),還偷懶用Vagrant結(jié)合Docker來快速搭建環(huán)境,基于別人的Dockerfile把整個實驗跑通了,覺得還不錯。想著好像CoreOS是專門為Docker服務(wù)的,還買了一本《CoreOS實踐》花小半天時間看完了,CoreOS在集群環(huán)境下確實很牛,但是我的環(huán)境還是輕量級點,所以還是基于CentOS來做,就這樣研究了兩天時間,與大家分享一下,歡迎留言拍磚或交流!。
問題
一般開發(fā)接口的時候各種語言都已經(jīng)有很成熟的框架了,互聯(lián)網(wǎng)領(lǐng)域用得最多的應該是RESTfull+JSON的模式,但是小型項目對接口基于沒有安全方面、性能等的考慮, 之前寫過一篇直接通過JS抓取數(shù)據(jù)的《玩爽了!直接在Chrome里抓取數(shù)據(jù)》,就算考慮的話實現(xiàn)起來也缺少簡便的辦法,時間上也不一定允許。
解決方案
隨著微服務(wù)的流行,需要有一個類似于API網(wǎng)關(guān)的中間件來做API的管理工作,也就是API的實現(xiàn)方面更多的考慮業(yè)務(wù)邏輯,安全、性能、監(jiān)控可以交由網(wǎng)關(guān)來做(如下圖所示,下圖根據(jù)Kong官方文檔修改),這樣既提高業(yè)務(wù)靈活性又不缺安全性。
環(huán)境搭建
開頭已經(jīng)說了環(huán)境會涉及到VirtualBox、Vagrant、Docker、Nginx、Lua、OpenRety、Orange,好在基本的坑都已經(jīng)填完了。但你最好也有一些這方面的基礎(chǔ),由于實驗步驟冗長難免有些地方?jīng)]有記錄到或者省略。(本文所有步驟基于MacOS環(huán)境)