dubbo 啟動端口連不上
系統無法連接啟動項,需要從新打開網絡連接設置,把主端口連接和系統文件進行綁定即可
dubbo消費者是項目啟動就注冊嗎
服務啟動注冊的是服務提供方,消費方一般會根據配置是否在服務啟動時檢查服務提供方服務狀態
springboot項目打包成war用tomcat運行好還是打包成jar直接啟動好為何
SpringBoot為我們提供了兩種打包的方式:jar和war,開發人員可以很方便地修改兩種打包方式,那么打包成哪種方式啟動比較好呢?
JarSpringBoo默認的打包方式就是jar,因為“約定優于配置”的原則,所以我們什么也不配置,打出來的包就是jar格式的,當然我們也可以在pom.xml中加上一行配置(我一般用maven)。
<packaging>jar</packaging>在<build>內配置打包的名稱,就完成了打包的配置:
最后執行打包命令即可:
mvncleanpackage打包完成后,在項目的target目錄下會生成一個jar包,也就是我們打包好的項目代碼了;SpringBoot打成的jar包和普通的jar包還是有一定區別的,關鍵就在于SpringBoot打成的jar包包含了自己所依賴的其他jar包,并且內置了容器,默認把Tomcat也打進了jar包(也可以換成jetty、undertow),我們可以直接運行這個jar包。
War要把代碼打成war包要分成以下幾個步驟:
1.修改pom.xml文件中的配置,將打包方式<packaging>設置成war;
2.排除內置的Tomcat容器,也就是不要把Tomcat包進來了;
3.修改入口方法,讓啟動類繼承SpringBootServletInitializer,并且覆蓋configure方法;或者單獨創建個類繼承這個類也行。
如果采用了war包部署,項目中配置文件中的一些配置將失效,比如port、servlet.context-path等;打完的包我們可以部署在Tomcat或其他的web容器中。
JarorWar首先表明,我是傾向于使用jar包部署的,我們項目也是這么做的。至于選擇哪種部署方式,可以考慮這幾點:
war包不排除Tomcat容器直接打包,我們甚至可以通過java-jarxxx.war的方式啟動,這種情況先不做考慮;打包成jar還是war,主要討論的是使用內置容器還是外置容器的問題;
如果項目中有使用JSP,那么使用war包部署會更方便一些,雖然我們也可以通過配置集成JSP通過jar包方式運行;新項目的話就不要用JSP了;
如果公司用的web容器不是Tomcat、Jetty或undertow,那就只能打成war包部署;
如果公司一直使用Tomcat部署,對于Tomcat本身的優化有一定的能力,有完善的腳本、工具什么的,可以考慮使用war包部署;
我比較傾向于jar包部署,使用SpringBoot的內置容器,還是因為這樣做,可以屏蔽(部分)運行環境的差異,開發人員開發出來的代碼,打包好部署在測試、生產環境,我們并不需要單位每個環境之間Tomcat的配置可能有所不同,導致我們的程序無法正常運行,這可以讓我們的交付能力變強。
所以有可能的話,可以嘗試使用docker,上面說到的屏蔽(部分)運行環境的差異,就變成了屏蔽(絕大部分)運行環境的差異了。
我將持續分享Java開發、架構設計、程序員職業發展等方面的見解,希望能得到你的關注。dubbo調用流程原理
步驟
1/7分步閱讀
服務容器Container負責啟動加載運行服務提供者Provider。根據Provider配置的文件根據協議發布服務,完成服務的初始化.
2/7
Provider在啟動時,根據配置中的Registry地址連接Registry,將Provider的服務信息發布到Registry,在Registry注冊自己提供的服務。
3/7
Consumer在啟動時,根據消費者XML配置文件中的服務引用信息,連接到Registry,向Registry訂閱自己所需的服務。
4/7
Registry根據服務訂閱關系,返回Provider地址列表給Consumer,如果有變更,Registry會推送最新的服務地址信息給Consumer。
5/7
Consumer調用遠程服務時,會根據路由策略,先從緩存的Provider地址列表中選擇一臺進行,跨進程調用服務,假如調用失敗,再重新選另一臺調用。
6/7
服務Provider和Consumer,會在內存中記錄調用次數和調用時間,每分鐘發送一次統計數據到Monitor。
7/7
這就是整個完整的Dubbo調用過程和原理