dubbo学习笔记 第三章简介dubbo的工作原理
一、工作原理图
这是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的工作原理相关推荐
- dubbo学习笔记 第四章构建dubbo的web应用 上
上一章节介绍了dubbo的开源项目自带的例子,但是这些例子都是直接运行main方法来跑代码,实际应用中我们更多地是需要使用web应用来支撑,接下来介绍一下如何搭建dubbo的web应用,我们将用的sp ...
- 《Go语言圣经》学习笔记 第三章 基础数据类型
<Go语言圣经>学习笔记 第三章 基础数据类型 目录 整型 浮点数 复数 布尔型 字符串 常量 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记, ...
- 机器人导论(第四版)学习笔记——第三章
机器人导论(第四版)学习笔记--第三章 3 操作臂运动学 3.1 引言 3.2 连杆的描述 3.3 连杆连接的描述 3.4 连杆坐标系的定义 3.5 操作臂运动学 3.6 驱动空间.关节空间和笛卡尔空 ...
- 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第三章:简单控件
第 3 章 简单控件 本章介绍了App开发常见的几类简单控件的用法,主要包括:显示文字的文本视图.容纳视图的常用布局.响应点击的按钮控件.显示图片的图像视图等.然后结合本章所学的知识,演示了一个实战项 ...
- Win32学习笔记 第三章 HelloWin 选择自 villager 的 Blog
Win32学习笔记 作者: 姜学哲(netsail0@163.net) 教材: Windows程序设计(第五版)北京大学出版社 [美]Charles Petzold 著 北京博彦科技发展有限公司 ...
- ros2 Navigation 学习笔记 第三章(the construct 网站)
第三章 如何在环境中给机器人定位 序言 本章包括: 机器人定位的意义(即需要知道它对于环境中的位置和方向) 如何在ROS2中用AMCL定位 如何设置机器人的初始位置(手动.自动与使用ROS API) ...
- 信号与系统学习笔记 第三章
第三章 周期信号的傅里叶级数表示 下面将讨论信号与线性时不变系统的另一种表示,讨论的出发点仍是将信号表示成一组基本信号的线性组合.这是因为,将信号表示成基本信号的线性组合是有利的,如果基本信号具有一下 ...
- 仿生学导论学习笔记——第三章
第三章 仿生学基本要素 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 ...
- 计算机网络学习笔记——第三章:数据链路层
目录 第三章:数据链路层 3.1 数据链路层功能概述 3.2 封装成帧和透明传输 3.3 差错控制 3.3.1 检错编码 3.3.2 纠错编码 3.4 流量控制与可靠传输机制 3.4.1 流量控制.可 ...
最新文章
- Java swing 如何将一个按钮放置到弹出框框的任意位置?(Absolute layout 布局的使用)...
- Android监视返回键
- oracle ssl发送邮件,使用javax.mail发送带有ssl的电子邮件
- HDU3333 Turing Tree 离线树状数组
- Node服务一键离线部署
- k-substrings(CF961F)
- (转)某公司ICO涉嫌“擅自发行股票罪” 判处有期徒刑一年六个月
- 【语音识别】基于matlab矢量量化(VQ)说话人识别【含Matlab源码 575期】
- 16.第二十二章.信息安全管理
- 阿里云弹性计算ECS科普
- 基于元数据规则的大数据解决方案
- 时区的转换nbsp;格林尼治标准时间(GMT…
- DatawhaleLeeML-Task05-网络设计的技巧第二部分
- java是要在安装的盆运行吗,Java程序员(单身30年):告诫各位,千万不要和女程序员做同事!...
- COMPILATION ERROR
- docker cp传递整个目录
- 24年前他被余承东招入华为,现在掌舵第四大事业群,对垒阿里张建锋、百度王海峰,腾讯汤道生...
- 计算机系统实验六:程序的链接
- SuperMap iClient3D for WebGL教程 粒子特效-扩展喷泉特效
- 刚拿下字节50万offer,想上岸的请一字一句看清楚
热门文章
- 服务器发送退出状态127,WebDriverException:消息:服务chromedriver意外退出。状态代码为:127...
- ppt怎么加注解文字_ppt注释的使用方法
- scanner nextstring 空格_毫不起眼的小技巧,居然一分钟删除了数据中所有空格
- Android之View的绘制流程解析
- ( Android-大神博客)
- scratch小游戏脚本大全_酷酷带你一起做小游戏--跳一跳
- 第29月第21天 ios android curl
- 接上一篇配置多仓库相关命令
- 【javascript】—— JS判断浏览器类型、操作系统
- EntityFramework之原始查询及性能优化(六)