依賴容器(Tomcat)git
使用main方法web
使用內置的main方法spring
配置控制檯api
查看maven的版本信息安全
執行源碼的編譯和打包操做服務器
最後編譯結果爲以下,表示成功了。app
部署dubbo管控臺負載均衡
一、在打包後的application.properties文件中修改對應配置信息dom
二、部署dubbo控制檯異步
經過localhost:7001 訪問控制檯 (默認帳號和密碼相同)
配置監控臺
一、找到這個目錄下面對應文件
二、解壓這個.gz文件,進行相應的配置
三、啓動監控臺(經過start.bat/start.sh啓動)
四、解決操做的過程的數據不可以顯示到監控臺的問題?
在每個服務的配置文件中添加一句配置
表示啓動的時候不作檢查依賴,主要用於服務的循環依賴的實例 check設置爲false,check默認爲true
dubbo (默認) ,長鏈接協議 【操做過程當中數據量比較小的傳輸】,不適用視頻,大文件等傳輸操做。
hessian 短鏈接協議(傳輸數據量比較大狀況,在項目開發中會針對不一樣流量來進行協議的設定)
一、引入依賴
<dependency>
<groupId>com.caucho</groupId>
<artifactId>hessian</artifactId>
<version>4.0.7</version>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<version>6.1.26</version>
</dependency>
二、在對應配置文件添加協議
<dubbo:protocol name="hessian" port="20999"/>
webservice
rmi
http
thirft
一個服務一個協議
一個服務多個協議
消費端指定不一樣的版本號
### RpcContext.getContext().getFuture(); 獲取異步對象
public static void main( String[] args ) throws InterruptedException, ExecutionException {
ApplicationContext
context = new ClassPathXmlApplicationContext("spring/application-consumer.xml");
ApiDemoTest demoTest = (ApiDemoTest) context.getBean("apiDemoTest");
String admin = demoTest.login("admin", "123");
Future<String> future = RpcContext.getContext().getFuture();
System.out.println("main:" + admin);
System.out.println("結果:"+future.get()); // 阻塞等待結果
System.out.println("=========");
}
ServiceConfig-> findConfigedHosts的源碼
PC: Gerry-PC:8080/ => 192.168.3.22:8080
一、在服務端的的配置中
二、在消費端經過在dubbo:references 配置以下:
場景: 註冊中心的服務只對內部服務提供訂閱,外部服務訂閱不了。
服務端配置:
RandomLoadBalance -> random 隨機負載均衡 (默認的)
RoundRobinLoadBalance -> roundrobin 輪詢負載均衡
LeastActiveLoadBalance -> leastactive 最小響應時間負載均衡
ConsistentHashLoadBalance -> consistenthash 一致性hash負載均衡
消費端配置負載均衡策略
一、建議開發的服務都設置重試次數和超時時間。
Failover cluster 失敗的時候將自動切換並重試其餘的服務器。經過 retries=2 來設置重試的次數
Failfast cluster 快速失敗,只發起一次調用;寫操做,好比新增記錄,非冪等請求。
Failsafe cluster 失敗安全,出現異常信息,直接忽略異常。主要用於日誌操做出現異常狀況。
Failback cluster 失敗自動恢復,後臺記錄失敗請求,定時重發這個信息(消息推送)
Forking cluster 並行調用多個服務,只要一個成功就返回,只應用在讀數據的時候。
BroadCast cluster 廣播調用全部服務提供者,逐個調用,只要有一個報錯就返回異常
消費端作以下的配置便可:
Dubbo源碼結構:
代碼示例: