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

 

posted @ 2016-07-14 19:07  夏日树叶  阅读(1435)  评论(0编辑  收藏  举报