Dubbo入门--Hello World

转载自:http://blog.csdn.net/hanmov/article/details/66973957?locationNum=2&fps=1

  1. 介绍
    Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 spring框架无缝集成。简单来说,就是远程服务提供接口,隐藏具体实现,调用方通过dubbo连接到远程服务,通过接口可以调用方法进行操作或者获取数据,而不用关心具体实现细节。
  2. Hello World
    <1> 搭建Java maven项目,引入对应的DubboJar包依赖

     <!--Dubbo-阿里巴巴服务治理框架 Libs  Begging--><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.5.3</version></dependency><!--Dubbo-阿里巴巴服务治理框架 Libs  Endding-->

    注:
    dubbo是阿里开源的一个项目,但只维护到2.5.3版本,现在maven仓库里面最新
    的也只有这个版本,后续由dangdang团队维护到了2.8.3版本,并命名为dubbox 地址:http://dangdangdotcom.github.io/dubbox/。
    切记,这两个版本并不兼容,笔者之前项目里面由于服务商用了dubbox,而本地一直在用dubbo2.5.3版本,一直出错,花了很长时间才解决。

    <2> 实现DemoService和DemoServiceImpl的接口及实现类

    接口:

    package com.alibaba.dubbo.demo;public interface DemoService {String sayHello(String name);
    }

    实现类:

    package com.alibaba.dubbo.demo;import com.alibaba.dubbo.demo.DemoService;public class DemoServiceImpl implements DemoService {public String sayHello(String name) {return "Hello " + name;
    }
    }

<2>dubbo是跟spring无缝集成的,这里我们新建两个配置文件,分别为:

provider.xml:模拟服务提供商

<?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: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://code.alibabatech.com/schema/dubbo        http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="hello-world-app"  /><!-- 使用multicast广播注册中心暴露服务地址 -->
<dubbo:registry address="multicast://224.5.6.7:1234" /><!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" /><!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" /><!-- 和本地bean一样实现服务 -->
<bean id="demoService" class="com.alibaba.dubbo.demo.DemoServiceImpl" /></beans>

dubbo:registry定义注册中心和对外暴露的地址(给调用方使用),默认集成的是multicast注册中心,一般正式环境中会用zookeeper来做,这里我们简单就用默认的。 
dubbo:service声明暴露的服务接口,这里是我们自己写的一个DemoService接口和DemoServiceImpl实现类,后面接口提供给调用方。

consumer.xml:模拟服务调用方

<?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: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://code.alibabatech.com/schema/dubbo        http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="consumer-of-helloworld-app"  /><!-- 使用multicast广播注册中心暴露发现服务地址 -->
<dubbo:registry protocol="multicast" address="224.5.6.7:1234"/><!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
<dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService" /></beans>

dubbo:registry指定服务提供方的地址和协议 
dubbo:reference根据提供方提供的接口,生成远程服务代理

3)模拟服务提供方和调用方: 
新建Java类Provider.java:

package com.alibaba.dubbo.demo.provider;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Provider {public static void main(String[] args) throws Exception {  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"provider.xml"});  context.start();  System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟  }
}

新建java类Consumer.java:

package com.alibaba.dubbo.demo.consumer;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.alibaba.dubbo.demo.DemoService;public class Consumer {public static void main(String[] args) throws Exception {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"consumer.xml"});//context.start();DemoService api = (DemoService)context.getBean("demoService"); // 获取远程服务代理System.out.println(api.sayHello("你好"));context.destroy();}
}

先运行Provider类,让服务方运行,再运行Consumer类,控制台打印“Hello 你好”信息,说明consumer通过Dubbo调用服务方的代码成功。

dubbo入门--Hello World相关推荐

  1. Dubbo入门Demo

    2019独角兽企业重金招聘Python工程师标准>>> 1.Dubbo简单介绍 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方 ...

  2. dubbo入门学习笔记之入门demo(基于普通maven项目)

    注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...

  3. Dubbo入门(2) - 简单实践

    作者:不洗碗工作室 - Marklux 出处:Dubbo入门(2) - 简单实践 版权归作者所有,转载请注明出处 在了解什么是分布式框架之后,我们需要上手实践一下,来了解整个系统是如何运作起来的. 本 ...

  4. Dubbo入门介绍---搭建一个最简单的Demo框架

    Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbo zookeeper 更多 个人分类: ...

  5. 基于Springboot2.0的Dubbo入门项目(dubbo-spring-boot-starter)

    Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成.最近半年来,Dubbo的得到了快速的维护,官方也推出了 ...

  6. Dubbo入门之hello world(zookeeper做注册中心)

    说明:注册中心可以用多种,项目中一般都用zookeeper 注册中心方式 demo1用的multicast广播注册中心方式 会了multicast广播注册中心方式,zookeeper就很简单了 dem ...

  7. Dubbo入门----搭建一个最简单的Demo框架

    Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本. ...

  8. Dubbo入门---搭建一个最简单的Demo框架

    Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本. ...

  9. Dubbo入门(一)

    目录 一.Dubbo核心概念 1.简介 2.基本概念 3.Dubbo环境搭建(windows) (1)安装zookeeper (2)安装dubbo-admin管理控制台 二.快速入门 gmail-in ...

最新文章

  1. Android移动开发之【Android实战项目】在Service中弹出Dialog对话框,即全局性对话框
  2. 导入python标准数学函数模块的语句_《Python编程快速上手——让繁琐工作自动化》——2.8 导入模块...
  3. wxWidgets:wxGauge类用法
  4. [蓝桥杯][2018年第九届真题]迷宫与陷阱(三维数组标记BFS)
  5. python选取tensor某一维_Pytorch的Tensor操作(1)
  6. NPOI 教程 - 3.2 打印相关设置
  7. 基于JAVA+SpringMVC+MYSQL的学生成绩管理系统
  8. 商品翻牌效果(纯css)
  9. ThinkCMF框架修复漏洞 名称:ThinkPHP5 远程代码执行高危漏洞(CNNVD-201812-617)
  10. html放大镜小图标,图片放大镜jquery.jqzoom.js使用实例附放大镜图标
  11. 北京工业大学外网访问知网数据库方法
  12. mysql存储过程和mysql函数
  13. Oracle增删改查
  14. C语言 | 文件打开关闭
  15. 通过web修改AD账号密码(无需第三方工具)
  16. mysql常用操作(二)
  17. Excel 去除重复项的几种常用技巧
  18. 常见项目管理组织机构简介
  19. 字节飞书后端面经(已offer)
  20. idea创建web项目步骤

热门文章

  1. Redis 笔记(12)— 单线程架构(非阻塞 IO、多路复用)和多个异步线程
  2. QT中使用rubberband橡皮筋等方法进行选中多个物体
  3. Java箭头函数,lambda函数
  4. 用心真诚对待,懂你的人
  5. 使用最新版(2020)IntelliJ IDEA 新建 Spring Boot 2.0 项目
  6. Java基本数据之间的类型转换
  7. Xilinx低比特率高品质 ABR 视频实时转码(HPE 参考架构)
  8. MLIR算子量化Quantization
  9. 3D车道线检测:Gen-LaneNet
  10. CVPR2018论文看点:基于度量学习分类与少镜头目标检测