美文网首页
Springboot 2.1.1 + dubbo 最新版整合

Springboot 2.1.1 + dubbo 最新版整合

作者: 暗夜A公爵 | 来源:发表于2018-12-14 10:37 被阅读0次

1.概述

Dubbo是Alibaba开源的分布式服务框架,现已捐给apache。它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。

官网地址:http://dubbo.apache.org/en-us/

后台管理地址(dubbo-admin):https://github.com/apache/incubator-dubbo-ops

2.项目构建

开发环境主要涉及以下几个方面:

Spring-boot 2.1.1

JDK 8

Dubbo

Zookeeper

2.1首先安装zookeeper

window版本一般只需解压即可,正式使用建议使用zookeeper集群,一般最少三台虚拟机。关于zookeeper集群本篇暂略。

解压之后,修改conf/下的配置文件,zoo.cfg。

修改data目录与日志目录:

dataDir=/data/zookeeper-3.4.9/data

logDir= /data/zookeeper-3.4.9/log

window下执行zkServer.cmd启动:

启动后使用ZooInspector工具连接zkserver可以看到下图有一个默认的根接节点:

image

2.2 搭建springboot工程:

可以使用ide或者sts工具自动创建springboot工程,过程不细说,

服务提供者工程目录:

image

服务消费者:

image

见pom.xml文件:


<project 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">

<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<groupId>com.zhou.test</groupId>
<artifactId>dubbo-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>dubbo-server</name>
<description>dubbo-server</description>

<properties>
<java.version>1.8</java.version>
</properties>

<dependencies>

      <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

      <!-- dubbo -->
    <dependency>
            <groupId>com.alibaba.boot</groupId>
          <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>

        <!-- zookeeper -->
      <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.8</version>
    </dependency>

      <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
      </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
  </build>
</project> 

添加接口:


import com.zhou.test.entity.User;

public interface UserService {
      User saveUser(User user);
}

实现类:


public class UserServiceImpl implements UserService {

@Override
public User saveUser(User user) {
        user.setId("2");
        System.out.println(user.toString());
        return user;
    }
}

配置文件:


server.port=8188

## Dubbo 服务提供者配置
dubbo.application.name=provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.scan.basePackages=com.zhou.test.service

启动类provider:


import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class DubboServerApplication {

public static void main(String[] args) {

SpringApplication.run(DubboServerApplication.class, args);

}

}

启动类consumer 注意消费者这边多一个@EnableDubboConfiguration:

@SpringBootApplication
@EnableDubboConfiguration
public class DubboClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboClientApplication.class, args);
    }

}

启动成功后,zookeeper上会有注册成功的provider与consumer,如图:

image

服务消费者也一样,调用方代码:


@RequestMapping("/user")

public class UserController {

@Reference(check=false)//启动消费者不检查服务者是否存在
private UserService userService;

    @GetMapping("/save")
    public Object saveUser() {
          User u =new User();
          u.setName("张三");
          u.setSex("男");
        return userService.saveUser(u);
    }

}

测试结果:

image

3.踩过的坑

由于dubbo升级较多,低版本的配置与高版本的配置差别很大,当然配置文件形式(xml格式)已逐渐被注解取代,这样工程简洁,代码也规范。这里列一下,我踩的一些坑。

使用io.dubbo.springboot搭建的工程,配置文件有些不同:


spring.dubbo.application.name=provider

spring.dubbo.registry.address=zookeeper://127.0.01:2181

spring.dubbo.protocol.name=dubbo

spring.dubbo.protocol.port=20880

spring.dubbo.scan=com.bordrin.service 

使用此版本会使consumer端@Reference 一直为null,从而无法获取注册中心的服务信息。

建议使用最新版:

官方案例地址:

https://github.com/apache/incubator-dubbo-spring-boot-project

相关文章

  • Springboot 2.1.1 + dubbo 最新版整合

    1.概述 Dubbo是Alibaba开源的分布式服务框架,现已捐给apache。它最大的特点是按照分层的方式来架构...

  • io.dubbo.springboot版本不兼容dubbo-2.

    遇到问题:在dubbo整合springboot的时候,使用io.dubbo.springboot的jar包,配合的...

  • SpringBoot 整合 Dubbo错误收集

    SpringBoot 整合 Dubbo CuratorFrameworkFactory找不到 错误信息:java....

  • spring boot 整合dubbo

    #项目介绍 Springboot 整合 Dubbo/ZooKeeper 码云地址:https://gitee.co...

  • SpringBoot整合dubbo

    1、添加依赖 2、生产者配置文件 3、消费者配置文件 4、定义service接口 5、生产者实现service接口...

  • SpringBoot整合dubbo

    首先创建一个多模块Maven项目,再创建一个生产者子项目和一个消费者子项目。父模块Maven POM文件如下: 生...

  • SpringBoot Dubbo 整合

    官方参考文档http://dubbo.apache.org/zh-cn/docs/user/configurati...

  • SpringBoot整合dubbo

    Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,...

  • SpringBoot整合Dubbo

    前期准备:下载安装zookeeper作为服务注册中心 安装步骤 解压 将zoo_sample.cfg文件名修改为z...

  • springboot整合dubbo

    导入依赖 服务调用者和服务发布者都需要引入该依赖 该依赖不定时更新,可以关注最新版本http://maven.al...

网友评论

      本文标题:Springboot 2.1.1 + dubbo 最新版整合

      本文链接:https://www.haomeiwen.com/subject/hiswhqtx.html