`

dubbo 笔记一 简单应用demo

    博客分类:
  • soa
阅读更多

 

一.dubbo架构



 

节点角色说明:

       Provider: 暴露服务的服务提供方。

       Consumer: 调用远程服务的服务消费方。

       Registry: 服务注册与发现的注册中心。

       Monitor: 统计服务的调用次调和调用时间的监控中心。

       Container: 服务运行容器。

调用关系说明:

      0 服务容器负责启动,加载,运行服务提供者。

     1. 服务提供者在启动时,向注册中心注册自己提供的服务。

     2. 服务消费者在启动时,向注册中心订阅自己所需的服务。

     3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数          据给消费者。

    4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用          失败,再选另一台调用。

     5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监         控中心。

 

同类项目:

 

二.dubbo使用方法

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

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

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

           2.定义服务提供者接口、实现、定义dubbo-spring的配置文件

             注:服务提供者接口需被服务消费者共享到,服务消费者的配置才能找到接口(用maven的话就把服务提供者接口打jar包,服务消费者依赖这个jar)

  1. package com.unj.dubbotest.provider;  
  2.   
  3. import java.util.List;  
  4.   
  5. public interface DemoService {  
  6.   
  7.     String sayHello(String name);  
  8.   
  9.     public List getUsers();  
  10.   
  11. }  


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

 

  1. package com.unj.dubbotest.provider;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.LinkedList;  
  5. import java.util.List;  
  6.   
  7.   
  8. public class DemoServiceImpl implements DemoService{  
  9.       
  10.      public String sayHello(String name) {  
  11.             return "Hello " + name;  
  12.      }  
  13.      public List getUsers() {  
  14.          List list = new ArrayList();  
  15.          User u1 = new User();  
  16.          u1.setName("jack");  
  17.          u1.setAge(20);  
  18.          u1.setSex("男");  
  19.            
  20.          User u2 = new User();  
  21.          u2.setName("tom");  
  22.          u2.setAge(21);  
  23.          u2.setSex("女");  
  24.            
  25.          User u3 = new User();  
  26.          u3.setName("rose");  
  27.          u3.setAge(19);  
  28.          u3.setSex("女");  
  29.            
  30.          list.add(u1);  
  31.          list.add(u2);  
  32.          list.add(u3);  
  33.          return list;  
  34.      }  
  35. }  

 

              用Spring配置声明暴露服务:
  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"  
  4.     xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  6.         http://www.springframework.org/schema/beans/spring-beans.xsd  
  7.         http://code.alibabatech.com/schema/dubbo  
  8.         http://code.alibabatech.com/schema/dubbo/dubbo.xsd  
  9.         ">  
  10.    
  11.     <!-- 具体的实现bean -->  
  12.     <bean id="demoService" class="com.unj.dubbotest.provider.DemoServiceImpl" />  
  13.       
  14.     <!-- 提供方应用信息,用于计算依赖关系 -->  
  15.     <dubbo:application name="xixi_provider"  />  
  16.    
  17.     <!-- 使用multicast广播注册中心暴露服务地址   
  18.     <dubbo:registry address="multicast://224.5.6.7:1234" />-->  
  19.     
  20.     <!-- 使用zookeeper注册中心暴露服务地址 -->  
  21.     <dubbo:registry address="zookeeper://127.0.0.1:2181" />   
  22.     
  23.     <!-- 用dubbo协议在20880端口暴露服务 -->  
  24.     <dubbo:protocol name="dubbo" port="20880" />  
  25.    
  26.     <!-- 声明需要暴露的服务接口 -->  
  27.     <dubbo:service interface="com.unj.dubbotest.provider.DemoService" ref="demoService" />  
  28.       
  29. </beans>  
            加载Spring配置,启动服务:
  1. package com.unj.dubbotest.provider;  
  2.   
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  4.   
  5. public class Provider {  
  6.    
  7.     public static void main(String[] args) throws Exception {  
  8.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});  
  9.         context.start();  
  10.    
  11.         System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟  
  12.     }  
  13.    
  14. }  

       3.定义服务消费者

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

  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="hehe_consumer" />  
  12.   
  13.     <!-- 使用zookeeper注册中心暴露服务地址 -->  
  14.     <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->  
  15.     <dubbo:registry address="zookeeper://127.0.0.1:2181" />  
  16.   
  17.     <!-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->  
  18.     <dubbo:reference id="demoService"  
  19.         interface="com.unj.dubbotest.provider.DemoService" />  
  20.   
  21. </beans>  

              加载Spring配置,并调用远程服务:
  1. package com.alibaba.dubbo.demo.pp;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  6.   
  7. import com.unj.dubbotest.provider.DemoService;  
  8.   
  9. public class Consumer {  
  10.   
  11.     public static void main(String[] args) throws Exception {  
  12.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(  
  13.                 new String[] { "applicationContext.xml" });  
  14.         context.start();  
  15.   
  16.         DemoService demoService = (DemoService) context.getBean("demoService"); //  
  17.         String hello = demoService.sayHello("tom"); // ִ  
  18.         System.out.println(hello); //   
  19.   
  20.         //   
  21.         List list = demoService.getUsers();  
  22.         if (list != null && list.size() > 0) {  
  23.             for (int i = 0; i < list.size(); i++) {  
  24.                 System.out.println(list.get(i));  
  25.             }  
  26.         }  
  27.         // System.out.println(demoService.hehe());  
  28.         System.in.read();  
  29.     }  

 

dubbo 官网:http://dubbo.io/

dubbo  git 例子地址:https://github.com/dubbo

dubbo   git 源码地址:https://github.com/alibaba/dubbo

 

 

本文参考  地址:http://www.cnblogs.com/Javame/p/3632473.html

 

 

  • 大小: 68.9 KB
  • 大小: 147.5 KB
分享到:
评论

相关推荐

    dubbo的简单小demo

    这个dubbo的小demo展示了如何使用Dubbo、Zookeeper、Maven和SpringBoot来构建一个简单的分布式服务系统。服务提供者通过dubbo-provider模块对外提供服务,服务消费者通过dubbo-consumer模块调用这些服务。整个过程中...

    dubbo的一个小demo

    【标题】"dubbo的一个小demo"展示了如何在实际开发中集成并运用Dubbo这一分布式服务框架。Dubbo是阿里巴巴开源的一款高性能、轻量级的服务治理框架,它主要用于实现服务的发布、查找和调用,旨在提高微服务架构中的...

    Dubbo-Demo

    【描述】"初学Dubbo的一个简单案例"意味着这个项目包含了一个基本的配置和实现,演示了如何设置服务提供者和服务消费者。服务提供者是系统中提供特定功能模块的组件,而服务消费者则是调用这些功能的模块。通过这个...

    Dubbo入门实例Demo

    【Dubbo入门实例Demo】是针对初学者设计的一个实践教程,旨在帮助新手快速理解并掌握Apache Dubbo这一高性能、轻量级的Java RPC框架。在学习过程中,新手往往会在配置、依赖、通信等方面遇到诸多问题,这个Demo就是...

    dubbo-demo

    【标题】"dubbo-demo" 是一个基于阿里巴巴开源框架Dubbo的示例项目,它提供了对Dubbo功能的直观演示,旨在帮助开发者更好地理解和学习如何在实际应用中使用Dubbo。 【描述】"dubbo-demo" 提供了一个全面的演示环境...

    dubbo整合springmvc项目搭建Demo

    本项目“dubbo整合springmvc项目搭建Demo”旨在为初学者提供一个基础的示例,展示如何将Dubbo与SpringMVC整合,构建一个完整的微服务架构。在开始之前,确保你已经安装了Zookeeper,这是Dubbo的服务注册与发现中心。...

    dubbo 简单测试DEMO

    总的来说,这个"Dubbo简单测试DEMO"是一个很好的起点,它涵盖了Dubbo的基本使用流程,包括服务的创建、消费、注册与发现。通过实践这个DEMO,初学者能对Dubbo有更直观的认识,并为进一步深入学习和应用Dubbo打下坚实...

    dubbo+zookeper+jar demo

    【Dubbo + ZooKeeper + Jar Demo】:这是一个关于如何整合分布式服务框架Dubbo与分布式协调服务ZooKeeper,并以Jar包形式运行的演示项目。在这个项目中,我们将深入理解Dubbo和ZooKeeper的核心概念,以及如何将它们...

    Dubbo环境搭建及入门Demo_代码

    通过以上步骤,你已经完成了Dubbo环境的搭建,并且编写了一个简单的入门Demo。在实际项目中,还需要考虑服务的负载均衡策略、容错机制、监控等高级特性。Dubbo提供了丰富的配置项和扩展点,可以根据需求进行定制,以...

    dubbo入门demo样例

    在这个“dubbo入门demo样例”中,我们将探讨如何使用Dubbo构建一个简单的服务消费者和服务提供者。 首先,项目采用Maven作为构建工具,Maven可以帮助我们管理项目的依赖关系,简化构建过程。在项目中,你将看到两个...

    我的dubbo demo

    1. `Dubbo入门---搭建一个最简单的Demo框架 - CSDN博客.html`:这是一个CSDN博客文章,很可能详细介绍了如何搭建这个Dubbo Demo,包括步骤、配置、代码示例等。CSDN是中国知名的程序员社区,其中的博客文章通常由...

    dubbo资源 dubbo-admin dubbo demo

    【标题】"dubbo资源 dubbo-admin dubbo demo" 提供的是关于Apache Dubbo的相关素材,主要包括了Dubbo-admin的管理和示例项目。Dubbo是一个高性能、轻量级的开源Java RPC框架,它提供了丰富的服务治理功能,是阿里...

    spring dubbo demo

    Spring Dubbo Demo是一个基于Spring和Dubbo框架的简单示例项目,主要用于展示如何在IntelliJ IDEA(简称Idea)开发环境中实现生产者-消费者模式。在这个项目中,我们将探讨Dubbo的核心概念、Spring整合Dubbo的方式...

    基于springboot的dubbo微服务应用demo

    基于springboot的dubbo微服务应用demo,加入了springHttpInvoker接口作为学习测试 api模块为公共实体及服务接口,内有测试用的sql数据脚本 consumer为dubbo服务的消费者及测试 两个provider为不同的dubbo服务...

    本地搭建一套dubbo架构demo

    本地搭建一套dubbo架构demo,包括zookeeper及后台DubboKeeper dubbo-admin后台管理 dubbo-monitor简易监控中心

    dubbo_zookeeper_201410Demo

    Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点 这是我参照前人自己搭建的一个demo,详细过程可以参考 ...

    dubbo+zookeeper+spring -demo

    这个“dubbo+zookeeper+spring -demo”是一个实际应用了这三者的分布式系统演示项目。 1. **Dubbo服务框架**: Dubbo的核心设计理念是面向接口的编程,它允许服务提供者暴露服务,而服务消费者透明地调用。服务...

Global site tag (gtag.js) - Google Analytics