講解前,先說一下整個系統框架的基本構造:
zookeeper作為注冊中心,使用單獨服務器,占用2181埠;dubbo-admin作為監控中心,與zookeeper使用相同服務器,tomcat部署占用8080埠;provider作為服務提供者,使用單獨服務器,tomcat部署占用8080埠,使用dubbo協議開放20880埠;consumer作為服務消費者,使用單獨服務器,tomcat部署占用8080埠;
疑惑:
provider服務器埠是8080,為什么telnet測驗以及解決方案中開放的埠卻是20880?- 要說
dubbo協議開放了20880埠,那8080埠應該也開放啊? zookeeper、provider、consumer之間埠開放和屏蔽情況到底是怎么回事?
帶著這些問題,博主進行了相關驗證,最終得出如下結論,先看圖,再解釋:
- 用
dubbo協議在20880埠暴露服務
在提供者的dubbo組態檔中,一般都配置了<dubbo:protocol name="dubbo" port="20880"/>,表明用dubbo協議在20880埠暴露服務,當然如果你不配置,dubbo默認使用20880埠暴露服務,所有消費者都是通過20880埠進行服務呼叫,對于消費者而言,提供者服務器8080埠是透明的,也就是說提供者服務器埠號可以任意改變,服務也不會有任何影響,消費者無需關心,
從監控中心可以看到如圖:
除了在指定埠上暴露服務之外,還可以在指定ip上暴露服務,配置如下:
<dubbo:protocol name="dubbo" host="10.1.22.2" port="20880" />
- 埠開放情況
zookeeper作為注冊中心,provider提供服務、consumer訂閱服務、dubbo-admin管理監控服務,所以zookeeper注冊中心的2181埠需要向provider、consumer、dubbo-admin開放;
一般情況下,dubbo-admin監控中心與zookeeper注冊中心部署在相同的服務器上,zookeeper可以不考慮埠開放給dubbo-admin的情況;
consumer訂閱服務,即拿到了provider在20880埠暴露的服務,當consumer請求服務時,直接從consumer跳到provider,而不是consumer到zookeeper再到provider,所以provider的20880無需開放給zookeeper;
同理,provider回應服務時,也是直接從provider到consumer,而不是provider到zookeeper再到consumer,所以consumer的8080無需開放給zookeeper;
zookeeper注冊中心是完全被動的,
總結
-
zookeeper的2181埠開放給provider、consumer、dubbo-admin; -
provider的20880開放給所有consumer,但8080服務器埠可以完全屏蔽; -
consumer的8080開放給所有provider; -
dubbo-admin的8080開放給管理員用戶,便于通過瀏覽器監控注冊中心服務的情況; -
注冊中心只負責
服務注冊和目錄發布,安全授權,實際的服務訪問仍然是兩個組件之間的點對點連接完成,這種方式下整個架構下獲取更高的性能,同時服務管理平臺也不容易成為大并發服務訪問下的單點瓶頸,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/267504.html
標籤:其他
上一篇:階段性學習總結
下一篇:后端技術階段性學習總結
