一、工作原理图

这是dubbo官网的关于dubbo工作原理,其中最核心的应该是Registry注册中心,Monitor,Consumer消费者和Provider服务提供者四个部分,注册中心关系这消费者和提供者的在zookeeper上的注册状态,Monitor控制着消费者,提供者启用和禁用。

一、服务提供者

dubbo的git源码有提供一个provider案例工程,dubbo-demo-provider。上面有一段spring配置文件,dubbo-demo-provider.xml,其内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!--- Copyright 1999-2011 Alibaba Group.-  - Licensed under the Apache License, Version 2.0 (the "License");- you may not use this file except in compliance with the License.- You may obtain a copy of the License at-  -      http://www.apache.org/licenses/LICENSE-2.0-  - Unless required by applicable law or agreed to in writing, software- distributed under the License is distributed on an "AS IS" BASIS,- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.- See the License for the specific language governing permissions and- limitations under the License.
-->
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xmlns="http://www.springframework.org/schema/beans"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 提供方应用信息,用于计算依赖关系 --><dubbo:application name="demo-provider"/><!-- 使用multicast广播注册中心暴露服务地址 --><!-- <dubbo:registry address="multicast://224.5.6.7:1234"/> --><dubbo:registry address="zookeeper://192.168.43.33:2181"/> <!-- 用dubbo协议在20880端口暴露服务 --><dubbo:protocol name="dubbo" port="20880"/><!-- 和本地bean一样实现服务 --><bean id="demoService" class="com.alibaba.dubbo.demo.provider.DemoServiceImpl"/><!-- 声明需要暴露的服务接口 --><dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService"/></beans>

其中,1)dubbo:application标签作用是给提供者备注一个名称,这个名称一旦被取了,其他提供者就不能再用这个名称。

2)dubbo:registry标签的作用,就是讲应用注册到注册中心,原例子是在用多广播方式进行注册,可以改为注册到我们安装的zookeeper上,我的zookeeper服务地址是192.168.43.33,端口默认2181。

3)dubbo:protocol标签是标注这个本次服务的协议,暴露的端口,现在是采用dubbo协议,20880端口。

4)dubbo:service标签是声明提供者服务用的。

具体实现服务代码比较简单,是一个helloworld程序,不再做介绍。

二、服务消费者

dubbo的git源码有提供一个consumer案例工程,dubbo-demo-consumer。上面有一段spring配置文件,dubbo-demo-consumer.xml,其内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!--- Copyright 1999-2011 Alibaba Group.-  - Licensed under the Apache License, Version 2.0 (the "License");- you may not use this file except in compliance with the License.- You may obtain a copy of the License at-  -      http://www.apache.org/licenses/LICENSE-2.0-  - Unless required by applicable law or agreed to in writing, software- distributed under the License is distributed on an "AS IS" BASIS,- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.- See the License for the specific language governing permissions and- limitations under the License.
-->
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xmlns="http://www.springframework.org/schema/beans"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 --><dubbo:application name="demo-consumer"/><!-- 使用multicast广播注册中心暴露发现服务地址 --><!--  <dubbo:registry address="multicast://224.5.6.7:1234"/>--><dubbo:registry address="zookeeper://192.168.43.33:2181"/> <dubbo:protocol name="dubbo" port="20880"/><!-- 生成远程服务代理,可以和本地bean一样使用demoService --><dubbo:reference id="demoService" check="false" interface="com.alibaba.dubbo.demo.DemoService"/></beans>

上面的配置文件跟provider相似,比较特别就是他是消费者,没有服务提供一说,而是用dubbo:reference来标明自己要调用提供者的那个服务,响应名称又跟提供者对应。

三、运行结果

程序的调用顺序是要先把provider启动起来,然后运行consumer工程的,会发现eclipse的console中有如下日志:

说明服务已经成功调用

四、注意环节

消费者要跑起来,还要在该工程的pom.xml中引入一个

  <dependency><groupId>com.alibaba</groupId><artifactId>dubbo-demo-api</artifactId><version>${project.parent.version}</version></dependency>

这段引用是对应dubbo开源项目中的dubbo-demo-api这个工程,主要是实现一个与provide对应服务相同的一个接口,给消费者调用,不然程序会报错,当你在eclipse用鼠标,点击

    <dubbo:reference id="demoService" check="false" interface="com.alibaba.dubbo.demo.DemoService"/>

中的interface的内容,就会跳到相应的代码,相应代码如下:

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

转载于:https://my.oschina.net/u/3702/blog/1556520

