註冊中心主要就是用來服務的管理,它的核心就是有服務的註冊表,通過心跳的機制去動態維護。
註冊中心是基於生產者和消費者的一個模型。
服務提供者會在一啓動的時候,向這個註冊中心去進行註冊,把自身的一些信息寫到註冊中心裏面。服務消費者就可以通過註冊中心去找到想要消費的服務。
最後服務消費者找到了一些信息,就會來服務提供者這邊找到相應的服務提供者去請求它所提供的服務。
以dubbo+zk為例子,服務提供者啓動的時候就會向zk裏面寫入dubbo,一個provider這個目錄去寫入自己url的地址。
服務消費者啓動的時候,通過訂閲zk所創建的目錄去獲取提供者的url的地址,同時會在註冊中心consumer的目錄下面去寫入自己url的一個地址。
這就是服務提供者和消費者在啓動的時候會去做的一件事。
dubbo裏面有個監控中心,監控中心在啓動的時候去註冊中心訂閲整個生產者,消費者這樣一個目錄。
通過訂閲這個目錄,就可以查到所有的提供者和消費者的url。
這就是dubbo和zk做的事情。也就相當於你朋友,服務消費者,要去找你,服務提供者。那要知道你的地址在哪,這個時候你就要將你的地址向當地的居委會進行一個註冊,之後你的朋友,服務消費者,可以通過居委會,註冊中心,去找到你居住的一個信息,從而去找到你這個人。
這就是服務提供者,消費者,註冊中心的聯繫。
註冊中心除了保存這些信息,還得去看提供者是否還活着。通過心跳的機制,通過發送心跳包確認自己還活着。如果超過了10s沒有向註冊中心發送心跳包,那麼就認為服務提供者掛掉了,那麼還會去通知服務消費者這個服務不可用,那麼就會刪除提供者的信息。
這樣就可以幫助我們管理好我們的應用。
如果發生了變動,因為流量進來了,單純這幾個服務提供者很難扛得住了,那麼得去新啓動一些服務提供者。如果沒有註冊中心,那麼消費者全部得修改這個配置文件,那麼這段時間對外是終止服務的。
最後最常見的就是zk + dubbo作為註冊中心。