Dubbo使用详解及环境搭建
一:Dubbo简介
Dubbo是阿里巴巴提供的开源的SOA(面向服务的体系结构)服务化治理的技术框架,据说只是一部分开源的,但一些基本的需求已经可以满足的,而且可扩展性。是一种能取代PHRPC的服务调用方式,优点在于配置简单,二次开发性强,同时DUBBO对代码的侵入性低。
二:Dubbo整体理解
现在DUBBO的配置文件主要分为两部门dubboConsumer.xml (可以理解为客户端) ,dubboProvider.xml(服务端)用通俗的话来讲dubboConsumer是调用方,dubboProvider是被调用方.
Dubbo的框架图:
怎么去理解这个框架呢? 简单的说就是对于服务端与客户端来说它们有一个公共的注册中心Registry ,服务端会将需要被调用的服务放到注册中心上去,客户端将会去注册中心里调用自己需要的服务,现在我的会搭建DUBBO的监控中心Monitor,用于对DUBBO调用的监控,包括了解接口调用的具体走向,黑白名单控制等(这上面有很多可视化的功能,后期可以自己摸索)。
三:本地环境搭建
在明白DUBBO整体结构之后,我们本地环境的搭建就变得容易了,我们首先需要一个注册中心,然后让我们的服务端和客户端都指向这个注册中心,然后客户端要调用哪个接口在dubboConsumer.xml(名字可以自定义,具体说明什么,请看下面实例)中说明一下,服务端要暴露哪个接口在dubboProvider.xml里说明一下。这样简单的DEMO就可以完成了。下面,LZ将自己的整个搭建过程详细的分享给大家。
3.1.注册中心搭建(Registry)
关于这个注册中心,LZ这里给到的是zookeeper.rar的压缩包。解压之后,我们需要在zookeeper注册中心中新建两个目录,一个叫data,一个叫logs。如图:
当然LZ提供的这个压缩包已经建好了这两个文件夹。这两个文件夹简单的理解就是存放数据和日志的地方。然后我们点开目录中的conf文件夹,找到zoo.cfg,打开此配置文件,如图:
1.控制心跳和超时,以毫秒为单位。
2.初始化时间,以毫秒为单位。
3.请求与响应时间,以毫秒为单位。
4.数据存放的地方,这就是一开始LZ说的,新建文件夹data的地方。
5.日志存放的地方,这就是一开始LZ说的,新建文件夹logs的地方。
6.监听客户端连接的端口。
下面就是启动注册中心了:你可以通过命令窗口的形式启动,也可以找到解压的zookeeper,E:\DubboxService\zookeeper\bin,双击zkServer.cmd即可启动注册中心。
3.2.监控中心搭建(Monitor)
关于监控中心,LZ这里给到的是dubbo-admin-2.5.4.war,这仅仅是个war包,还需要部署服务器。首先找一个tomcat服务器,把此war包拷贝到tomcat目录\webapps\ 下。 其次,将dubbo-2.5.3.jar文件拷贝到tomcat目录\lib\ 下。双击startup.bat启动tomcat。
启动tomcat之后,我们找到此目录下:E:\DubboxService\tomcat_dubbox_admin_service\webapps\ROOT\WEB-INF,如图:
打开dubbo.properties配置文件,如图:
第一行:ip地址即为我们启动注册中在哪个地方的ip地址,注册中心默认端口号2181,当然你一台机器上起两个注册中心,那么另外一个注册中心的端口号就可以改为2182等。既然是监控中心,言外之意就是要知道注册中心在哪里,我去监控谁,这里的ip就告诉你了,你要去监控谁。
第二行与第三行:我前面说过,这个监控中心中有很多可视化的管理功能,需要用户名和密码登录方可,这两行就是设置不同权限的密码。
注意:在这里提醒一下大家,要先启动注册中心,然后在启动监控中心。
在浏览器中输入localhost:8088(这个端口号是自己修改的,因为LZ的tomcat较多,有时候同时启动好几个tomcat,为避免冲突,故该之)如图:
输入用户名及密码,这里的用户名及密码,是我们前面提到过的。如图:
至此,监控中心以搭建完成。
3.3.客户端搭建(Consumer)
客户端以LZ实际的项目为例,以freight-enquiry-rest为客户端为例:
首先:maven依赖Dubbo框架所需要的jar包:如图pom文件中添加:
其次:在工程的配置中添加Dubbo客户端的配置文件:
下面LZ来解释一下下图该配置文件:
1.添加Dubbo的命名空间及约束规则,但是这个dubbo.xsd网上仓库下载不到,需要自己网上下载dubbo.xsd文件,然后手动加到eclipse中。如果不这样,下面用到的属性标签就会找不到,会报错。下面是添加dubbo.xsd的过程:
图上标注的地方,相信广大博友都能看的懂。LZ建议,这个xsd文件放到一个何时的位置保存,以备后续用到。
2.分析该配置项:
Application你自己定义的名字。
Address注册中心的地址(这个地址LZ的项目是统一管理的,放在diamond服务器上)。
Check是否检查服务端是否存在。
Id调用的接口名。
Interface接口的全类名。
Reggroup 默认是dubbo,环境隔离属性。
最后,客户端的配置基本都以完成。
3.4.服务端搭建(Provider)
服务端以LZ实际的项目为例,以efcl-enquiry-ds为服务端为例:在这里不多说,基本上类似客户端的搭建步骤一样,只是服务端的配置信息与客户端的配置信息不同。LZ在这里只提供截图。(算我偷懒了)
pom文件:
工程目录结构:
服务端配置文件内容:
最后说一下:最后一行中的ref是该接口的具体实现类,就是spring容器中的bean的id。
3.5.说在最后
相信广大博友发现,LZ这里提到的服务端和客户端的配置文件中,像这种"${dubbo.address}"取值的地方,可能不解。前面也提到过,这是LZ本人实际项目把配置统一管理的效果。
配置信息统一管理之Diamond服务:
本地服务加载配置信息:
所以这样以来,我刚才的服务端与客户端的配置文件中,这样就可以取到值了。
客户端调用:
-------------------------------------------------------------------------------------------------------------------------
LZ现在对dubbo的使用只是冰山一角,DUBBO有非常丰富的配置标签属性,如果后续有兴趣可以去查阅这两个网址:
DUBBO的使用场景,优势等
http://www.iteye.com/magazines/103
DUBBO的使用官网
http://dubbo.io/User+Guide-zh.htm
Dubbo使用详解及环境搭建的更多相关文章
- CefSharp 集成谷歌浏览器详解---(一)环境搭建(没测试过,不知道好不好用)
https://blog.csdn.net/zpyxman/article/details/78538808
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “看看星空,会觉得自己很渺小,可能我们在宇宙中从来就是一个偶然.所以,无论什么事情,仔细想一 ...
- 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(下)
在上一篇(详解intellij idea 搭建SSM框架(spring+maven+mybatis+mysql+junit)(上))博文中已经介绍了关于SSM框架的各种基础配置,(对于SSM配置不熟悉 ...
- 详解Windows平台搭建Androiod开发环境
http://blog.csdn.net/lyq8479/article/details/6348330 1.安装JDK 2.安装SDK管理器,安装SDK(在线.离线) 3.下载安装Eclipse 4 ...
- glusterfs详解及kubernetes 搭建heketi-glusterfs
本文包含: gluster各存储卷详解.创建及使用 gluster-kubernetes搭建glusterfs存储 前言 传统的运维中,往往需要管理员手动先在存储集群分配空间,然后才能挂载到应用中去. ...
- 【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 : -- u-boo ...
- Dubbo配置文件详解
为新项目练手,把项目中用到的web service.RMI的服务改用Dubbo+Zookeeper+Spring,网上找到几篇不错的配置详解 1.此篇博文主要从以下几种配置方式来讲 XML 配置文件方 ...
- linux超级块和inode 详解 和 df 、du 命令详解与环境变量
一.inode块,Unix文件的核心. 首先需要明白的是,在Unix操作系统中的任何资源都被当作文件来管理.如目录.光驱.终端设备等等,都被当作是一种文件.从这方面来说,Unix操作系统中的所有的目录 ...
- 图文详解如何快捷搭建LNMP服务环境
上一篇与大家一起学习了下如何搭建LAMP环境的知识,今天小编再和大家分享下如何快捷地搭建LNMP环境,并搭建起一个网站.Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/S ...
随机推荐
- (转)ubuntu下如何查看软件安装目录以及安装版本
1.查询版本 aptitude show 软件名 例如:aptitude show kde-runtime 显示如下: ****@ubuntu:~$ aptitude show kde-runtime ...
- boost vc编译
0.下载:http://www.boost.org/ 1.编译b2.exe,bjam.exe. 双击根目录下面的bootstrap.bat文件,生成b2.exe,bjam.exe(或者使用vs的命令行 ...
- Android实现点击事件的4种方式
一.通过在activity_main.xml中,按钮button控件中添加onclick事件实现 在 activity_main.xml 对应的按钮Button中加入下面红色事件 <Butt ...
- ASPCMS 多条件查询
1. 表单样例: <form name="topFrm" id="topFrm" action="/search.asp"> & ...
- 【转】cocos2d-x windows开发环境配置
声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级后的cocos2d-x有了一些变化,目前的博文还没有关于Cocos2d-x 2.2.1最新版搭建Android交 ...
- [C++程序设计]内置函数
注意: 可以在声明函数和定义函数时同时写 inline,也可以只在其中一处声明inline,效果相同,都能按内置函数处理. 使用内置函数可以节省运行时间,但却增加了目标 程序的长度.因此一般只将规模很 ...
- ecos编译redboot,vmware运行redboot,执行hello world(图形配置)
1- 下载源文件 :~/ecos$ ls -lrt total 80 drwxr-xr-x 7 XXXX XXXX 4096 Mar 27 2009 ecos-3.0 -rw-r--r-- 1 X ...
- Zend Studio 文件头和方法注释设置
在zend studio中选择窗口->首选项->PHP–>编辑器 –>模板 –>新建 然后添加 funinfo或fileinfo 模板代码根据下边定义的COPY过去就可以 ...
- 15个顶级Java多线程面试题及回答
Java 线程面试问题 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分.如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程 的问题.在投资银行业务中多线程和并发 ...
- HDU 1026 Ignatius and the Princess I(BFS+优先队列)
Ignatius and the Princess I Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d &am ...