不少时候咱们单独调用一个提供者是不能知足实际生产须要,这是咱们会考虑若干个相同业务逻辑的提供者服务部署在不一样的服务器上,经过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