我正在看微服務,以及將我們的一些代碼遷移到此體系結構的可能性。我瞭解一般概念,但正在努力研究它如何爲我們的例子起作用。如何將Java界面遷移到微服務?
假設我有一個名爲RatingEngine
的接口和一個名爲RatingEngineImpl
的實現,它們都在我的單片應用程序中運行。原理很簡單 - RatingEngineImpl
可以運行在不同的機器上,並且可以通過(比方說)一個REST API通過單片應用程序訪問,並通過http使用json序列化DTO。我們甚至有一個界面來幫助解耦。
但我怎麼真的去做這件事?據我所見,我需要爲rump monolith(即現在的客戶端)創建一個新的接口實現,該接口調用接口方法,將它們轉換爲REST調用,並通過網絡將它們發送到新的'評級引擎服務'。然後,我還需要實現一個新的http服務器,每個接口方法都有一個端點,然後對DTO進行反序列化(方法參數)並將呼叫路由到位於服務器內部的原始RatingEngineImpl
。然後它將響應序列化並將其發送回客戶端。
因此,這似乎是一個可怕的很多管道代碼。它還增加了維護開銷,因爲如果您在界面中調整方法,則需要在另外兩處進行更改。
我錯過了什麼嗎?有沒有一些聰明的方法可以使這種樣板代碼構建自動化?
我聽說,你可以採用彈簧和/或RestEasy的神奇地處理一些吧你... – mdarwin
有專爲使您的生活中的許多工具* *更容易(用於部署,監控的巧妙功能,溝通等),但他們不會爲你做出難題。要有效採用這種技術,主要先決條件是在工具中具有一定的成熟度。從平臺虛擬化到REST服務體驗。如果你正在尋找特定的工具,你需要深入調查你的需求。 –