我的日常

登录/注册
您现在的位置:论坛 资料库 开源社区 > SpringMVC整合Dubbo与Zookeeper
总共48086条微博

动态微博

查看: 3344|回复: 2

SpringMVC整合Dubbo与Zookeeper

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2016-02-23 15:16:37 |只看该作者 |倒序浏览
    第一步:在Linux上安装Zookeeper
           Zookeeper作为Dubbo服务的注册中心,Dubbo原先基于数据库的注册中心,没采用Zookeeper,Zookeeper一个分布式的服务框架,是树型的目录服务的数据存储,能做到集群管理数据 ,这里能很好的作为Dubbo服务的注册中心,Dubbo能与Zookeeper做到集群部署,当提供者出现断电等异常停机时,Zookeeper注册中心能自动删除提供者信息,当提供者重启时,能自动恢复注册数据,以及订阅请求。我们先在linux上安装Zookeepe。
    阿里云linux下安装zookeeper


    第二步:配置dubbo-admin的管理页面,方便我们管理页面
    淘宝SOA框架dubbo管理控制台安装和使用(一)

    第三步:springMVC与Dubbo的整合
    一:我们先开发服务注册的,就是提供服务,项目结构如图所示:

    所需JAR包



    applicationContext.xml配置
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    4.         xsi:schemaLocation="http://www.springframework.org/schema/beans
    5.         http://www.springframework.org/schema/beans/spring-beans.xsd
    6.         http://code.alibabatech.com/schema/dubbo
    7.         http://code.alibabatech.com/schema/dubbo/dubbo.xsd
    8.         ">

    9.         <!-- 具体的实现bean -->
    10.         <bean id="demoService" class="com.unj.dubbotest.provider.impl.DemoServiceImpl" />

    11.         <!-- 提供方应用信息,用于计算依赖关系 -->
    12.         <dubbo:application name="xixi_provider" />

    13.         <!-- 使用multicast广播注册中心暴露服务地址 <dubbo:registry address="multicast://224.5.6.7:1234"
    14.                 /> -->

    15.         <!-- 使用zookeeper注册中心暴露服务地址 -->
    16.         <dubbo:registry address="zookeeper://192.16.1.180:2181" check="false" subscribe="false" register="" />

    17.         <!-- 用dubbo协议在20880端口暴露服务 -->
    18.         <dubbo:protocol name="dubbo" port="20880" />

    19.         <!-- 声明需要暴露的服务接口 -->
    20.         <dubbo:service interface="com.unj.dubbotest.provider.DemoService"
    21.                 ref="demoService" />

    22. </beans>
    复制代码

    说明:
       dubbo:registry 标签一些属性的说明:
          1)register是否向此注册中心注册服务,如果设为false,将只订阅,不注册。
          2)check注册中心不存在时,是否报错。
          3)subscribe是否向此注册中心订阅服务,如果设为false,将只注册,不订阅。
          4)timeout注册中心请求超时时间(毫秒)。
          5)address可以Zookeeper集群配置,地址可以多个以逗号隔开等。
      dubbo:service标签的一些属性说明:
         1)interface服务接口的路径
         2)ref引用对应的实现类的Bean的ID
         3)registry向指定注册中心注册,在多个注册中心时使用,值为<dubbo:registry>的id属性,多个注册中心ID用逗号分隔,如果不想将该服务注册到任何registry,可将值设为N/A
         4)register 默认true ,该协议的服务是否注册到注册中心。


    第二:我们在开发服务消费者,就是调用服务

    我们只需将提供者的接口打包发送给消费者即可。
    applicationContext.xml配置:
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    4.         xsi:schemaLocation="http://www.springframework.org/schema/beans
    5.         [url]http://www.springframework.org/schema/beans/spring-beans.xsd[/url]
    6.         [url]http://code.alibabatech.com/schema/dubbo[/url]
    7.         [url]http://code.alibabatech.com/schema/dubbo/dubbo.xsd[/url]
    8.         ">
    9.         <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    10.         <dubbo:application name="hehe_consumer" />
    11.         <!-- 使用zookeeper注册中心暴露服务地址 -->
    12.         <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
    13.         <dubbo:registry address="zookeeper://192.168.1.180:2181" />
    14.         <!-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->
    15.         <dubbo:reference id="demoService"
    16.                 interface="com.unj.dubbotest.provider.DemoService" />
    17. </beans>
    复制代码

    Consumer类:

    1. package com.alibaba.dubbo.demo.pp;

    2. import org.springframework.context.support.ClassPathXmlApplicationContext;

    3. import com.unj.dubbotest.provider.DemoService;

    4. public class Consumer {

    5.         public static void main(String[] args) throws Exception {
    6.                 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
    7.                                 new String[] { "applicationContext.xml" });
    8.                 context.start();
    9.                 DemoService demoService = (DemoService) context.getBean("demoService");
    10.                 demoService.sayHello("哈哈哈");
    11.                 System.in.read();
    12.         }

    13. }
    复制代码

    分别启动后:

    需要项目源码的可以留下 邮箱~





    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    7

    主题

    3

    听众

    383

    金钱

    版主

    该用户从未签到

    沙发
    发表于 2016-03-14 14:08:45 |只看该作者
    发源码  liujianshe8899@163.com
    回复

    使用道具 举报

    admin    

    1244

    主题

    544

    听众

    1万

    金钱

    管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    板凳
    发表于 2016-03-14 14:17:14 |只看该作者

    哈哈哈 没有~~~~~~~~~~
    回复

    使用道具 举报

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表