Springboot集成dubbox服务治理时的巨坑

前言

由于阿里dubbo团队的解散,已经很久没有更新,介于没有支持Rest服务等新特性。所以把目光投向了dubbox,dubbox是当当网基于dubbo二次开发的一个项目,集成SpringBoot需要新版本的dubox并没有提交maven仓库,接下来需要自己制作maven依赖。

制作maven依赖

1、 下载dubbox工程
使用git克隆工程,关于git的安装及使用在这里就不说了。

  • git clone -b dubbox-2.8.4 --depth 1 https://github.com/dangdangdotcom/dubbox
    或者去GitHub上下载
    Springboot集成dubbox服务治理时的巨坑_第1张图片

    注意:一定要选择分支dubbox-2.8.4,这里是我说的巨坑。

2、cmd使用maven命令编译,需要配置maven环境变量。

    cd dubbox
    mvn clean install -Dmaven.test.skip=true

3、到这步制作maven依赖就完成了,到本地仓库里查看。

Springboot集成dubbox服务治理时的巨坑_第2张图片

4、项目里引入依赖

  
        com.alibaba
        dubbo
        2.8.4
    

安装zookeeper

1、zookeeper简介

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户

而dubbo就是依赖zookeeper的一个分布式框架,当然二次开发的dubbox肯定也会依赖于zookeeper,所以我们需要先安装zookeeper

2、下载zookeeper

zookeeper官网地址http://zookeeper.apache.org/

下载地址http://apache.fayea.com/zookeeper/

3、安装zookeeper

因为我是在Windows环境配置的,所以就简单说一下windows下面的配置吧,首先解压压缩包,然后进入conf文件夹,复制一下zoo_sample.cfg创建副本,然后重命名为zoo.cfg,因为zookeeper只识别zoo.cfg,而默认是没有这个文件的,zoo_sample.cfg是默认的配置文件,但是因为文件名的原因,所以zookeeper无法识别,当然直接重命名zoo_sample.cfg也是可以的,只是看自己喜欢咯

4、启动zookeeper

Windows环境下直接运行bin目录下的zkServer.cmd就可以,如果是Linux环境,则在bin目录下运行

./zkServer.sh start

命令,就可以启动zookeeper

创建工程

1、创建如下图目录结构的工程

Springboot集成dubbox服务治理时的巨坑_第3张图片

2、修改pom.xml

  • boot-dubbo pom.xml
 

    4.0.0

    com.boot
    boot-dubbo
    1.0-SNAPSHOT
    
    
        boot-dubbo-api
        boot-dubbo-provider
        boot-dubbo-consumer
    

    
    pom

    
    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.2.RELEASE
    

    
    
        UTF-8
        1.5.2.RELEASE
        1.8
        1.16.18
        2.8.4
        0.6
    

    
    
        
            
            
                org.springframework.boot
                spring-boot-starter
                ${spring-boot.version}
            

            
            
                org.springframework.boot
                spring-boot-starter-web
                ${spring-boot.version}
            

            
            
                org.projectlombok
                lombok
                ${lombok.version}
                provided
            

            
            
                com.alibaba
                dubbo
                ${dubbo.version}
            
            
            
                com.101tec
                zkclient
                ${zkclient.version}
            
        
    

  • boot-dubbo-api pom.xml


    
        boot-dubbo
        com.boot
        1.0-SNAPSHOT
    
    4.0.0

    boot-dubbo-api

    
        
            org.projectlombok
            lombok
            provided
        
    

  • boot-dubbo-provider pom.xml


    
        boot-dubbo
        com.boot
        1.0-SNAPSHOT
    
    4.0.0

    boot-dubbo-provider

    
        
            com.boot
            boot-dubbo-api
            1.0-SNAPSHOT
        
        
            org.springframework.boot
            spring-boot-starter
        
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            com.alibaba
            dubbo
        
        
        
            com.101tec
            zkclient
        
    
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

  • boot-dubbo-consumer pom.xml


    
        boot-dubbo
        com.boot
        1.0-SNAPSHOT
    
    4.0.0

    boot-dubbo-consumer

    
        
            com.boot
            boot-dubbo-api
            1.0-SNAPSHOT
        
        
            org.springframework.boot
            spring-boot-starter
        
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            com.alibaba
            dubbo
        
        
        
            com.101tec
            zkclient
        
    
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

3、boot-dubbo-api添加服务提供者的接口

package com.boot.service;

public interface TestService {

    String sayHello(String str);

}

4、boot-dubbo-provider服务提供者

package com.boot.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.boot.service.TestService;

import java.text.SimpleDateFormat;
import java.util.Date;
//这里Service是dubbo的注解,需要设置版本,不设置行不行请自测
@Service(version = "1.0.0")
public class TestServiceImpl implements TestService {

    @Override
    public String sayHello(String str) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        return dateFormat.format(new Date()) + ": " + str;
    }
}

  • dubbox.xml



    
    
    
    
    
    
    

  • application.yml
server:
  port: 8081
  context-path: /

5、boot-dubbo-consumer服务消费者

package com.boot.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.boot.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/")
public class TestController {

    @Reference(version = "1.0.0")
    private TestService testService;

    @GetMapping("hello")
    public String hello() {
        return testService.sayHello("Hello springboot and dubbo!");
    }
}

  • dubbox.xml



    
    
    
    

  • application.yml
server:
  port: 8082
  context-path: /

6、引用dubbo配置xml

在Spring boot的Application类添加注解
@ImportResource({"classpath:dubbo.xml"})
xml名字可以自定义,消费者和服务提供者Application类都需要配置此注解。

结尾

至此,spring boot集成duubox就结束了。感谢有坑,有坑才有成长。
GitHub项目地址

你可能感兴趣的:(Springboot集成dubbox服务治理时的巨坑)