SpringBoot整合Dubbo+Zookeeper

SpringBoot整合Dubbo+Zookeeper

不多BB,直接上代码,奥力给!

一、创建项目

1.首先创建一个空的项目Empty project

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200610171900960.PNG?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDA3NDI2Mw==,size_16,color_FFFFFF,t_70)

2.然后创建三个子模块分别为如下

dubbo-provider:服务提供者

dubbo-consumer:服务消费者

dubbo-interface:消费者与提供者共同的接口层

![在这里插入图片描述]( https://img-blog.csdnimg.cn/2020061017194079.PNG?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDA3NDI2Mw,size_16,color_FFFFFF,t_70)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200610171940176.PNG?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDA3NDI2Mw
,size_16,color_FFFFFF,t_70)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200610171940961.PNG?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDA3NDI2Mw,size_16,color_FFFFFF,t_70)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/2020061017194160.PNG?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDA3NDI2Mw
,size_16,color_FFFFFF,t_70)

三个创建好后是这样的

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200610172215101.PNG?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDA3NDI2Mw==,size_16,color_FFFFFF,t_70)

二、导入依赖

分别在dubbo-consumerdubbo-providerpom.xml文件导入依赖

dubbo-interface 、zookeeper依赖、dubbo依赖、zookeeper客户端

<!-- 导入dubbo-interface-->
        <dependency>
            <groupId>com.chw</groupId>
            <artifactId>dubbo-interface</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <!-- zookeeper依赖 -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.6.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!--  dubbo依赖 -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.7</version>
        </dependency>

        <!-- zookeeper客户端 -->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

三、在接口项目定义接口

在dubbo-interface模块下创建包 写入接口

![在这里插入图片描述]( https://img-blog.csdnimg.cn/2020061017223287.PNG?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDA3NDI2Mw==,size_16,color_FFFFFF,t_70)

public interface TestService {
    public String Test();
}

四、服务者提供实现接口

在dubbo-provider模块下最好在同包同名提供实现接口

我们需要用到dubbo的注解@Service

注意 :@Service 用在服务提供者中,在类或者接口中声明。
服务提供者实现相关的服务接口,当消费端调用相关的类时,最终会调用提供者的实现方法。

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200610172248127.PNG?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDA3NDI2Mw==,size_16,color_FFFFFF,t_70)

import com.chw.service.TestService;
import org.apache.dubbo.config.annotation.Service;

//注意这里的service是dubbo包里面的
@Service
public class TestServiceImpl implements TestService {
    @Override
    public String Test() {
        return "==========williamc==========";
    }
}

这时我们要写配置文件

resources目录下application.properties或yml,这里为了方便我就用properties。

#tomcat端口
server.port=8001
#服务应用的名字
dubbo.application.name=provider-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#哪些服务要被注册
dubbo.scan.base-packages=com.chw.service

这里我们就完成了dubbo-provider。

五、消费者订阅接口

在dubbo-consumer下创建一个Controller

这里要用到dubbo的注解@Reference

@Reference 用在消费端,表明使用的是服务端的什么服务

import com.chw.service.TestService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {
    @Reference
    TestService testService;
    @ResponseBody
    @RequestMapping("/test")
    public String test(){
        return testService.Test();
    }

}

还需要写配置文件和服务者相似

#tomcat端口
server.port=8002
#服务应用的名字
dubbo.application.name=consumer-server
#注册中心地址与服务者一样
dubbo.registry.address=zookeeper://127.0.0.1:2181

六、运行

整个项目就写完了,是不是很容易。

接下里我们要先运行Zookeeper的zkServer.cmd这里不会的可以看我的博客dubbo+zookeeper简单入门

运行好之后,运行服务者的主程序DubboProviderApplication,再运行消费者的主程序DubboConsumerApplication。

访问http://localhost:8002/test

你们的消费者端口是多少就访问多少

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200610172316310.PNG?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDA3NDI2Mw==,size_16,color_FFFFFF,t_70)
我们就可以看到我们运行出来的结果。超简单~

如果想看dubbo管理控制台 我们要运行Dubbo官方给的dubbo-admin(这里不知道的看我的博客dubbo+zookeeper简单入门

然后访问http://localhost:7001/ (用户名密码都是root) 界面如下

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200610172333719.PNG?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDA3NDI2Mw==,size_16,color_FFFFFF,t_70)

我们可以进入服务治理的提供者和消费者

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200610172347764.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDA3NDI2Mw==,size_16,color_FFFFFF,t_70)

简单易懂
结合dubbo+zookeeper一起学

完结撒花!素质三连!谢谢!

posted @ 2020-06-10 17:37  William_C  阅读(85)  评论(0)    收藏  举报