【分布式入门】Dubbo和Zookeeper的基本使用

Dubbo+Zookeeper+Spring+SpringMVC

一 相关概念

1.Dubbo框架图

在这里插入图片描述

2.节点角色说明

NodeRole Spec
Provider提供程序所公开的远程服务
Consumer使用者调用远程服务
Registry注册中心负责服务发现和配置
Monitor监视器计算服务调用的次数和时间
Container容器管理服务的生存期

二 zookeeper安装和配置

1.zookeeper下载链接

https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/

以最新的zookeeper-3.5.6为例,下载二进制源码包

在这里插入图片描述

2.配置zookeeper

解压到/usr/local/zookeeper下新建data文件夹

在这里插入图片描述

修改配置文件的dataDir路径

#进入conf文件夹
cd /usr/local/zookeeper/conf
#修改配置文件名为zoo.cfg
mv zoo_sample.cfg zoo.cfg
#编辑zoo.cfg中的dataDir路径为新建的data路径
vim zoo.cfg

在这里插入图片描述

3.启动单机版zookeeper

在这里插入图片描述

三 编写provider

1.pom依赖

<dependencies>
    <dependency>
        <groupId>cn.javak</groupId>
        <artifactId>dubbo-service</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
        <version>2.5.3</version>
        <exclusions>
            <!--干掉spring2-->
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <!--访问zookeeper的客户端jar包-->
    <dependency>
        <groupId>com.101tec</groupId>
        <artifactId>zkclient</artifactId>
        <version>0.10</version>
    </dependency>
</dependencies>

2.dubbo配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!--给当前Provider自定义名字,再monitor或管理工具中区别是哪一个provider-->
    <dubbo:application name="dubbo-service"/>
    <!--配置注册中心 注册中心的ip和端口 以及 使用哪种注册中心-->
    <dubbo:registry address="x.x.x.x:2181" protocol="zookeeper"></dubbo:registry>
    <!--配置端口 使用什么协议 consumer invoke provider时的端口-->
    <dubbo:protocol name="dubbo" prompt="20880"></dubbo:protocol>
    <!--注册功能 注册接口 引用接口实现类bean-->
    <dubbo:service interface="cn.javak.service.HelloService" ref="helloServiceImpl"></dubbo:service>
    <bean id="helloServiceImpl" class="cn.javak.service.impl.HelloServiceImpl"></bean>
</beans>

3.业务接口和实现类

package cn.javak.service;

public interface HelloService {
    String hello(String hello);
}
package cn.javak.service.impl;

import cn.javak.service.HelloService;

public class HelloServiceImpl implements HelloService {
    @Override
    public String hello(String name) {
        return "Hello Dubbo-->传递的name为:"+name;
    }
}

测试类

public class Test01 {
    public static void main(String[] args) {
        //使用spring启动
        /*ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-dubbo.xml");
        ac.start();*/

        //官方推荐,要求applicationContext-dubbo.xml放在/META-INF/spring中 *.xml
        Main.main(args);
    }
}

注意:配置文件要放在根目录下META-INF/spring中,spring才能够捕获

四 使用dubbo-admin

在tomcat中放入dubbo-admin的war包,启动tomcat,第一次启动会失败

关闭tomcat,修改dubbo.properties

vim WEB-INF/dubbo.properties

将地址改为zookeeper的真实地址加端口即可

在这里插入图片描述

再次启动,并访问

在这里插入图片描述

显示HelloService接口注册成功

Consumer调用

consumer的业务层

@Service
public class TestServiceImpl implements TestService {
    @Reference//获取该接口的代理对象
    private HelloService helloService;
    @Override
    public String test(String name) {
        //调用provider中提供的功能
        return helloService.hello(name);
    }
}

通过controller层访问

@Controller
public class HelloController {
    @Autowired
    private TestService testService;
    @ResponseBody
    @RequestMapping("hello")
    public String hello(String name){
        return testService.test(name);
    }
}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值