不少時候咱們單獨調用一個提供者是不能知足實際生產須要,這是咱們會考慮若干個相同業務邏輯的提供者服務部署在不一樣的服務器上,經過dubbo提供的負載均衡策略對其進行調用。html
咱們創建一個與以前章節提到過的相同的提供者(dubbo-ws-server)測試工程,只是對其dubbo-provider.xml進行修改,具體修改以下:java
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 提供方應用信息,用於計算依賴關係 --> <dubbo:application name="dubbo-provider2" /> <!-- 使用zookeeper註冊中心暴露服務地址 --> <dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}" file="${catalina.home}/dubbo-registry/dubbo-gw-service-user.properties"/> <!-- 用dubbo協議在20882端口暴露服務 --> <dubbo:protocol name="dubbo" port="20882" /> <bean id="userFacade" class="com.ws.server.UserFacadeImpl" /> <!-- 用戶服務接口 --> <dubbo:service interface="com.ws.facade.UserFacade" ref="userFacade" /> </beans>
修改了服務暴露地址端口20882,application名字叫dubbo-provider2.。spring
同時修改提供者的java代碼,以下:服務器
部署完工程以下:app
同時,咱們寫一個能不斷調用提供者服務的消費者服務,消費者代碼以下:負載均衡
package com.ws; //-------------------------------------------------------------------------- // Copyright (c) 2010-2020, En.dennisit or Cn.蘇若�? // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // Neither the name of the dennisit nor the names of its contributors // may be used to endorse or promote products derived from this software // without specific prior written permission. // Author: dennisit@163.com | dobby | 蘇若�? //-------------------------------------------------------------------------- import com.ws.entity.User; import com.ws.facade.UserFacade; import java.io.IOException; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * Description: com.ws.client * Author dobby | dennisit@163.com * Date 2015/5/30 23:50 * Copyright Corporation 2015.05 * Version 1.0 */ public class ConsumerClient { public static void main(String[] args)throws Exception{ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml"); for(int i = 0 ; i < 500 ; i++){ UserFacade userFacade = (UserFacade) context.getBean("userFacadeClient"); System.out.println("insert:" + userFacade.insert(new User())); System.out.println("delete:" + userFacade.delete(1)); User user = userFacade.select(1); System.out.println("select:" + user.getName()); } try { System.in.read();//讓此程序一直跑 } catch (IOException e) { e.printStackTrace(); } //context.start(); } }
運行後調用結果以下:ide
delete:1 select:zhangssan insert:1 delete:1 select:zhangssan insert:1 delete:1 select:zhangssan insert:1 delete:1 select:zhangssan insert:1 delete:1 select:lbserver insert:1 delete:1 select:zhangssan insert:1 delete:1 select:lbserver insert:1 delete:1 select:zhangssan insert:1 delete:1 select:zhangssan insert:1 delete:1 select:lbserver insert:1 delete:1 select:lbserver insert:1 delete:1 select:zhangssan insert:1 delete:1 select:lbserver insert:1 delete:1 select:zhangssan insert:1 delete:1 select:zhangssan insert:1 delete:1 select:zhangssan insert:1 delete:1 select:lbserver insert:1 delete:1 select:zhangssan insert:1 delete:1 select:lbserver insert:1 delete:1 select:lbserver insert:1 delete:1 select:zhangssan insert:1 delete:1 select:lbserver insert:1 delete:1 select:zhangssan insert:1 delete:1 select:zhangssan insert:1 delete:1 select:zhangssan insert:1 delete:1 select:lbserver insert:1 delete:1 select:zhangssan insert:1 delete:1 select:lbserver insert:1 delete:1 select:lbserver insert:1 delete:1 select:lbserver insert:1 delete:1 select:lbserver insert:1 delete:1 select:zhangssan insert:1 delete:1 select:zhangssan insert:1 delete:1 select:lbserver insert:1 delete:1 select:lbserver insert:1 delete:1 select:zhangssan insert:1 delete:1 select:lbserver insert:1 delete:1 select:lbserver
從結果能夠看出,兩個提供者服務因爲暴露的服務相同,並且咱們沒有調整他們的權值,基本是被均勻地調用,想對這塊有深刻理解的,能夠參考這片文章,我的以爲寫得還算詳細,地址以下:測試
http://www.cnblogs.com/hd3013779515/p/6896942.htmlthis