Dubbod的深入理解(3)

在这一篇主要讲解怎么配置运行一个dubbo程序(在此之前,大家首先去下载zookeeper注册中心,并且安装好,我这里用的是公司的注册中心IP)


首先是provider层的一些配置


Provider:


首先建立了一个maven项目,因为Dubbo需用Spring去加载Dubbo的配置即可,Dubbo基于SpringSchema扩展进行加载,所以

pom里面配置spring相关的配置


org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现

org.springframework.asm——spring2.5.6的时候需要asm jar包,spring3.0开始提供它自己独立的asm jar包

org.springframework.core——Spring的核心工具包,其他包依赖此包

org.springframework.beans——所有应用都用到,包含访问配置文件,创建和管理bean等,是Spring IOC的基础实现。

org.springframework.context——提供在基础IOC功能上的扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、

JNDI定位,EJB集成、远程访问、缓存以及多种视图层框架的支持。

org.springframework.expression——Spring表达式语言

还有dubbo的配置,用的dubbo版本是2.5.3版本

Zookeeper配置,用的是3.3.6版本


 pom文件代码

xml version="1.0" encoding="UTF-8"?>
xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4.0.0

    com.provider
    provider
    1.0-SNAPSHOT
    dubboserver
    http://maven.apache.org

    
        UTF-8
        3.1.4.RELEASE
        1.6.6
    

    
        
            junit
            junit
            3.8.1
            test
        
        
        
            org.springframework
            spring-aop
            ${spring.version}
        
        
            org.springframework
            spring-asm
            ${spring.version}
        
        
            org.springframework
            spring-core
            ${spring.version}
        
        
            org.springframework
            spring-beans
            ${spring.version}
        
        
            org.springframework
            spring-context
            ${spring.version}
        
        
            org.springframework
            spring-expression
            ${spring.version}
        
        
        
        
            log4j
            log4j
            1.2.16
        
        
            org.slf4j
            slf4j-api
            ${slf4j.version}
        
        
            org.slf4j
            slf4j-log4j12
            ${slf4j.version}
        
        
        
            com.alibaba
            dubbo
            2.5.3
        
        
        
            com.github.sgroschupf
            zkclient
            0.1
        
        
        
            org.apache.zookeeper
            zookeeper
            3.3.6
        
    

    
        dubbo-demo
        
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                2.1
                
                    1.5
                    1.5
                    UTF-8
                    false
                
            
            
        
    




然后呢配置ApplicationContext.xml的配置文件信息

Provider:

主要配置四个方面的东西,

(1)     具体的实现bean

(2)     提供方的应用信息,提供依赖关系

(3)     使用zookeeper注册中心暴露接口

(4)     用dubbo协议在某个端口暴露服务

(5)     声明需要暴露的服务接口


xml version="1.0" encoding="UTF-8"?>
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 ">
    
    id="testService" class="com.provider.dubbo.serviceImpl.TestServiceImpl" />
    
    <dubbo:application name="providerTest"  />
    
    <dubbo:registry address="zookeeper://IP地址" />
    
    <dubbo:protocol name="dubbo" port="20885" />
    
    <dubbo:service interface="com.provider.dubbo.service.TestService" ref="testService" />

然后就是提供者需要提供什么接口了

首先我定义了一个ServiceTest接口


package com.provider.dubbo.service;

/**
 * Created by WUYAO873 on 2017/8/14.
 */
public interface TestService {
 public String getName();
}


然后写出它的实现类ServceTestImpl


package com.provider.dubbo.serviceImpl;

import com.provider.dubbo.service.TestService;

import java.io.Serializable;

/**
 * Created by WUYAO873 on 2017/8/14.
 */
public class TestServiceImpl implements TestService,Serializable {


    public String getName() {
        return "我是提供者";
    }

}

最后建立了一个测试类TestServiceTest


package com.provider.dubbo;


import java.io.IOException;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * Created by WUYAO873 on 2017/8/14.
 */
public class TestServiceTest {

    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                new String[]{"applicationContext.xml"});
        context.start();

        System.out.println("提供服务者已经注册");
        try {
            System.in.read();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


这时候我们的提供者就配置好了



这个是整个provider结构图


Dubbod的深入理解(3)_第1张图片

下面我们配置消费者

Consumer:

消费者层的配置pom配置和提供者的配置类似(可以拷贝),只是增加了一个依赖包,依赖于providor的groupId,artifactId和Version.

 

然后基本的版本配置就是这样,接下来需要配置一些bean信息和zookeeper的信息,配置在applicationContxt.Xml里面

Consumer的ApplicationContext.xml文件


xml version="1.0" encoding="UTF-8"?>
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="consumer" />
    
    <dubbo:registry  protocol="zookeeper" address="zookeeper://ID地址" />
    
    <dubbo:reference id="testService" interface="com.provider.dubbo.service.TestService" />


接下来我们写一个测试类ConsumerServiceTest


package com.provider.dubbo.service;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

public class ConsumerServiceTest {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                new String[] { "applicationContext.xml" });
        context.start();
        TestService testService = (TestService) context.getBean("testService");
        System.out.println(testService.getName());
        try {
            System.in.read();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

这是整个Consumer的结构图

Dubbod的深入理解(3)_第2张图片

这样下来我们就配置好了,


接下来我们先要启动zookeeper注册中心,


然后启动我们的提供者provider的测试类TestServiceTest




这样呢,我们就已经把接口暴露在了注册中心,我们在消费者就可以拿到

这个时候我们就可以早zookeeper的注册中心查到自己注册的提供者

(1)Dubbod的深入理解(3)_第3张图片


(2)

Dubbod的深入理解(3)_第4张图片

也可以根据你在provider的配置文件里面的提供者应用名查询


Dubbod的深入理解(3)_第5张图片

运行消费者的ConsumerServiceTest类


Dubbod的深入理解(3)_第6张图片


运行成功,得到提供者的提供信息,


我这里用的zookeeper注册中心是用公司的IP地址,大家在需要的时候可以去官网下载安装

你可能感兴趣的:(dubbo学习)