dubbo基于Zookeeper实现分布式实例

实例Demo

1 安装ZooKeeper

1.1 下载 http://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/   ,这里选择版本3.4.8

1.2 解压到一个目录下(D:\zookeeper-3.3.6)打开conf文件夹,拷贝zoo_sample.cfg文件,并重命名为zoo.cfg(必须是这个名字)。打开zoo.cfg修改配置如下:


tickTime:心跳时间,为了确保连接存在的,以毫秒为单位,最小超时时间为两个心跳时间

initLimit:多少个心跳时间内,允许其他server连接并初始化数据,如果ZooKeeper管理的数据较大,则应相应增大这个值

clientPort:服务的监听端口:后面的Dubbo配置管理与此端口保持一致。

dataDir:用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里(注意:一个配置文件只能包含一个dataDir字样,即使它被注释掉了。)

dataLogDir:用于单独设置transaction log的目录,transaction log分离可以避免和普通log还有快照的竞争

syncLimit:多少个tickTime内,允许follower同步,如果follower落后太多,则会被丢弃。

集群配置使用 

server.A=B:C:D:

A是一个数字,表示这个是第几号服务器,B是这个服务器的ip地址

C第一个端口用来集群成员的信息交换,表示的是这个服务器与集群中的Leader服务器交换信息的端口

D是在leader挂掉时专门用来进行选举leader所用。


1.3 找到bin目录下的zkServer.cmd,启动zookeeper.

2 安装 dubbo-admin 用于管理dubbo

2.1 下载dubbo-master  https://github.com/alibaba/dubbo

2.2 编译打包:进入admin-master/dubbo-admin/目录,调出命令行,运行maven命令:mvn clean install -Dmaven.test.skip=true,成功后在target目录下找到war包。

2.3 将war包放入tomcat(注意端口冲突)的webapps目录下,运行startup.bat解压war包后,在解压后的dubbo-admin的WEB-INF目录下打开dubbo.properties配置文件

 

这里本机使用2181端口,不需要修改。

3.3 启动tomcat,输入tomcat的访问网址http://localhost:8888/dubbo-admin-2.8.4/,root用户登录,密码root




3 创建公共接口项目 DemoService

3.1  创建Maven Project


3.2 在DemoService中新建 DemoService接口



3.3 将DemoService安装到本地Maven库,项目右键 -> Run As-> Maven install ,这里需注意Jdk的版本,项目右键 -> Build Path -> Configure Build Path -> Libralies .jdk版本要保持一致。

4 创建2个Maven Project ,proverder01和proverder02

4.1 proverder需要引入DemoService依赖,需要引入Dubbo,ZooKeeper,log4,spring依赖。Dubbo自带spring依赖,版本旧需手动移除。下面给出一个pom实例


<dependencies>
	<!—引入DemoService-->
		<dependency>
			<groupId>com.test</groupId>
			<artifactId>DemoService</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>4.3.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>4.3.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>4.3.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>4.3.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>4.3.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<version>2.5.3</version>
			<exclusions>
				<exclusion>
					<groupId>org.springframework</groupId>
					<artifactId>spring</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.jboss.netty</groupId>
					<artifactId>netty</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>3.4.8</version>
		</dependency>

		<!-- 日志相关 -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.16</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.5</version>
		</dependency>

		<!-- zookeeper client依赖,用于向zookeeper注册服务 -->
		<dependency>
			<groupId>com.github.sgroschupf</groupId>
			<artifactId>zkclient</artifactId>
			<version>0.1</version>0
		</dependency>

	</dependencies>
	<build>  
        <finalName>provider01</finalName>  
</build>

4.2 provider提供者需要实现公共接口以向消费者提供服务。Provider01与provider02实现时可以在内容上有所区别:


4.3 增加项目所需配置文件,在classpath目录下新建3个配置文件:applicationContext.xml(Spring配置文件),log4.properties,provider.xml(dubbo提供者配置文件,重要)


 4.3.1 ApplicationContext.xml(provider01与provider02一样)

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"  
    xmlns:tx="http://www.springframework.org/schema/tx"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd  
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd   
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd   
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">  
      
    <import resource="classpath*:/provider.xml" />  
      
