2015-09-02 38 views
0

我有一個具有5個線程的單進程的單片應用程序。每個線程完成特定的任務。想把這個應用程序轉移到使用docker的微服務。如果我看看架構,每個工作線程將成爲碼頭進程。因此,在某種程度上,Monolithic vs Microservices在我的情況下變得更像Thread vs Process討論。Monolithic(vs)微服務==>線程(vs)進程

擁有單片機的最初想法是擁有性能線程並共享相同的內存。現在使用微服務拱門,我被推向了一個可能不適合從性能角度考慮的流程模型。

我有點卡住如何解決這個問題。

+1

進程可以獨立崩潰。然而,這與碼頭工人無關。 – usr

+1

沒有一個答案:任何導致實施的答案都應該仔細考慮目標/範圍,當前體系結構,並仔細權衡不同分佈式和/或併發方法的優缺點。 – user2864740

+1

I' m並不是100%確定你認爲Docker可以幫助你嗎?它純粹是包裝相同過程的情況嗎? –

回答

6

這裏你缺少的是微服務不適合世界上任何軟件系統!考慮在做任何事情之前將目前的單片系統遷移到微服務的驅動程序。你在尋求高可用性和可擴展性嗎?你想用不同的編程語言編寫每個線程的自由嗎?你的系統是複雜的,不能以單一的風格理解嗎?最後,你準備好支付具有微服務風格的費用嗎?

微服務給系統帶來了很多複雜性,並且由於服務的惡劣性,可能會導致性能損失,從而提高可伸縮性。如果性能是一個重要的問題,那麼這個系統並不是那麼大,而你對上面大多數問題的回答是「不」,我強烈建議你不要採用微服務風格。相反,嘗試模塊化您當前的代碼庫並重構代碼以獲得更好的質量和可理解性。

關於Docker,即使使用單片樣式,也可以使用Docker,以消除開發和部署環境中的一些部署障礙和不一致性。如果提到的有關部署的問題不會影響到你,請不要去找泊塢窗,因爲它只是一層計算開銷。

+0

如果您覺得這個回答有用,請將其標記爲正確:) –