簡單描述這個過程:
生產者與消費者之間的供需關系僅憑這兩者很難有效維持,比如某個消費者掛掉了,而生產者并不知道,就會依然給掛掉的消費者提供內容,那么此時的內容明顯就是未獲取到的,從而出現輸出問題。或者,某個生產者掛了,消費者仍然去請求該生產者的內容,很顯然也是請求不到的。
為了讓兩者之間能夠正常溝通,構建一個代理,稱為注冊中心,注冊中心的作用就是用于分配消費信息到不同的生產者。
也就是構建一個第三方來進行管理:生產者一旦開始生產,就需要去注冊中心進行注冊,將其ip地址等有效請求信息存放在注冊表中,消費者從此之后不會在未建立連接時就去訪問生產者,而是先通過注冊中心,讓注冊中心去查找注冊表,讓消費者與某一個生產者進行匹配。匹配成功后,將對應的ip地址等連接信息給消費者,然后消費者再進行訂閱。
需要明確的是,一個消費者申請的內容(接口),可能會涉及多個生產者。比如某個模塊有多個生產者在進行維護,對應不同端口號。此時消費者去像注冊中心申請時,注冊中心會將這些端口號都交給消費者,消費者首先進行訂閱,并將其存表,自身根據負載均衡從表中選取一個生產者構建鏈接。
最后,生產者與注冊中心構建一個心跳協議,如果生產者掛掉了,注冊中心的表與某個訂閱該生產者的消費者維護表都會進行更新,從而不會錯誤的訪問這個掛掉的生產者。