</beans>
4.3.2   log4.properties(provider01与provider02一样)

log4j.appender.mylog = org.apache.log4j.ConsoleAppender    
log4j.appender.mylog.target = System.out   
log4j.appender.mylog.layout= org.apache.log4j.PatternLayout    
log4j.appender.mylog.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n    
log4j.appender.my2log = org.apache.log4j.RollingFileAppender    
log4j.appender.my2log.File = D://Logger//mylog.log    
log4j.appender.my2log.MaxFileSize = 50KB    
log4j.appender.my2log.MaxBackupIndex = 1    
log4j.appender.my2log.layout= org.apache.log4j.PatternLayout     
log4j.appender.my2log.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n    
log4j.rootLogger = info,mylog,my2log
4.3.3  Provider.xml文件,dubbo的配置文件,需要注意暴露服务的端口,在同一台机器上暴露不同的端口。

Provider01:

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://code.alibabatech.com/schema/dubbo        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">  
   
    <!-- 提供方应用信息,用于计算依赖关系 -->  
    <dubbo:application name="provider"  />  
   
    <!-- 使用zookeeper广播注册中心暴露服务地址 ,与zookeeper的clientPort端口一致-->  
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>  
   
    <!-- 用dubbo协议在20881端口暴露服务 -->  
    <dubbo:protocol name="dubbo" port="20881" />
     
    <!-- 和本地bean一样实现服务 -->  
    <bean id="demoService" class="com.test.service.DemoServiceImpl" /> 
 
    <dubbo:service interface="com.test.service.DemoService" ref="demoService" />  
   
</beans> 

Provider02:

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://code.alibabatech.com/schema/dubbo        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">  
   
    <!-- 提供方应用信息,用于计算依赖关系 -->  
    <dubbo:application name="provider"  />  
   
    <!-- 使用zookeeper广播注册中心暴露服务地址 ,与zookeeper的clientPort端口一致-->  
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>  
   
    <!-- 用dubbo协议在20882端口暴露服务 -->  
    <dubbo:protocol name="dubbo" port="20882" />
     
    <!-- 和本地bean一样实现服务 -->  
    <bean id="demoService" class="com.test.service.DemoServiceImpl" /> 
 
    <dubbo:service interface="com.test.service.DemoService" ref="demoService" />  
   
</beans>  

4.3.4  配置web.xml文件(provider01和provider02一样)

<context-param>  
        <param-name>contextConfigLocation</param-name>  
        <param-value>classpath*:applicationContext.xml</param-value>  
    </context-param>  
    <listener>  
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    </listener>  
  
    <!--springframework 的Log4jConfigListener使用的配置文件 开始 -->
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value> /WEB-INF/classes/log4j.properties</param-value>
    </context-param>
    <context-param>
        <param-name>log4jRefreshInterval</param-name>
        <param-value>60000</param-value>
    </context-param>
    <listener>
        <listener-class>
		    org.springframework.web.util.Log4jConfigListener
	    </listener-class>
    </listener> 
    <!--springframework 的Log4jConfigListener使用的配置文件 结束 -->
    
  	<!--框架 字符编码 使用的拦截器 配置开始-->
  	<!--这个配置对Spring 的MVC结构是不起作用的-->
	<filter>
	    <filter-name>encodingFilter</filter-name>
	        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
	    <init-param>
	        <param-name>encoding</param-name>
	        <param-value>utf-8</param-value>
	    </init-param>
	</filter>
	<filter-mapping>
	    <filter-name>encodingFilter</filter-name>
	    <url-pattern>/*</url-pattern>
	</filter-mapping>
  	<!--框架 字符编码 使用的拦截器 配置结束-->  
  
  
    <!-- 设置tomcat对静态资源默认拦截 -->  
    <servlet-mapping>  
        <servlet-name>default</servlet-name>  
        <url-pattern>*.jpg</url-pattern>  
    </servlet-mapping>  
    <servlet-mapping>  
        <servlet-name>default</servlet-name>  
        <url-pattern>*.png</url-pattern>  
    </servlet-mapping>  
    <servlet-mapping>  
        <servlet-name>default</servlet-name>  
        <url-pattern>*.js</url-pattern>  
    </servlet-mapping>  
    <servlet-mapping>  
        <servlet-name>default</servlet-name>  
        <url-pattern>*.css</url-pattern>  
    </servlet-mapping>  
    <!-- 关键配置 dispatcherServlet -->  
    <!-- 拦截所有的请求,包括静态资源 -->  
    <servlet>  
        <servlet-name>springmvc</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <init-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>classpath*:springmvc-servlet.xml</param-value>  
        </init-param>  
        <load-on-startup>1</load-on-startup>  
</servlet>

这里需要注意的是:2个provider的应用名,服务名保持一样,因为模拟集群负载均衡,模拟一个服务。2个provider的端口需不一样,因为是同一台机子模拟2个服务,如果是多台就无所谓了。

4.4 将provider01和provider02分别放入到两个tomcat里。启动!查看dubbo-admin发现:有一个服务,DemoServcie,一个应用Provider,两个提供者。






5 创建一个消费者 consumer01

5.1 consumer01与Provider一样,需要依赖DemoService,dubbo,spring,log4j,zookeeper依赖。下面给出一个pom实例:

<properties>
		<spring.version>4.3.9.RELEASE</spring.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>com.test</groupId>
			<artifactId>DemoService</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<version>2.5.3</version>
			<exclusions>
				<exclusion>
					<artifactId>spring</artifactId>
					<groupId>org.springframework</groupId>
				</exclusion>
				<exclusion>
					<groupId>org.jboss.netty</groupId>
					<artifactId>netty</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<!-- spring begin -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>4.3.11.RELEASE</version>
		</dependency>

		<!-- spring end -->
		<dependency>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
			<version>1.2</version>
		</dependency>
		<!-- web jar -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.0.1</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.1.2</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>javax.servlet.jsp-api</artifactId>
			<version>2.3.1</version>
			<scope>provided</scope>
		</dependency>
		<!-- jstl jar -->
		<dependency>
			<groupId>jstl</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
		<dependency>
			<groupId>taglibs</groupId>
			<artifactId>standard</artifactId>
			<version>1.1.2</version>
		</dependency>

		<!-- 日志相关 -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.16</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.5</version>
		</dependency>

		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>3.4.8</version>
		</dependency>
		<!-- zookeeper client依赖,用于向zookeeper注册服务 -->
		<dependency>
			<groupId>com.github.sgroschupf</groupId>
			<artifactId>zkclient</artifactId>
			<version>0.1</version>
		</dependency>
	</dependencies>
	<build>
		<finalName>consumer01</finalName>
	</build>

5.2 添加配置文件,在classpath目录下新建4个配置文件:applicationContext.xml(Spring配置文件),springmvc-servlet.xml,log4.properties,consumer.xml(dubbo提供者配置文件,重要)

Application.xml:

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"  
    xmlns:tx="http://www.springframework.org/schema/tx"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd  
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd   
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd   
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">  
      
    <import resource="classpath*:/consumer.xml" />  
      
</beans>  

springmvc-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:mvc="http://www.springframework.org/schema/mvc"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans-4.3.xsd      
http://www.springframework.org/schema/context    http://www.springframework.org/schema/context/spring-context-4.3.xsd   
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"  
    default-lazy-init="true">  
  
    <!-- 启用注解 -->  
    <context:annotation-config />  
  
    <!-- 扫描Controller -->  
    <context:component-scan base-package="com.test.controller" />  
    <!-- 完成请求与注解的POJO映射 -->  
    <bean  
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />  
    <bean  
        class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />  
          
          
    <bean id="defaultViewResolver"  
        class="org.springframework.web.servlet.view.InternalResourceViewResolver"  
        p:order="3">  
        <property name="viewClass"  
            value="org.springframework.web.servlet.view.JstlView" />  
        <property name="contentType" value="text/html" />  
        <property name="prefix" value="/" />  
        <property name="suffix" value=".jsp" />  
    </bean>  
</beans>

log4j.xml

log4j.appender.mylog = org.apache.log4j.ConsoleAppender    
log4j.appender.mylog.target = System.out   
log4j.appender.mylog.layout= org.apache.log4j.PatternLayout    
log4j.appender.mylog.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n    
log4j.appender.my2log = org.apache.log4j.RollingFileAppender    
log4j.appender.my2log.File = D://Logger//mylog.log    
log4j.appender.my2log.MaxFileSize = 50KB    
log4j.appender.my2log.MaxBackupIndex = 1    
log4j.appender.my2log.layout= org.apache.log4j.PatternLayout     
log4j.appender.my2log.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n    
log4j.rootLogger = info,mylog,my2log
Consumer.xml

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://code.alibabatech.com/schema/dubbo        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">  
   
    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->  
    <dubbo:application name="consumer01"  />  
   
    <!-- 使用zookeeper广播注册中心暴露服务地址 -->  
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>  
   
    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->  
    <dubbo:reference id="demoService" interface="com.test.service.DemoService" />  
   
</beans>

配置web.xml文件

<!-- 关键配置 contextListener -->  
    <context-param>  
        <param-name>contextConfigLocation</param-name>  
        <param-value>classpath*:applicationContext.xml</param-value>  
    </context-param>  
    <listener>  
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    </listener>  
    <!-- log4 -->  
    <context-param>  
        <param-name>log4jConfigLocation</param-name>  
        <param-value>classpath:log4j.properties</param-value>  
    </context-param>  
  
    <context-param>  
        <param-name>log4jRefreshInterval</param-name>  
        <param-value>3000</param-value>  
    </context-param>  
    <listener>  
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>  
    </listener>  
      
    <!-- 字符过滤器 -->  
    <filter>  
        <filter-name>encodingFilter</filter-name>  
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
        <init-param>  
            <param-name>encoding</param-name>  
            <param-value>UTF-8</param-value>  
        </init-param>  
    </filter>  
    <filter-mapping>  
        <filter-name>encodingFilter</filter-name>  
        <url-pattern>/</url-pattern>  
    </filter-mapping>  
  
  
    <!-- 设置tomcat对静态资源默认拦截 -->  
    <servlet-mapping>  
        <servlet-name>default</servlet-name>  
        <url-pattern>*.jpg</url-pattern>  
    </servlet-mapping>  
    <servlet-mapping>  
        <servlet-name>default</servlet-name>  
        <url-pattern>*.png</url-pattern>  
    </servlet-mapping>  
    <servlet-mapping>  
        <servlet-name>default</servlet-name>  
        <url-pattern>*.js</url-pattern>  
    </servlet-mapping>  
    <servlet-mapping>  
        <servlet-name>default</servlet-name>  
        <url-pattern>*.css</url-pattern>  
    </servlet-mapping>  
    <!-- 关键配置 dispatcherServlet -->  
    <!-- 拦截所有的请求,包括静态资源 -->  
    <servlet>  
        <servlet-name>springmvc</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <init-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>classpath*:springmvc-servlet.xml</param-value>  
        </init-param>  
        <load-on-startup>1</load-on-startup>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>springmvc</servlet-name>  
        <url-pattern>/</url-pattern>  
</servlet-mapping>

5.3 新建一个TestController类



package com.test.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.test.service.DemoService;

@Controller
public class TestController {
	
	@Autowired
	private DemoService demoService;
	
	@RequestMapping("/test/demo")
	public String testDemo() {
		return "consumer01 : "+demoService.sayHello();
	}

}

5.4 将cosumer01放入一个tomcat中,启动后,查看dubbo-admin



访问消费者服务后应会出现两种情况:

consumer01 : this is Provider01

consumer01 : this is Provider02


最近项目中用到dubbo框架,在此记录一下。参照博客:点击打开链接





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值