美團面試:如何設(shè)計一個注冊中心?
訂單系統(tǒng) 商品系統(tǒng)

怎么調(diào)用?

API地址存放到某個地方。

API了。問題來了
所以,注冊中心就來了。
注冊中心來了
注冊中心。下面我們用服務(wù)提供方(商品系統(tǒng))稱之為provider,服務(wù)調(diào)用方(訂單系統(tǒng))我們稱之為consumer。
如何設(shè)計一個注冊中心
服務(wù)如何注冊 consumer如何知道provider 服務(wù)注冊中心如何高可用 服務(wù)上下線,消費端如何動態(tài)感知
服務(wù)注冊


服務(wù)列表保存通常有三種方式:本地內(nèi)存、數(shù)據(jù)庫、第三方緩存系統(tǒng)

同一個服務(wù)注冊中心,我們可以注冊多個服務(wù),比如用戶服務(wù)、商品服務(wù)、訂單服務(wù)...
服務(wù)消費


注冊中心高可用
cluster-url即可。
動態(tài)感知服務(wù)上下線



heartBeat,即就是服務(wù)注冊中心,每隔一定時間去監(jiān)測一下provider,如果監(jiān)測到某個服務(wù)掛了,那就把對應(yīng)服務(wù)地址從服務(wù)列表中刪除。根據(jù)心跳檢測,來提出無效服務(wù)。


push:服務(wù)注冊中心主動推送服務(wù)列表給consumer。 pull:consumer主動從注冊中心拉取服務(wù)列表。

我得知道你的微信好友,不然我怎么把我手里的資源發(fā)給你
API,這個API給服務(wù)注冊中心進行回調(diào)。本質(zhì)是我們是使用HTTP協(xié)議還是使用Socket監(jiān)聽
如果定時任務(wù)是每隔30秒拉去一次,那就是說,延遲最長時間是30秒。
與簡單輪詢相似,只是在服務(wù)端在沒有新的返回數(shù)據(jù)情況下不會立即響應(yīng),而會掛起,直到有數(shù)據(jù)或即將超時 優(yōu)點:實現(xiàn)也不復(fù)雜,同時相對輪詢,節(jié)約帶寬缺點:還是存在占用服務(wù)端資源的問題,雖然及時性比輪詢要高,但是會在沒有數(shù)據(jù)的時候在服務(wù)端掛起,所以會一直占用服務(wù)端資源,處理能力變少應(yīng)用:一些早期的對及時性有一些要求的應(yīng)用:web IM 聊天
小總結(jié)
服務(wù)是如何注冊 消費端如何獲取服務(wù) 如何保證注冊中心的高可用 動態(tài)感知服務(wù)的上下線
有道無術(shù),術(shù)可成;有術(shù)無道,止于術(shù)
歡迎大家關(guān)注Java之道公眾號
好文章,我在看??
評論
圖片
表情
