1. 程式人生 > >7、Dubbo-配置(2)

7、Dubbo-配置(2)

ted 進行 trie 2.0 clas http 程序 info @override

重試次數

通常配合timeout超時設置進行配置

技術分享圖片

     <dubbo:reference interface="com.cr.service.UserService"  id="userService"  timeout="2000">
     </dubbo:reference>

技術分享圖片

     <dubbo:service interface="com.cr.service.UserService"  ref="userServiceImpl">
          <dubbo:method name="getUserAddressList
" timeout="4000"></dubbo:method> </dubbo:service>
此時是報錯的!!!

技術分享圖片

retries:默認會執行一次 retries="3"時會執行4次

進行測試

public class UserServiceImpl  implements UserService {
     @Override
     public List<UserAddress> getUserAddressList(String userId)  {
           System.
out.println("正在執行請求!!!"); UserAddress address1 = new UserAddress(1, "安徽合肥蜀山區", "2", "程老師", "", "12345"); UserAddress address2 = new UserAddress(2, "安徽合肥包河區", "2", "程老師", "", "12345"); List<UserAddress> list = new ArrayList<UserAddress>(); list.add(address2); list.add(address1);
try { Thread.sleep(4000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } }

技術分享圖片

<dubbo:reference interface="com.cr.service.UserService"  id="userService" 
     timeout="1000" retries="3"> </dubbo:reference>

技術分享圖片

     <!-- 4、暴露服務 -->   
     <!-- interface是只想接口,ref屬性是指定接口的實現 -->   
     <dubbo:service interface="com.cr.service.UserService"  ref="userServiceImpl">
      <dubbo:method name="getUserAddressList"  timeout="4000"></dubbo:method>
     </dubbo:service>  

此時進行測試: 打印了四次:

技術分享圖片

重試了四次才進行連接成功:

技術分享圖片

如果服務端口多的話,會重試進行其他提供者的服務進行連接

<dubbo:protocol name="dubbo" port="20080"></dubbo:protocol>       
     
<dubbo:protocol name="dubbo" port="20081"></dubbo:protocol>     
     <!-- 4、暴露服務 -->   
     <!-- interface是只想接口,ref屬性是指定接口的實現 -->   
     <dubbo:service interface="com.cr.service.UserService"  ref="userServiceImpl">
      <dubbo:method name="getUserAddressList"  timeout="4000"></dubbo:method>
     </dubbo:service>  

冪等可以設置重試次數(查詢、刪除、修改) 非冪等不可以進行重試次數(新增) retries=0代表不重試

多版本

技術分享圖片

當一個接口實現,出現不兼容升級時,可以用版本號過渡,版本號不同的服務相互間不引用。 可以按照以下的步驟進行版本遷移:
  1. 在低壓力時間段,先升級一半提供者為新版本
  2. 再將所有消費者升級為新版本
  3. 然後將剩下的一半提供者升級為新版本

測試:

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

     <dubbo:service interface="com.cr.service.UserService"  ref="userServiceImpl" version="1.0.0">
          <dubbo:method name="getUserAddressList"  timeout="4000"></dubbo:method>
     </dubbo:service>  
     <bean id="userServiceImpl"   class="com.cr.service.impl.UserServiceImpl"></bean>       
            
            
     <dubbo:service interface="com.cr.service.UserService"  ref="userServiceImpl2" version="2.0.0">
          <dubbo:method name="getUserAddressList"  timeout="4000"></dubbo:method>
     </dubbo:service>  
     <bean id="userServiceImpl2"   class="com.cr.service.impl.UserServiceImpl2"></bean>    

技術分享圖片

 <dubbo:reference interface="com.cr.service.UserService"  id="userService" 
      timeout="1000" retries="3" version="1.0.0"> </dubbo:reference>

此時的測試結果:

主程序重試未成功連接:

技術分享圖片

服務提供者打印:

技術分享圖片

如果消費者中version=“*”代表任意的

技術分享圖片

技術分享圖片

7、Dubbo-配置(2)