昨天在搭建dubbo+zookeeper項目時,兩次用同一個端口20880作為提供者,結果是端口號被占用。
網上得解決方法有很多:
方案1:是改dubboprovider.xml里端口號將20880改成別的端口比如如20881
方案2:直接關閉之前20880端口提供的服務,即重復使用20880
方案3:修改tomcat里server.xml里的屬性將
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">修改為:
<Host appBase="webapps" autoDeploy="false" deployOnStartup="false" name="localhost" unpackWARs="true">
但是以上方案都不太令我滿意,因為理論上同一個服務可以有多個提供者。於是去dubbo的官網尋找解決方法,還是找到了比較優雅的解決方式:
貼出截圖一張以供思考:
所以接下來目的已經很明確——將provider.xml里port=20880屬性值修改為-1
<dubbo:protocol name="dubbo" port="-1"></dubbo:protocol>
這樣可以解決同一個端口號占用的問題,而且同一個服務有多個提供者,再來一張效果圖:
可以看到端口號的確是從20880開始遞增,不過還有一點需要思考,就是這么多端口自動生成,該如何維護。如果您有更好的觀點,歡迎補充>>>