Dubbo入门实战篇

创建MAVEN项目

项目结构:
主要分三大模块:
dubbo-api : 存放定义的服务接口;
dubbo-consumer : 服务消费者;
dubbo-provider : 服务提供者(也是服务接口实现者)

在这里插入图片描述

公共依赖pom.xml



  4.0.0
  dubbo
  dubbo
  1.0.0
  pom
  this is fist dubbo demo
  
    dubbo-consumer
    dubbo-provider
    dubbo-api
  
  
  
    1.8
    1.8
    UTF-8
    UTF-8
    
    4.2.5.RELEASE
    
    3.2.8
    
    5.1.29
    
    1.7.18
    1.2.17
  
  
  
      
      junit
      junit
      3.8.1
      test
    
    
    
      jstl
      jstl
      1.2
    
    
      javax
      javaee-api
      7.0
    
    
    
      junit
      junit
      4.11
      
      test
    
    
    
      org.springframework
      spring-core
      ${spring.version}
    
    
      org.springframework
      spring-web
      ${spring.version}
    
    
      org.springframework
      spring-oxm
      ${spring.version}
    
    
      org.springframework
      spring-tx
      ${spring.version}
    
    
      org.springframework
      spring-jdbc
      ${spring.version}
    
    
      org.springframework
      spring-webmvc
      ${spring.version}
    
    
      org.springframework
      spring-context
      ${spring.version}
    
    
      org.springframework
      spring-context-support
      ${spring.version}
    
    
      org.springframework
      spring-aop
      ${spring.version}
    
    
      org.springframework
      spring-test
      ${spring.version}
    
    
    
      org.mybatis
      mybatis
      ${mybatis.version}
    
    
    
      org.mybatis
      mybatis-spring
      1.2.2
    
    
    
      mysql
      mysql-connector-java
      ${mysql-driver.version}
    
    
    
      commons-dbcp
      commons-dbcp
      1.2.2
    
    
    
      com.alibaba
      fastjson
      1.2.22
    
    
    
      log4j
      log4j
      ${log4j.version}
    
    
      org.slf4j
      slf4j-api
      ${slf4j.version}
    
    
      org.slf4j
      slf4j-log4j12
      ${slf4j.version}
    
    
    
    
      org.codehaus.jackson
      jackson-mapper-asl
      1.9.13
    
    ;
    
      com.fasterxml.jackson.core
      jackson-core
      2.8.0
    
    ;
    
      com.fasterxml.jackson.core
      jackson-databind
      2.8.0
    
    
      commons-fileupload
      commons-fileupload
      1.3.1
    
    
      commons-io
      commons-io
      2.4
    
    
      commons-codec
      commons-codec
      1.9
    
    
      org.quartz-scheduler
      quartz
      2.2.1
    
    
      org.apache.shiro
      shiro-core
      1.3.2
    
    
      org.apache.shiro
      shiro-web
      1.3.2
    
    
      org.apache.shiro
      shiro-spring
      1.3.2
    
    
      org.apache.shiro
      shiro-ehcache
      1.3.2
    
    
      org.apache.zookeeper
      zookeeper
      3.4.9
    
    
    
      com.alibaba
      dubbo
      2.5.3
      
        
          org.springframework
          spring
        
      
    
    
      com.101tec
      zkclient
      0.10
    
  
  
  
    dubbo
  

下面,我为大家具体讲解三个子项目。

1、服务接口dubbo-api

pom.xml



  4.0.0
  
    dubbo
    dubbo
    1.0.0
  
  dubbo
  dubbo-api
  1.0.0
  dubbo-api
  http://maven.apache.org
  
    UTF-8
  
  
    
      junit
      junit
      3.8.1
      test
    
  

DemoService.java

package com.dubbo.api.demo;
/**
 * 
* @ClassName: DemoService
* @Description: 定义服务接口
* @author chenqi
* @date 2018年10月4日
*
 */
public interface DemoService {
    
    String helloDubbo(String str);
}

2、 服务提供者(也是服务接口实现者)dubbo-provider

pom依赖



  4.0.0
  
    dubbo
    dubbo
    1.0.0
  
  
  dubbo-provider
  dubbo-provider
  服务提供者
  http://maven.apache.org
  
  
    UTF-8
  
  
  
      
    
    
      dubbo
      dubbo-api
      ${project.version}
    
  
    
      junit
      junit
      3.8.1
      test
    
  
  

配置文件provider.xml



    
    
    
    
    
    
    
    
    
    

服务接口实现类(用于提供服务)
实现服务接口,此实现对消费者隐藏

package com.dubbo.provider.demo;
import com.dubbo.api.demo.DemoService;
/**
 * 
* @ClassName: DemoServiceImpl
* @Description: 服务接口实现类(用于提供服务)
* @author chenqi
* @date 2018年10月4日
*
 */
public class DemoServiceImpl implements DemoService {
    
    /**
     * 实现  DemoService  中的 helloDubbo 接口
     */
    public String helloDubbo(String str) {
        return "hello " + str;
    }
}

服务启动类

package com.dubbo.provider.demo;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.io.IOException;
/**
 * 
* @ClassName: Provider
* @Description: 服务启动类
* @author chenqi
* @date 2018年10月4日
*
 */
public class ProviderApplication {
    
    public static void main(String[] args) throws IOException {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("provider.xml");
        System.out.println(context.getDisplayName() + ": here");
        context.start();
        System.out.println("服务已经启动...");
        System.in.read();
    }
}

3、服务消费者dubbo-consumer

pom依赖



  4.0.0
  
    dubbo
    dubbo
    1.0.0
  
  
  dubbo-consumer
  dubbo-consumer
  服务消费者
  http://maven.apache.org
  
  
    UTF-8
  
  
  
  
      
    
      dubbo
      dubbo-api
      ${project.version}
    
    
    
      junit
      junit
      3.8.1
      test
    
  
  

配置文件consumer.xml
通过Spring配置引用远程服务:



    
    
    
    
    

测试服务消费者获取服务接口

package com.dubbo.consumer.demo;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dubbo.api.demo.DemoService;
/**
 * 
* @ClassName: ConsumerTest
* @Description: 测试服务消费者获取服务接口
* @author chenqi
* @date 2018年10月7日
*
 */
public class ConsumerTest {
    public static void main(String[] args) {
        //测试常规服务
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("consumer.xml");
        context.start();
        System.out.println("consumer start");
        DemoService demoService = context.getBean(DemoService.class);
        System.out.println("consumer");
        System.out.println(demoService.helloDubbo("dubbo"));
    }
}

OK,下面我们依次启动服务提供者和服务消费者,注意确保provider已被运行后再启动consumer
启动服务提供者:
在这里插入图片描述
启动报了点错误,暂时忽略。

运行消费者进行测试:
在这里插入图片描述

可以看到,消费者成功调用提供者所提供的远程服务。当然,这只是一个模拟的项目,实际中有多提供者多消费者情况,比这要复杂的多,当然只有这样才能体现dubbo的特性。

Dubbo管理控制台介绍

管理控制台功能

路由规则,动态配置,服务降级
访问控制,权重调整
负载均衡
在这里插入图片描述

网上自行下载dubbo-admin,下载后是一个war包,直接放到tomcat安装目录的webapps目录下,然后启动tomcat即可
在这里插入图片描述

在这里插入图片描述

浏览器访问:http://localhost:28080/dubbo-admin/
输入用户名密码 root

在这里插入图片描述

查看服务提供者

在这里插入图片描述

查看服务消费者
在这里插入图片描述

你可能感兴趣的:(dubbo)