前文我們介紹了什么是微服務,以及使用Node.js構建微服務,本文介紹一個Node.js工具Seneca。
Seneca是一個很有趣的工具,它的目的在于復制架構師和開發人員的服務想法,提供方法把代碼融入到由模式所觸發的邏輯行為中,這是根據用例所作用的模型。一旦被定義,模式就可以輕松轉為API,使用用例和模式來定義消息內容。
隨著模式實現為用例,他們還可以讓我看到哪些地方需要添加業務邏輯。例如,如果你正在構建機票預訂服務以及乘客細節模式的話,這時你很可能需要實現代碼來處理頻繁的飛行細節,并將它們添加到旅客機票記錄中,以及記錄機票號碼和乘客的頻繁使用的帳戶。
開發人員把Seneca描述為“業務邏輯管理者”,對這一方法的最恰當描述是它提供了你所需要大量東西來構建一系列的微服務。Seneca 通過服務插件(常見的SQL和NoSQL數據庫的實現)進行擴展,以及一些其它的Node.js模型,這樣你就可以使用NPM(節點包管理器)安裝的所有東西。它讓你使用 Seneca來連接熟悉的中間件,簡化把現有應用打破成不同服務的處理過程。
雖然使用Seneca和Node.js給你提供了一個輕量級的服務架構框架,但這只是一部分,因為你還需要考慮服務作為分布系統擴展的一部分。即,在實踐中,你必須重新發明SOA這個輪子,并實現一些消息代理形式作為一種工具,向運行在容器中的Node.js 服務集群交付消息。其中一個有效的選擇就是開源MQ實現,使用它在多個來源中提取消息,然后通過發布和訂閱服務協議把它發送至 Node.js服務中。與自己編寫擴展消息路由相比,這簡單的多。
一旦你開始使用像Seneca這樣的工具來構建微服務,然后你就要把它們構建到測試和部署的devops工作流中。構建和部署基于服務的應用程序都很好,但卻無法維護,這一點很折磨人。你還要在服務周圍實現一些 持續交付模型的形式,然后使用它來管理并發布更新——這是一個比編寫代碼理棘手的問題。
使用微服務構建現代化應用程序是很有意義的,因為它讓你既利用了擴展橫向擴展架構,也利用縱向擴展架構;還額外得到API的組合,且在整個業務中可重復利用。可能,每一分鐘構都在交付新服務,如亞馬遜那樣,這樣你就必須擁有一個敏捷的且響應的應用程序平臺,這一平臺一直在不斷改進中。
微服務微服務框架開發小工具——Seneca