dubbo学习笔记 第三章简介dubbo的工作原理相关推荐

  1. dubbo学习笔记 第四章构建dubbo的web应用 上

    上一章节介绍了dubbo的开源项目自带的例子,但是这些例子都是直接运行main方法来跑代码,实际应用中我们更多地是需要使用web应用来支撑,接下来介绍一下如何搭建dubbo的web应用,我们将用的sp ...

  2. 《Go语言圣经》学习笔记 第三章 基础数据类型

    <Go语言圣经>学习笔记 第三章 基础数据类型 目录 整型 浮点数 复数 布尔型 字符串 常量 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记, ...

  3. 机器人导论(第四版)学习笔记——第三章

    机器人导论(第四版)学习笔记--第三章 3 操作臂运动学 3.1 引言 3.2 连杆的描述 3.3 连杆连接的描述 3.4 连杆坐标系的定义 3.5 操作臂运动学 3.6 驱动空间.关节空间和笛卡尔空 ...

  4. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第三章:简单控件

    第 3 章 简单控件 本章介绍了App开发常见的几类简单控件的用法,主要包括:显示文字的文本视图.容纳视图的常用布局.响应点击的按钮控件.显示图片的图像视图等.然后结合本章所学的知识,演示了一个实战项 ...

  5. Win32学习笔记 第三章 HelloWin 选择自 villager 的 Blog

    Win32学习笔记 作者: 姜学哲(netsail0@163.net) 教材: Windows程序设计(第五版)北京大学出版社  [美]Charles Petzold 著  北京博彦科技发展有限公司 ...

  6. ros2 Navigation 学习笔记 第三章(the construct 网站)

    第三章 如何在环境中给机器人定位 序言 本章包括: 机器人定位的意义(即需要知道它对于环境中的位置和方向) 如何在ROS2中用AMCL定位 如何设置机器人的初始位置(手动.自动与使用ROS API) ...

  7. 信号与系统学习笔记 第三章

    第三章 周期信号的傅里叶级数表示 下面将讨论信号与线性时不变系统的另一种表示,讨论的出发点仍是将信号表示成一组基本信号的线性组合.这是因为,将信号表示成基本信号的线性组合是有利的,如果基本信号具有一下 ...

  8. 仿生学导论学习笔记——第三章

    第三章 仿生学基本要素 3.1 仿生需求 3.1.1 需求驱动 3.1.1.1 生存需求 3.1.1.2 健康需求 3.1.1.3 军事需求 3.1.1.4 发展需求 3.1.1.5 精神需求 3.1 ...

  9. 计算机网络学习笔记——第三章:数据链路层

    目录 第三章:数据链路层 3.1 数据链路层功能概述 3.2 封装成帧和透明传输 3.3 差错控制 3.3.1 检错编码 3.3.2 纠错编码 3.4 流量控制与可靠传输机制 3.4.1 流量控制.可 ...

最新文章

  1. Java swing 如何将一个按钮放置到弹出框框的任意位置?(Absolute layout 布局的使用)...
  2. Android监视返回键
  3. oracle ssl发送邮件,使用javax.mail发送带有ssl的电子邮件
  4. HDU3333 Turing Tree 离线树状数组
  5. Node服务一键离线部署
  6. k-substrings(CF961F)
  7. (转)某公司ICO涉嫌“擅自发行股票罪” 判处有期徒刑一年六个月
  8. 【语音识别】基于matlab矢量量化(VQ)说话人识别【含Matlab源码 575期】
  9. 16.第二十二章.信息安全管理
  10. 阿里云弹性计算ECS科普
  11. 基于元数据规则的大数据解决方案
  12. 时区的转换nbsp;格林尼治标准时间(GMT…
  13. DatawhaleLeeML-Task05-网络设计的技巧第二部分
  14. java是要在安装的盆运行吗,Java程序员(单身30年):告诫各位,千万不要和女程序员做同事!...
  15. COMPILATION ERROR
  16. docker cp传递整个目录
  17. 24年前他被余承东招入华为,现在掌舵第四大事业群,对垒阿里张建锋、百度王海峰,腾讯汤道生...
  18. 计算机系统实验六:程序的链接
  19. SuperMap iClient3D for WebGL教程 粒子特效-扩展喷泉特效
  20. 刚拿下字节50万offer,想上岸的请一字一句看清楚

热门文章

  1. 服务器发送退出状态127,WebDriverException:消息:服务chromedriver意外退出。状态代码为:127...
  2. ppt怎么加注解文字_ppt注释的使用方法
  3. scanner nextstring 空格_毫不起眼的小技巧,居然一分钟删除了数据中所有空格
  4. Android之View的绘制流程解析
  5. ( Android-大神博客)
  6. scratch小游戏脚本大全_酷酷带你一起做小游戏--跳一跳
  7. 第29月第21天 ios android curl
  8. 接上一篇配置多仓库相关命令
  9. 【javascript】—— JS判断浏览器类型、操作系统
  10. EntityFramework之原始查询及性能优化(六)