2017-05-25 225 views
1

我對微服務領域相當陌生,但瞭解有關負載平衡的基礎知識。我最近閱讀了一篇關於微服務的文章:Enough with the microservices微服務和負載均衡器之間的區別?

有它提到,無論是微服務和負載平衡器具有集羣/不同的虛擬機的部署應用程序的多個副本,但在微服務的情況下,我們有一個單獨的數據庫相反,加載的備份單個數據庫平衡器。它們是唯一的區別嗎?

下面是引用的文字:

「同微服務的多個副本可以爲了被部署到 實現可擴展性的形式,但是,採用 微服務大多數公司太早將使用相同的存儲子系統(大多數是 通常是一個數據庫)來支持他們所有的微服務,這意味着 是您的 應用程序沒有水平可伸縮性,僅用於您的服務。如果這是您計劃使用的可伸縮性方法 ,爲什麼不只是部署你的龐然大物更多的副本後面的負載平衡器?你會用更少的 複雜完成同樣的目標。」

+1

閱讀此項。 https://martinfowler.com/articles/microservices.html – NotMe

+0

我認爲一個主要的區別是微服務在功能上分開負載,而負載平衡器在技術上將其分開(即,對於微服務,您實際上擁有一個由節點,而負載均衡器在多個節點上提供所有功能) - 在每種情況下如何使用數據庫是由此導致的結果 –

回答

2

你不能用負載平衡器比較微服務...你應該用單片或SOA架構進行比較。

在單片電路的方法你主要只有一個整個系統的數據庫和一個單一的應用程序作爲您的業務的單個項目。

單片是單個單元但是SOA是粗粒度方法,而微服務是細粒度方法。設計一個單片系統,可以爲您的業務設計不同的微服務功能和基於您的域名和有限上下文。

每個微服務可能有自己的數據庫。例如,訂單微服務可能有mysql數據庫,推薦微服務可能有Cassandra數據庫,用戶搜索微服務可能有Elasticsearch或SOLR數據庫。

在微服務每個微服務可以跟另一個基站上的兩個不同的通信方式:

  1. 同步(其餘爲建議的)
  2. 異步(通過消息代理像卡夫卡,RabbitMQ的,ActiveMQ的或NATS 等)

縮放上下微服務架構比單片系統容易得多,你甚至可以更改系統的一部分,單獨重新部署,而不會影響整個系統。

此外,微服務堅持讓它崩潰的範例,並使用EIP模式,如電路斷路器,你可以讓用戶的思維繫統總是起來和工作,並基於CAP定理,你可以通過補償具有高可用系統根據BASE代替ACID

用於負載平衡客戶機側的負載與色帶通過Netflix的設計平衡一致性和具有最終一致性是非常可行的方法。

同樣使用NginX,Docker Swarm和kubernetes可以實現負載均衡。

簡而言之,將微服務與負載平衡器進行比較沒有任何關係。

1

這裏的(希望)簡單的回答你的問題:

  • 微服務是different(微)每個應用程序。每個都有自己的應用程序邏輯和數據庫。

  • 負載平衡器通常用於將客戶端請求分發到same應用程序的實例集羣。

這意味着:您還可以使用負載均衡器來分發部署在具有多個實例的集羣中的微服務的請求。但是負載平衡器也可以用來將請求分發給大型單片應用程序的許多實例(而不是微型)。

對於微服務應該是什麼的可能best overview