微服务中为什么需要服务发现?
生活随笔
收集整理的這篇文章主要介紹了
微服务中为什么需要服务发现?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最簡單的情況下:只有A,B兩個服務,他們都有自己的IP地址,如果A調用B,那么需要在A中配置B的地址就可以了。
但是如果B的服務有多個,如下圖:
在分布式系統中,多個自治的B并不共享主內存。因此B的服務不僅多,而且會根據具體情況動態變化。因此數量也是不固定的。例如在流量小的時候B的數量會變小,當大流量時B的數量可以增多。因此在A中的配置寫B的IP是不現實的。
這時就需要注冊中心了,B在啟動時就會把自己的信息上報到注冊中心,如下所示:
這時如果A要調用B就需要從注冊中心獲取B的信息。
A如何向注冊中心拿到B的信息?
方法一:客戶端發現
A直接找注冊中心,注冊中心把B的所有信息都發送給A,這時A只需要選擇一個B的地址就可以了。可以通過某種機制來選擇,比如輪訓、hash、隨機等機制來從眾多的B地址中選擇一個。這種方式就是客戶端發現,這是由A發起的。
常用的有:Eureka
方法二:服務端發現
出現了一個新的角色----代理。代理從眾多的B地址中選一個給A。這種方式就是服務端發現。
常用的有:Nginx,zookeeper,kubernetes。
客戶端發現與服務端發現的優缺點
客戶端發現的優點:簡單直接,不需要代理的介入,同時可以知道所有可以使用的服務地址。缺點是需要自己實現一套邏輯來挑選B。
服務端發現的優點:對于A來說是透明的。A服務只需要向代理發請求就可以了。
總結
以上是生活随笔為你收集整理的微服务中为什么需要服务发现?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微服务SpringCloud
- 下一篇: springboot通过Intellij