ssm整合zookeeper和dubbo

zookeeper与dubbo简单介绍:

        Dubbo是一个RPC框架, 可以和spring无缝整合, RPC, 全称Remote Procedure Call 远程过程调用,是分布式架构的核心, Dubbo提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

        Zookeeper是一个分布式应用程序协调服务,是Dubbo官方推荐的的注册中心有 数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、Watcher(事件监听器)、事件监听、配置维护,名字服务、分布式同步、分布式锁和分布式队列 等功能,这里不做一一介绍

        详细请戳连接,大佬很厉害

        https://blog.csdn.net/qq754772661/article/details/116010060

        https://blog.csdn.net/w8827130/article/details/81834905

下面我们亲自来整合dubbo和zookeeper

        1.下载dubbo和zookeeper,进行安装

               安装好的目录下:

                

 然后,我们让它跑起来:

        1). 在dubbo根目录下进入cmd命令行,执行  mvn clean package -Dmaven.test.skip=true  进行打包,打包完成后,如下图,可在该目录下看到生成的jar包,然后我们执行 java -jar + jar包名,运行该jar,命令窗口不要关

        2). 接着我们进入zk的目录,将原来的 zoo_sample.cfg 配置文件复制一份备份, 另一份改名为 zoo.cfg,在配置文件中,你可以看到看到zk监听的端口的配置 clientPort 为 2181,后面在项目中要配置

 然后运行zk服务,命令行窗口不要关 

 访问 http://localhost:7001/ ,账号密码均为 root ,就可以看到 zk 服务中心

 接下来我们来看项目的整合,ssm的整合这里就不做介绍了,我们只看spring和dubbo的整合,目录结构如下, dubbo和web为web项目,打包成war包,其余的均为普通项目,打成jar包,其中依赖关系为:

        pojo里面做类的编写

        mapper为持久层连接数据库,依赖pojo

        service为业务层接口,依赖mapper

        dubbo为service接口实现,依赖service

        web为控制层,依赖service

 添加依赖 :

<zookeeper.version>3.3.3</zookeeper.version>
<zkclient.version>0.10</zkclient.version>
<dubbo.version>2.6.4</dubbo.version>
<curator.version>2.8.0</curator.version>
<netty.version>4.0.35.Final</netty.version>

<!-- zookeeper的依赖包 -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>${zookeeper.version}</version>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>${zkclient.version}</version>
        </dependency>
        <!-- dubbo的核心包,去除掉springframework包之间的冲突 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>${dubbo.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>${curator.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>${curator.version}</version>
        </dependency>
        <!--netty-->
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>${netty.version}</version>
        </dependency>

 在服务提供项目dubbo中添加xml配置,这里zk的端口就为上面在zk配置文件看到的

<!-- 定义服务提供者在dubbo中的名称 -->
    <dubbo:application name="DubboServiceContentProvider"/>
    <!-- 使用zookeeper注册中心暴露服务地址,完成dubbo的注册-->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" timeout="3000" check = "false"/>
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880"/>
    <!-- 声明需要暴露的接口
    <dubbo:service interface="com.cl.service.UserService" ref="userService"></dubbo:service>
    <bean id="userService" class="com.cl.service.impl.UserServiceImpl"/>-->
    <dubbo:annotation package="com.cl.service.impl"/>

 在spring配置文件引入dubbo 的 xml 配置文件

 你可以通过在main方法中通过 ClassPathXmlApplicationContext 加载 dubbo 的 xml文件启动服务,不过我这里直接打成war包, 用tomact启动,启动成功后,刷新zk的服务中心,可以看到服务成功注册进zk中心

接下来我们来看消费者,同理,添加dubbo的xml文件

这里注意,端口不能和提供者一致,另外,超时最好设置长一点

<!--注解扫描 -->
    <dubbo:annotation package="com.cl" />

    <!-- 定义服务提供者在dubbo中的名称 -->
    <dubbo:application name="DubboServiceContentConsumer">
        <dubbo:parameter key="qos.port" value="33333" />
    </dubbo:application>
    <!-- 使用zookeeper注册中心暴露服务地址,完成dubbo的注册-->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" timeout="3000" protocol="zookeeper"/>

    <dubbo:consumer check="false"/>
    <!-- 使用dubbo协议调用定义好的api接口 -->
    <dubbo:reference id="userService" interface="com.cl.service.UserService"
                     check="false"/>

 按照以往的操作,是在spring配置文件中通过 import 标签引入 dubbo 的配置文件,在引入之后,在

 controller中,依赖注入用 Reference 注解,但是在调试过程,发现 Reference 注入为空,详情见

        https://blog.csdn.net/qq_39575279/article/details/83546401

 这里将在spring-mvc配置文件中引入dubbo配置文件,注解依然用 Autowired 注解注入,同时,业务层和持久层分离出了项目,spring的主配置文件可以删除

 这里依然可以用上面提到的方法在main中进行测试,但是我这里还是在tomact中启动

编写测试,访问成功

在zk服务中心也可以看到消费者的记录 

 至此,ssm整合dubbo+zk 就完成了

 

 

                

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值