18個Node.js和JavaScript開源庫,用於快速簡單的搭建微服務

18個Node.js和JavaScript開源庫,用於快速簡單的搭建微服務

很久以前,在互聯網發展初期,將瀏覽器指向一個URL意味著您的計算機將啟動與一臺服務器的對話,而只有一臺服務器與該網址連接。如果你訪問一個個人博客,這可能仍然會發生,但今天所有的主要網站和大多數小網站都是真正的服務器星座,有時幾十個,有時幾百個,有時甚至幾千個。

Node.js一直是實現未來飛躍的熱門基礎。也許是因為Node.js在微服務範式的同時大受歡迎。也許是因為Node.js非常適合Docker容器。也許只是因為JavaScript無處不在。現在,當我們訪問一個網站時,我們的數據包將傳輸到Node.js堆棧,從而觸發更多調用更多Node.js服務器,每個服務器都會提供一部分填滿我們屏幕的數據。

Node崛起的一個重要原因可能就是簡單性。功能Node.js微服務可以用幾行代碼構建:一個用於監聽端口,一個用於連接到任何數據庫,還有一些用於編碼業務邏輯。“Hello World”示例與正在運行的微服務之間的區別僅僅是一個或兩個函數。Node.js是由想要在互聯網上提供服務的人設計和構建的。

這不僅僅是代碼的簡單性。Node.js社區將引用Node.js無處不在的更多實際原因。有些人將專注於令人難以置信的輕量級Node.js運行時。它在幾秒鐘內啟動,並且不會咀嚼RAM來創建線程來處理每個傳入和傳出請求。IO例程經過優化,可以快速獲取和輸出數據,而無需花費太多時間來創建跟蹤線程和其他ephemera的對象。回調範例對新手程序員來說可能是一個挑戰,但結果是速度極快,機器負載很小。這樣可以輕鬆地在雲中啟動多個快速的微服務。

其他人喜歡這樣的想法,即Node.js世界一直由開源自下而上。Node的原始版本是一個開源項目,它基於一個本身就是開源的JavaScript解釋器。所有主要的Node.js框架都是開源的,並且倫理是如此占主導地位,以至於在許多Node.js堆棧中的任何地方都很難找到專有的代碼塊。

這裡有18個不同的開源項目,只需幾行JavaScript就可以更快,更簡單地啟動微服務。當你完成微服務時,你可以再創建一些,直到你有自己的微服務組合在一起工作,以滿足互聯網永不滿足的需求。

API Blueprint

API Blueprint項目只是用於描述您的API一個類標記語言的規範。其工具的真正的價值是來自所有可以閱讀規範並使用API​​執行智能操作。像Drakov,用於測試代碼中的模擬服務器,和的Dredd,以測試你的API文檔對後端,確保您的API始終與Blueprint的當前版本一致的工具。還有為Python和C等語言構建的標準解析器。有許多使用API Blueprint格式的不同項目。

Claudia.js

厭倦了站起來自己搞服務器?Claudia.js是一個工具包,用於將Node.js例程移動到AWS Lambda或AWS API Gateway。您可以獲取響應事件的例程,然後Claudia將通過單次調用命令行來部署它們。

Cote

對於任何需要快速微服務的開發人員而言,“零配置”這個短語聽起來像音樂,而這正是Cote所提供的。“零”這個詞並不嚴格正確,因為您需要詳細說明對象和API的一些基本細節,但Cote會在此之後自行組織,為您節省配置IP地址,端口和路由的麻煩。大多數聰明才智在廣播機制和低開銷協議中找到,它們允許Cote實例找到彼此並進行通信。

Express

有許多用於構建Node.js站點的Web應用程序框架。Express是最簡單和最常見的之一。您不需要添加其所有結構來創建微服務,但它可以幫助為它處理的角色提供一些標準化。關於後端微服務是否應該與前端具有相同的架構,這是一個有趣的問題。他們可能不會一直需要額外的模板功能,但是當他們這樣做時,添加像Express這樣的簡單框架可以提高一致性和穩定性。

Feathers

Feathers是一個開源項目,擁有大量第三方插件,只需幾行配置即可創建快速REST API。然而,真正的魔力在於可以添加的額外行,以快速集成數據庫,身份驗證和分頁。通過提供實時推送機制,通過Sockets.io和Primus庫向客戶端發佈新事件,Feathers變得更加聰明。這些只是Feathers開發人員將他們的項目描述為“包含電池”的原因之一。

Hapi

Hapi是另一種流行的Node.js框架,可用於處理網站或備份網站的微服務的基本配置。有許多插件,包括一些處理一些標準作業的插件,如安全性和配置等微服務。您還可以將Hapi與Seneca等常見服務模型集成。

Koa

