springboot集成dubbo以及zookeeper

springboot结合zookeeper以及dubbo

今天我们来实现一个简单的分布式的案例,实现provider-api-consumer

  1. 首先,创建普通maven项目,将src目录删除即可

  2. 然后创建一个名为rpc-api的maven module
    在这里插入图片描述
    创建好之后导入dubbo以及zookeeper的相关依赖(版本都是使用人数比较多的,使用最新版本出现了很多问题,经过修改依旧不行,最后降低版本发现相关问题不再发生)

<dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.8</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.12.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.12.0</version>
        </dependency>
<!--整合zookeeper-->
        <!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.5.7</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>

导入好依赖之后编写共有的接口IService

public interface IUserService {
    User getUserById(int id);
}

以及数据库(本项目未导入sql相关依赖,所以使用的是虚拟数据)需要使用到的pojo类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {
    private int age;
    private String name;
}

项目结构如图所示
rpc-api项目结构
3.再创建一个名为rpc-provider的springboot项目

创建好之后先导入rpc-api再编辑application.properties,如下所示

# 应用名称
spring.application.name=rpc-provider
# 应用服务 WEB 访问端口
server.port=8000
#Dubbo provider configuration
dubbo.application.name=rpc-provider
dubbo.registry.protocol=zookeeper
dubbo.registry.address=zookeeper://127.0.0.1:2181
#扫描应用服务
dubbo.scan.base-packages=com.bing.service

最后编写UserService,如下所示


@Component//这个是spring的
@Service(interfaceClass = IUserService.class)//这个是dubbo的
public class UserService implements IUserService{
    @Override
    public User getUserById(int id) {
        User user = new User(id,"小华");
        return user;
    }
}

项目结构如下所示
rpc-provider项目结构
4.最后创建一个rpc-consumer的springboot 的module项目
依旧导入rpc-api依赖再修改application.properties文件

# 应用名称
spring.application.name=rpc-consumer
# 应用服务 WEB 访问端口
server.port=8001

dubbo.application.name=rpc-consumer
dubbo.registry.protocol=zookeeper
dubbo.registry.address=zookeeper://127.0.0.1:2181

再编写UserController

@RestController
public class UserController {
    //远程调用,这是dubbo的
    @Reference
    IUserService iUserService;

    @RequestMapping("/getUserById")
    public User getUserById(int id){
        return iUserService.getUserById(id);
    }
}

项目结构如下
rpc-consumer项目结构
5.那么有了provider以及consumer,那么我们就可以进行代码的test了
首先整个项目的结构如图所示
整个项目的结构图

在开启测试前,我们一定要确保zookeeper以及启动了,如果不知道如何安装zookeeper的,我上一篇博客以及谈到了,可以先去了解了解

那么在这里先启动服务端以及客户端,启动完成之后我们再先启动rpc-provider项目

以下是idea控制台页面(state为connected)以及zookeeper服务端(表示rpc-provider已经向zookeeper注册成功)页面
idea控制台页面
表示rpc-provider已经向zookeeper注册成功
再启动rpc-consumer,idea控制台页面如下所示
idea控制台
那么,我们写了一个restcontroller,所以我们打开浏览器,输入http://localhost:8001/getUserById?id=1
浏览器效果如图所示
浏览器效果
那么过程可能会遇到许多问题,最好解决的办法就是导入的依赖千万不要是最新版本,毕竟作为初学者,首先需要弄懂的是原理,等到了解之后再去使用最新版本,为生态做出贡献。

以上项目代码会上传至个人github,点击即可获取下载项目地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值