Dubbo学习笔记(一)—— 创建一个简单的Dubbo入门项目演示HelloWorld

一、Dubbo简介

1、dubbo是什么?

▶ 一个分布式服务框架

▶ 一个RPC远程服务调用方案

▶ 一个SOA服务治理方案

2、dubbo架构图

Dubbo学习笔记(一)—— 创建一个简单的Dubbo入门项目演示HelloWorld_第1张图片

3、节点说明

Provider:暴露服务的服务提供方

Consumer:调用远程服务的服务消费方

Registry:发现并注册服务的服务注册中心

Monitor:统计服务调用次数和调用时间的监控中心

Container:服务的运行容器

4、调用流程说明

① 服务容器负责启动、加载、运行服务提供方;

② 服务提供方在启动时,向注册中心注册自己提供的服务;

③ 服务消费方在启动时,向注册中心订阅自己所要消费的服务;

④ 注册中心返回服务提供方的地址列表给服务消费方,如果有变更,注册中心将基于长连接推送变更数据给服务消费方;

⑤ 服务消费方从服务提供方的地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用;

⑥ 服务消费方和提供方,在内存中统计调用次数和调用时间,定时第一分钟发送统计数据到监控中心。

二、启动zookeeper作为dubbo的注册中心

        zookeeper是一个分布式的服务框架,是树型的目录服务的数据存储,能做到管理集群数据,dubbo与zookeeper一起可以做到集群部署,当服务提供方出现异常或断电停机时,zookeeper注册中心能自动删除提供者信息,当提供方重启时,能自动恢复注册数据,以及订阅请求。

没有安装zookeeper的可以参考:Zookeeper学习笔记(一)—— 在Linux下搭建Zookeeper服务器单机版

三、在Linux下部署dubbo的监控中心(方便查看服务提供方和消费方的情况)

1、下载dubbo-admin的war包

        之前dubbo还没有移交给apache时,在阿里巴巴的github上还可以找到dubbo-admin这个项目,我们只需要下载下来打成war包即可,但现在dubbo已经成为apache开源组织的一个顶级项目之一,在apache的github上不知道为什么找不到dubbo-admin这个项目了,所以这里推荐一个已经打包好的war包给大家下载,支持jdk8,下载地址: https://download.csdn.net/download/u010608720/9542675,如果没有积分的话也可以去我的github上去下载: https://github.com/Alexshi5/dubbo-demo

2、将war包上传到linux中然后部署到tomcat下面的webapps目录中,然后启动tomcat

如果还没有安装tomcat的可以参考: 学习笔记(二)—— 在Linux下搭建Tomcat服务器

[root@192 ~]# cp dubbo-admin-2.8.4.war /usr/local/tomcat9/webapps/

3、zookeeper和tomcat都启动后,在浏览器中访问监控中心

Dubbo学习笔记(一)—— 创建一个简单的Dubbo入门项目演示HelloWorld_第2张图片
如果无法访问的,先检查是不是linux的防火墙没关,然后再依次检查IP地址、端口号、项目名是否输入错误,账号密码都是root,登陆之后的页面如下图所示:
Dubbo学习笔记(一)—— 创建一个简单的Dubbo入门项目演示HelloWorld_第3张图片

四、创建dubbo项目

1、项目结构规划(为了简化demo,除了父项目打包方式为pom,其他三个子模块打包方式均为jar包,使用的maven原型为quickstart)

dubbo-parent:父项目

dubbo-api:存放所有公共接口的模块,服务提供方与服务消费方均依赖此模块

dubbo-provider:实现公共接口并提供服务的服务提供方所在模块

dubbo-consumer:消费服务的服务消费方所在的模块

下面只会给出关键代码,不会演示详细创建步骤,如果不知道怎么创建父子模块项目的请参考: Eclipse使用(十二)—— 创建Maven多模块(父子)项目演示Maven的聚合和继承以及模块之间的依赖关系

2、创建父项目dubbo-parent,pom文件内容如下

    
        UTF-8
        2.5.8
        3.4.6
        0.1
    
    
        
            
                com.alibaba
                dubbo
                ${dubbo.version}
            

            
                org.apache.zookeeper
                zookeeper
                ${zookeeper.version}
                pom
            

            
                com.github.sgroschupf
                zkclient
                ${zkclient.version}
            

        
    

3、创建子模块dubbo-api,pom文件如下:

    
        
            com.alibaba
            dubbo
        

        
            org.apache.zookeeper
            zookeeper
            pom
        

        
            com.github.sgroschupf
            zkclient
        

    

① 在dubbo-api的包中创建一个接口DemoService,内容如下:

package com.mengfei.api;

public interface DemoService {
    public String sayHello(String name);
}

② 进入到dubbo-api的根目录,将dubbo-api打包成jar包安装到本地的maven仓库

4、创建子模块dubbo-provider,在pom文件中添加dubbo-api的依赖

    
        
            ${project.groupId}
            dubbo-api
            ${project.version}
        
    

① 在dubbo-provider的包中创建一个实现类,实现DemoService接口

package com.mengfei.provider;

import com.mengfei.api.DemoService;

public class DemoServiceImpl implements DemoService {
    public String sayHello(String name) {
        return "Hello" + name;
    }
}

② 在src/main目录下创建一个resources目录,并在此目录下创建一个dubbo-provider.xml文件,内容如下:




    
    
    
    
    
    
    
    
    
    

③ 在dubbo-provider的包中创建一个测试类ProviderTest,用来加载spring的配置文件,启动服务提供方,内容如下:

package com.mengfei.provider;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ProviderTest {
    public static void main(String[] args) throws Exception {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:dubbo-provider.xml");
        context.start();
        System.out.println("服务已经启动!");
        System.in.read();//在控制台按任意键退出
    }
}

④ 启动main方法就启动了服务提供方,这时查看dubbo-admin监控中心

Dubbo学习笔记(一)—— 创建一个简单的Dubbo入门项目演示HelloWorld_第4张图片

5、创建子模块dubbo-consumer,在pom文件中添加dubbo-api的依赖


        
            ${project.groupId}
            dubbo-api
            ${project.version}
        
    

① 在src/main目录下创建resources目录,并在此目录下创建dubbo-consumer.xml文件,内容如下:



    
    
    
    
    

② 在dubbo-consumer的包中创建测试类ConsumerTest,用于加载spring的配置文件,启动服务消费方

package com.mengfei.consumer;

import com.mengfei.api.DemoService;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ConsumerTest {
    public static void main(String[] args) throws Exception {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:dubbo-consumer.xml");
        context.start();
        DemoService demoService = (DemoService) context.getBean("demoService");
        String hello = demoService.sayHello("World");
        System.out.println(hello);
        System.in.read();//在控制台按任意键退出
    }
}

③ 启动main方法就启动了服务消费方,查看dubbo-consumer监控中心如下:

Dubbo学习笔记(一)—— 创建一个简单的Dubbo入门项目演示HelloWorld_第5张图片

④ 查看控制台输出结果

Dubbo学习笔记(一)—— 创建一个简单的Dubbo入门项目演示HelloWorld_第6张图片

演示结束!

此demo的github地址:https://github.com/Alexshi5/dubbo-demo

参考:

1、http://blog.csdn.net/noaman_wgs/article/details/70214612

2、http://blog.csdn.net/harderxin/article/details/55045057

3、http://blog.csdn.net/luo4105/article/details/70829489

4、http://dubbo.apache.org/










你可能感兴趣的:(Dubbo)