• dubbo使用方法


     dubbo使用方法。

    Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。如果不想使用Spring配置,而希望通过API的方式进行调用(不推荐),可以参见:

    http://code.alibabatech.com/wiki/display/dubbo/User+Guide-zh#UserGuide-zh-API%E9%85%8D%E7%BD%AE

    下面我们就来看看spring配置方式的写法。

    服务提供者:

    1. 下载zookeeper注册中心,下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/  下载后解压即可,进入D:Toolszookeeperzookeeper-3.4.5in,

    双击zkServer.cmd启动注册中心服务。

    定义服务接口:

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. package com.liangbinny.dubbotest.provider;  
    2.   
    3. import java.util.List;  
    4.   
    5. import com.liangbinny.dubbotest.provider.impl.User;  
    6.   
    7. public interface DemoService {  
    8.     String sayHello(String name);  
    9.   
    10.     public List<User> getUsers();  
    11. }  


    在服务提供方实现接口:(对服务消费方隐藏实现)

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. package com.liangbinny.dubbotest.provider.impl;  
    2.   
    3. import java.util.ArrayList;  
    4. import java.util.List;  
    5.   
    6. import com.liangbinny.dubbotest.provider.DemoService;  
    7.   
    8. public class DemoServiceImpl implements DemoService {  
    9.   
    10.     public String sayHello(String name) {  
    11.         return "Hello " + name;  
    12.     }  
    13.   
    14.     public List<User> getUsers() {  
    15.         List<User> list = new ArrayList<User>();  
    16.   
    17.         User user = new User();  
    18.         user.setAge(28);  
    19.         user.setName("liangbinny");  
    20.         list.add(user);  
    21.   
    22.         user = new User();  
    23.         user.setAge(27);  
    24.         user.setName("binny");  
    25.         list.add(user);  
    26.           
    27.         return list;  
    28.     }  
    29.   
    30. }  



    用Spring配置声明暴露服务:

    [html] view plaincopy在CODE上查看代码片派生到我的代码片
     
    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.   
    10.     <!-- 具体的实现bean -->  
    11.     <bean id="demoService" class="com.liangbinny.dubbotest.provider.impl.DemoServiceImpl" />  
    12.   
    13.     <!-- 提供方应用信息,用于计算依赖关系 -->  
    14.     <dubbo:application name="dubbo_provider" />  
    15.   
    16.     <!-- 使用multicast广播注册中心暴露服务地址 <dubbo:registry address="multicast://224.5.6.7:1234"   
    17.         /> -->  
    18.   
    19.     <!-- 使用zookeeper注册中心暴露服务地址 -->  
    20.     <dubbo:registry address="zookeeper://10.102.30.211:2181" />  
    21.   
    22.     <!-- 用dubbo协议在20880端口暴露服务 -->  
    23.     <dubbo:protocol name="dubbo" port="20880" />  
    24.   
    25.     <!-- 声明需要暴露的服务接口 ,对应的具体实现类是自定义bean:demoService -->  
    26.     <dubbo:service interface="com.liangbinny.dubbotest.provider.DemoService" ref="demoService" />  
    27.   
    28. </beans>  



    加载Spring配置,启动服务:

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. package com.liangbinny.dubbotest.provider.impl;  
    2.   
    3. import org.springframework.context.support.ClassPathXmlApplicationContext;  
    4.   
    5. public class Provider {  
    6.     public static void main(String[] args) {  
    7.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });  
    8.         context.start();  
    9.         // 为保证服务一直开着,一直循环等待  
    10.         synchronized (Provider.class) {  
    11.             while (true) {  
    12.                 try {  
    13.                     Provider.class.wait();  
    14.                 } catch (Throwable e) {  
    15.                 }  
    16.             }  
    17.         }  
    18.     }  
    19. }  



    整个服务端的项目图如下:

    服务端开发好后,提供对应的jar包给消费端,提供对应的接口。

    导出服务端项目为jar包即可。

    新建消费端项目,依赖的jar包有:

    其中包括刚刚导出的dubbo-server.jar包

    服务消费者:

    1.通过Spring配置引用远程服务:

    [html] view plaincopy在CODE上查看代码片派生到我的代码片
     
    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.   
    10.     <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->  
    11.     <dubbo:application name="dubbo_consumer" />  
    12.   
    13.     <!-- 使用zookeeper注册中心暴露服务地址 -->  
    14.     <dubbo:registry address="zookeeper://10.102.30.211:2181" />  
    15.   
    16.     <!-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->  
    17.     <dubbo:reference id="demoService" interface="com.liangbinny.dubbotest.provider.DemoService" />  
    18.   
    19. </beans>  



    2.加载Spring配置,并调用远程服务:

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. package com.liangbinny.dubbotest.consumer;  
    2.   
    3. import java.util.List;  
    4.   
    5. import org.springframework.context.support.ClassPathXmlApplicationContext;  
    6.   
    7. import com.liangbinny.dubbotest.provider.DemoService;  
    8. import com.liangbinny.dubbotest.provider.impl.User;  
    9.   
    10. public class Consumer {  
    11.     public static void main(String[] args) {  
    12.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });  
    13.         context.start();  
    14.           
    15.         DemoService demoService = (DemoService) context.getBean("demoService");  
    16.         String hello = demoService.sayHello("tom");  
    17.         System.out.println(hello);  
    18.   
    19.         List<User> list = demoService.getUsers();  
    20.         System.out.println(list);  
    21.     }  
    22. }  

    调用结果

    1、下载dubbo控制台管理war包

    http://download.csdn.net/detail/liweifengwf/7784901

    官方地址:http://code.alibabatech.com/mvn/releases/com/alibaba/dubbo-admin/2.4.1/dubbo-admin-2.4.1.war(这个地址我一直下不了,wget也不通)

    下载绿色版tomcat,并解压,删掉apache-tomcat-6.0.37webappsROOT文件夹下的内容,并将dubbo-admin-2.4.1.war解压后,解压出的文件放在ROOT文件夹下

    修改apache-tomcat-6.0.37webappsROOTWEB-INF下的dubbo.properties文件的zookeeper地址

    dubbo.registry.address=zookeeper://10.102.30.211:2181
    dubbo.admin.root.password=root
    dubbo.admin.guest.password=guest

    2、启动

    先启动zookeeper,再启动tomcat

    访问:

    http://localhost:8080

        登录密码默认是:root/root

    可以看到控制台管理界面,

    这时候可以启动上篇文章中的提供者和消费者,再在dubbo管理控制台界面可以看到

    提供者

    消费者

    Zookeeper单机配置:

    <dubbo:registryaddress="zookeeper://10.20.153.10:2181"/>

    Or:

    <dubbo:registryprotocol="zookeeper"address="10.20.153.10:2181"/>



    Zookeeper集群配置:

    <dubbo:registryaddress="zookeeper://10.20.153.10:2181?backup=10.20.153.11:2181,10.20.153.12:2181"/>

    Or:

    <dubbo:registryprotocol="zookeeper"address="10.20.153.10:2181,10.20.153.11:2181,10.20.153.12:2181"/>

    同一Zookeeper,分成多组注册中心:

    <dubbo:registryid="chinaRegistry"protocol="zookeeper"address="10.20.153.10:2181"group="china"/>
    <dubbo:registryid="intlRegistry"protocol="zookeeper"address="10.20.153.10:2181"group="intl"/>

     

  • 相关阅读:
    软件定义网络实验4:Open vSwitch 实验——Mininet 中使用 OVS 命令(实验过程及结果记录)
    软件定义网络实验3:测量路径的损耗率 (实验过程及结果记录)
    第一次个人编程作业
    软件定义网络实验2:Mininet拓扑的命令脚本生成(实验过程及结果记录)
    软件定义网络实验1:Mininet源码安装和可视化拓扑工具(实验过程及结果记录)
    第一次博客作业
    第07组(69) 需求分析报告
    第七组(69)团队展示
    第三次作业
    结对编程作业
  • 原文地址:https://www.cnblogs.com/fx2008/p/4131856.html
Copyright © 2020-2023  润新知