Rails 微服務架構

jopen 9年前發布 | 17K 次閱讀 Rails

Rails 應用有各種類型,規模也各有不同。有的是一個獨立的龐大的應用,全部應用都在同一個位置(包括管理界面、API、前端部分以及所有需要的模塊)。另一些應用則是劃分成一系列的微服務,服務之間互相通信,這樣可以把整個應用切分成更易管理的部分。

這種微服務的架構被稱為面向服務的架構( SOA )。雖然我見到過的 Rails 應用通常都傾向于成為獨立的程序,不過開發者也完全可以選擇讓多個 Rails 程序,以及與其他語言或者框架編寫的服務一起工作來完成任務。

Rails應用通常是獨立的程序,但是沒有理由阻止你嘗試微服務的架構。

</blockquote>

獨立的程序不意味著一定寫的不好,但是寫的差的獨立程序被拆成微服務后大多也是很糟糕的。有多種方式可以讓你寫出清晰的(更容易測試的)代碼,同時在需要拆分應用的時候也更輕松。

使用微服務架構的 Rails 應用的用例

本文會討論如何實現一個 CMS 的網站。可以假設是一家大的報紙或者博客,有很多作者負責投稿,用戶可以按主題訂閱內容。

Martin Fowler 有一篇很不錯的文章,介紹了為什么編輯和發布應該分成兩個不同的系統。我們的用例與此類似,另外我們還要添加兩個模塊:通知和訂閱。

我們的 CMS 現在有四個主要的模塊: