Dubbo--HelloWorld

       上篇博客对Dubbo进行了大概的介绍,这篇博客介绍如何使用Dubbo,经典的HelloWorld

     通过上篇博客我们知道,在dubbo中有一个很重要的角色是注册中心,Dubbo现在支持的有三种方式:1.multicast2.zookeeper3.redis。下面的Demo使用的是multicast方式。

项目目录结构:

消费者:

Dubbo--HelloWorld_第1张图片

服务者:

Dubbo--HelloWorld_第2张图片

 

消费者端代码:

ConsumerThd.java

package com.tgb.klx.dubbo.consumer;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.tgb.klx.dubbo.server.HelloWorld;
public class ConsumerThd implements Runnable {
	public void run() {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
				new String[] { "applicationConsumer.xml" });
		context.start();
		HelloWorld helloWorld = (HelloWorld) context.getBean("demoService");
		String hello = helloWorld.hello("小康");
		System.out.println(hello);
	}
	public static void main(String[] args) {
		new Thread(new ConsumerThd()).start();
	}
}


applicationConsumer.xml


                                        
  
  
                                  
 


Pom.xml


4.0.0
com.tgb.klx
dubbo-Consumer-multicast
0.0.1-SNAPSHOT
dubbo-Consumer
 
 
    
      junit
      junit
      3.8.1
      test
    
    
            commons-logging
            commons-logging
            1.1.1
    
    
            com.alibaba
            dubbo
            2.5.3
    
    
            org.javassist
            javassist
            3.15.0-GA
    
    
            log4j
            log4j
            1.2.15
            

com.sun.jdmk
jmxtools


com.sun.jmx
jmxri


jms
javax.jms


mail
javax.mail


    

org.springframework
spring-context
4.1.6.RELEASE

    
            org.slf4j
            slf4j-api
            1.7.5
    
    
            org.slf4j
            slf4j-log4j12
            1.6.1
    
    
            com.github.adyliu
            zkclient
            2.0
    
    
            org.apache.zookeeper
            zookeeper
            3.3.6
    
  


 

服务端,即服务提供者端代码:

HelloWorld.java

package com.tgb.klx.dubbo.server;

public interface HelloWorld {

	public String hello(String name);
}


 

HelloWorldImpl.java

 

package com.tgb.klx.dubbo.server;

public class HelloWorldImpl implements HelloWorld{

	public String hello(String name) {
		name=name+"小康测试";
		return name;
	}

}

DubboProviderMain.java

package com.tgb.klx.dubbo.server;

import java.io.IOException;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class DubboProviderMain {

	public static void main(String[] args) throws IOException{
		
		ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext(
				new String[]{"applicationProvider.xml"});
		context.start();
		 System.out.println("Press any key to exit.");  
	     System.in.read();  
	}
}

 

applicationProvider.xml





        




Pom.xml


  4.0.0
  com.tgb.klx
  dubbo-Server-multicast
  0.0.1-SNAPSHOT
          

junit
junit
3.8.1
test


commons-logging
commons-logging
1.1.1


com.alibaba
dubbo
2.5.3


org.javassist
javassist
3.15.0-GA


log4j
log4j
1.2.15


com.sun.jdmk
jmxtools


com.sun.jmx
jmxri


jms
javax.jms


mail
javax.mail




org.springframework
spring-context
4.1.6.RELEASE

 

org.slf4j
slf4j-api
1.7.5


org.slf4j
slf4j-log4j12
1.6.1


org.apache.zookeeper
zookeeper
3.3.6


com.github.adyliu
zkclient
2.0


org.jboss.netty
netty
3.2.0.Final




运行结果:


 

       还有一种方式是将Zookeeper作为注册中心,需要下载并安装zookeeper。将配置文件中的注册中心修改为如下即可:


       其他代码不用修改,推荐使用zookeeper作为注册中心。如此可以通过Dubbo+注册中心实现分布式服务。服务消费者不用知道服务的具体位置,只要知道注册中心位置即可,消费者只要能消费,不用管消费的是哪的服务,服务提供方与服务消费方解耦。

       使用zookeeper注册中心,与dubbo结合,可以查看服务提供者和消费者的信息,将dubbo管理的war包部署到tomcat上,查看服务提供者,如下图:

部署Dubbo管理的war包到tomcat上,即可查看服务提供者与消费者信息。如下图:提供者:

Dubbo--HelloWorld_第3张图片

 

服务消费者,如下图:

Dubbo--HelloWorld_第4张图片

 

注:dubbo-admin.war部署在jdk1.8上会报错,使用1.7没有问题。

你可能感兴趣的:(分布式系统)