laomao , Life is like a play

SpringBoot整合Dubbo+Zookeeper简单小案例

默认分类 0 评

dubbo官网: http://dubbo.apache.org
dubbo-github: 源码地址:https://github.com/apache/incubator-dubbo

Zookeeper环境搭建

zookeeper下载地址http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/下载解压

然后将conf目录下的zoo_sample.cfg复制一份改名为zoo.cfg,文件中有几个重要的位置需要注意

dataDir=./   #临时数据存储的目录(可写相对路径)
clientPort=2181   #zookeeper的端口号

修改完成后启动zookeeper 我是mac sudo ./zkServer start windows直接双击cmd就可以了

dubbo-admin安装

dubbo-admin就是一个可视化的管理dubbo服务监控程序,不安装也不影响,只是有了他开发更方便查看状况
1、下载dubbo-admin
下载地址:https://github.com/apache/dubbo-admin/tree/master
2、解压进入目录
修改dubbo-adminsrcmainresources application.properties 指定zookeeper地址

server.port=7001
spring.velocity.cache=false
spring.velocity.charset=UTF-8
spring.velocity.layout-url=/templates/default.vm
spring.messages.fallback-to-system-locale=false
spring.messages.basename=i18n/message
spring.root.password=root
spring.guest.password=guest

dubbo.registry.address=zookeeper://127.0.0.1:2181

3、z在项目目录下打包dubbo-admin

mvn clean package -Dmaven.test.skip=true 

第一次打包可能进度比较慢,耐心等待即可,出现BULLD SUCCESS 即成功

4、执行dubbo-admin/target下的dubbo-admin-0.0.1-SNAPSHOT.jar

java -jar dubbo-admin-0.0.1-SNAPSHOT.jar

执行成功后,访问http://localhost:7001/ ,默认账号密码是 root登录成功后即可看到如下界面

springboot+dubbo+zk demo

1、首先检查zookeeper是否已经启动
2、然后创建一个空项目
3、接着创建模块 服务提供者 laomao-provider-service ,服务消费者 laomao-consumer-server,以及API接口模块 laomao-server-api ,服务提供者,服务消费者引入依赖

<!--dubbo+zookeeper-->
<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.7.3</version>
</dependency>
<!--zkClient-->
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.10</version>
    <!--日志会冲突排除-->
    <exclusions>
        <exclusion>
            <artifactId>slf4j-log4j12</artifactId>
            <groupId>org.slf4j</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>4.0.1</version>
</dependency>

4、让消费者模块和服务提供者模块在pom文件中去引用API接口模块

<!--api接口-->
<dependency>
    <groupId>cn.nzblog</groupId>
    <artifactId>laomao-server-api</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

5、服务提供者模块配置

server.port=8001

#服务应用名字
dubbo.application.name=provider-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#那些服务要被注册给个包名
dubbo.scan.base-packages=cn.nzblog.service

#其他信息自己配置,这里只提供基础配置

6、服务消费者模块配置

server.port=8002

#暴露名称
dubbo.application.name=consumer-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

7、在API模块中新建一个providerapi目录编写一个测试接口

public interface TicketService {
    public String getTicket();
}

8、在provider服务提供者模块中创建server目录编写该接口的实现类

@Service
public class TickServiceImpl implements TicketService {
    @Override
    public String getTicket() {
        return UUID.randomUUID().toString();
    }
}

9、然后在服务消费者laomao-consumer-server模块进行调用
创建一个controller包,新建一个TestController类,通过@Reference注解进行接口调用,注解的包别引用错了,引用dubbo的包

@RestController
public class TestController {

    @Reference //应用POM坐标。可以定义路径相同的接口名称
    TicketService ticketService;

    @RequestMapping("/test")
    public String buyTicket(){
        String ticket = ticketService.getTicket();
        return ticket;
    }

}

这里TicketService接口的引用会找不到接口,解决方案的话有两种引用pom文件,或者创建路径相同的接口名称即可,我们上面引用了api模块的pom文件,每个提供者模块创建一个包放该模块的接口即可

LoadingCache缓存的使用
发表评论
撰写评论