如果您認為您的微服務作為“中間件”位於數據庫之類的某些源之前,Koa可以為您的數據構建相當廣泛的管道。好吧,管道可能不是Koa最好的比喻,因為這些函數是以“堆棧式”結構應用的。這意味著你的函數會調用其他函數,然後在數據返回時再次獲取數據。所謂的“堆棧”是用promises實現的。

在Koa之上構建了一個令人驚訝的大型軟件包集合,可以提供安全性,監控,預處理和許多其他選項。大多數項目將添加其中幾個來完成包。

KrakenD

將後端分成如此多的微服務的缺點之一是前端必須進行許多不同的調用。KrakenD是一個聚合器,可以幫助您組織與後端和所有響應的通信,使前端的生活更簡單,只需要撥打一次KrakenD。如果這些後端中的一些返回的數據比目前前端需要的數據多,那麼KrakenD可以刪除這些殘骸。

LoopBack

想要構建快速API的Node.js用戶可以轉向LoopBack,這是另一個採用數據模型並將其轉換為完整API的框架。您將獲得用於操作對象的所有CRUD函數以及一些額外的維護功能,如訪問控制。大多數標準數據庫都由易於安裝的連接器支持,這使得LoopBack成為一種更簡單的方法來啟動一個持久保存基本數據的微服務。

Mocha.js

一旦編寫了代碼,就必須保持代碼運行。編寫一個好的微服務總是包括添加一些測試例程。雖然當你有幾十個微服務時,這可能是一件苦差事,但它可以幫助你更快地解決問題,同時避免在你認為你正在改進時回退代碼庫。Mocha是最廣泛使用的Node.js測試框架之一。Mocha允許您將良好的單元測試與構建例程集成在一起,只需幾個函數即可進行測試。

Moleculer

對於Node.js來說,最快的微服務框架之一是Moleculer。除了速度之外,Molecular還提供了許多重要功能,可以在集群中傳播重負載,同時基於CPU負載或延遲進行智能平衡,並且可以進行純隨機選擇或循環。您可以在Redis緩存,序列化或不同傳輸的插件上繪圖。回滾失敗的連接並使用多個回退選項重試。

Puppeteer

從理論上講,瀏覽器是為機器人中的人類而設計的,而微服務則從幕後為瀏覽器服務,使用面向機器的格式(如JSON或YML)處理後臺的所有數據。實際上,微服務通常需要深入研究以人為中心的格式並解析HTML和CSS中標記的信息。有時它只是將一些網頁變成PDF。有時它是自動化代碼庫的一些古老角落,只能在網頁中說話。有時這是因為您想要編寫真正代表用戶看到的內容的精心設計的測試例程。木偶是在Node.js中運行的Web瀏覽器的無頭版本,等待URL開始工作。您可以使用Puppeteer執行大量後臺工作以支持各種微服務。

Redbird

您的應用是否需要一些代理工作來保持管道連接?Redbird是一個反向代理生成機器,支持您確保隱私所需的大多數複雜加密算法。

Restify

創建微服務的另一個選擇是Restify,這是一個快速框架,使用Sinatra風格的鏈式函數調用集合提供經典路由。您可以根據需要插入自己的自定義代碼。Restify還會自動將標準調試調用(DTrace)插入到所有不同的路由中,從而更容易理解調用其他微服務的微服務的意大利麵。當然,您的代碼不需要它,但您仍然可以接受它,因為它可以幫助團隊中的其他人。

Sails

正式來說,Sails是一個完整的MVC(模型 - 視圖 - 控制器)框架,用於在Node.js上構建Web應用程序。但它還附帶了從MVC中的M自動生成REST API的例程,也就是Sails中的“藍圖”。如果需要REST API,可以從Sails開始,稍後根據需要添加V和C.

Seneca

勾勒出微服務架構的一個好方法是創建一組匹配某些傳入參數模式的規則。Seneca旨在讓你做到這一點。你編寫了一個函數和一些模式來描述它何時應該觸發,然後Seneca完成其餘的工作。它提供連接到所有主要數據庫的插件,以及構建CMS後端或購物車等主要功能的一些示例。塞內卡渴望不僅僅是一個微服務基金會。

Serverless

隨著越來越多的企業編碼人員探索無服務器範例,他們需要一個抽象層來消除各種平臺之間的差異,從AWS Lambda到Apache OpenWhisk。無服務器是一個名稱可能有點過於通用的服務器。它提供的第一件事是有機會構建API並在無服務器環境中啟動和運行它們。您可以使用大量的插件和示例,並部署到AWS Lambda,Azure功能,Google Cloud Functions,IBM OpenWhisk等。

Swagger

微服務架構有許多部件,所有這些部件都具有與外界的接口。Swagger提供了設計這些API的標準格式。你會提出關於API將會做什麼的想法,然後Swagger將它們變成人類可讀的文檔和機器可讀的測試代碼。標準化結構在您的代碼庫中強制實施一致的模型。


分享到:


相關文章: