• 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:DubboxServicezookeeperin,双击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 omcat_dubbox_admin_servicewebappsROOTWEB-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

  • 相关阅读:
    JavaScript 随机产生十个整数,放入数组中,对这个数组进行降序排序,并获取到这个数组的最大值和最小值
    JavaScript输出换行
    JavaScript超时调用、间歇调用
    JavaScript内置对象
    JavaScript事件列表
    JavaScript 中 for-in和 for-of 的区别
    JavaScript break指定标签打破多层循环示例
    初识JavaScript
    HTML + CSS CSS设置背景图片后图片没有铺满屏幕等
    设计模式之工厂模式
  • 原文地址:https://www.cnblogs.com/vanl/p/5671457.html
Copyright © 2020-2023  润新知