1. 什么是Dubbo
Dubbo是一款开源的高性能、轻量级的服务框架,主要提供三大核心能力:远程接口调用的方法、智能容错和负载均衡以及服务的自动化注册和调用。
随着互联网的发展,网站应用的使用量和访问量不断增大,需求量的不断增加,而面向网站应用的各类构架也再不断更新迭代,下图是目前主流构架的迭代图:
![](https://img.haomeiwen.com/i23317189/a5d4e1034b433b0c.png)
-
单一应用架构 -------- 数据访问框架(ORM)
当网站流量很小时,往往只需一个应用,就可以将所有功能都部署在一起,这种模式被称为ORM框架。
-
垂直应用架构 -------- Web****框架(MVC)
当访问量逐渐增大时,单一应用已经无法满足当前需求,此时则需要将一个应用拆分成互不相关的几个应用,以提升服务器效率,此种模式被称之为Web框架(MVC)。
-
分布式服务架构 -------- 分布式服务框架(RPC)
当垂直应用越来越多时,应用之间的交互也愈发增多,此时则需要把核心的业务逻辑抽取出来,作为独立的服务,形成一套稳定的服务中心,是前端访问的效率变得更快更高,而这种框架被称为RPC框架。
-
流动计算架构 --------- 资源调度和治理中心(SOA)
当独立的服务越来越多时,小服务的资源浪费问题逐渐出现,此时则需要增加一个服务调度中心来实时管理服务集群,提高集群的使用效率,此时,这种构架被称为SOA。
在上面的四种构架模式中,其中Dubbo就是属于资源调度和治理中心的管理工具,可以统计和管理服务之间相互调用情况,比如调用频次、调用对象、调用时间等。
2. Dubbo的架构
![](https://img.haomeiwen.com/i23317189/25485f48350dcda5.png)
- Provider: 服务提供方暴露服务接口。
- Consumer: 服务消费方调用远程服务接口。
- Registry: 服务接口的注册中心与发现中心。
- Monitor: 服务接口调用的监控中心。
- Container: 服务运行容器。
3. Dubbo配置操作
Dubbo的配置操作可结合Spring的配置文件进行配置,针对于服务接口的暴露,在Spring中以供有三种配置模式,第一种未使用到Dubbo,直接通过Spring的方式进行服务暴露;第二种使用到Dubbo,但未使用到注册中心,服务提供者和服务消费者在同一服务器中运行,进行配置;第三种使用到Dubbo,同时也使用到注册中心。
3.1. 单一工程配置
在单一工程中spring的配置文件中添加类似于下面的语句,语句表示为配置服务bean,并开放接口。
<bean id="xxxService" class="com.xxx.XxxServiceImpl" />
<bean id="xxxAction" class="com.xxx.XxxAction">
<property name="xxxService" ref="xxxService" />
</bean>
3.2. 多个工程服务配置
将上面的配置内容进行拆分,将服务定义部分放在服务提供方,将服务引用部分放在服务消费方。并在提供方增加暴露服务配置<dubbo:service>,在消费方增加引用服务配置<dubbo:reference>,在不使用注册中心的情况下,配置如下。
服务层发布服务:
<dubbo:application name="xxx "/>
<!-- 下面的配置就是取消使用注册中心 -->
<dubbo:registry address="N/A"/>
<!--<dubbo:protocol name="dubbo" port="20880" ,不使用注册中心后需要在配置中加入host />-->
<dubbo:protocol port="20880" name="dubbo" host="127.0.0.1" />
<!-- 增加暴露远程服务配置 -->
<dubbo:service interface="com.xxx.XxxService" ref="xxxServiceImpl" />
表现层调用服务:
<dubbo:application name="xxx "/>
<!-- 下面的配置就是取消使用注册中心 -->
<dubbo:registry address="N/A"/>
<!-- 不使用注册中心的时候一定配置url,不然找不到的 -->
<dubbo:reference id="xxxService" interface="com.xxx.XxxService" timeout="300000" url="dubbo://127.0.0.1:20880"/>
3.3. 通过注册中心服务配置
3.3.1 注册中心zookeeper介绍
注册中心主要负责服务地址的注册与查找,服务提供者和服务消费者只会在启动时与注册中心进行交互,注册中心不转发请求,只发送服务对应调用地址。而dubbo-2.3.3以上的版本,官方建议使用zookeeper作为注册中心,具有工业强度较高、稳定性好等特点,可用于广泛的生产环境。
3.3.2 zookeeper的安装
第一步:在linux环境下,安装jdk
第二步:下载zookeeper压缩包,解压
第三步:将conf文件夹下zoo_sample.cfg复制一份,改名为zoo.cfg
第四步:修改配置dataDir属性,指定一个真实目录(进入zookeeper解压目录,创建data目录:mkdir data)
![](https://img.haomeiwen.com/i23317189/865d2185af86af2f.png)
第五步:执行zookeeper相关命令,此时如果显示mode: standalone,则表明启动成功。
启动zookeeper:./zkServer.sh start
关闭zookeeper:./zkServer.sh stop
查看zookeeper状态:./zkServer.sh status
![](https://img.haomeiwen.com/i23317189/a1f092b32a0f6920.png)
注意:在启动前后,需关闭防火墙,以免禁止访问。可以通过命令:
chkconfig iptables off 永久关闭防火墙。
3.3.3 配置Dubbo
启动zookeeper后,需要在spring配置文件中,进行Dubbo配置,首先在服务层中Dubbo进行远程注册访问地址并暴露接口,然后再在表现层中也注册访问地址并进行接口调用。
服务层发布服务:
<!—配置服务实体类扫描包 -->
<context:component-scan base-package="com.xx.service.impl"/>
<dubbo:protocol name="dubbo" port="20886"/>
<dubbo:application name="xxx "/>
<!-- 注册远程zookeeper管理接口 -->
<dubbo:registry protocol="zookeeper" address="192.168.25.128:2181" />
<!-- 增加暴露远程服务配置 -->
<dubbo:service interface="com.xxx.XxxService" ref="xxxServiceImpl" />
表现层调用服务:
<!—配置Controller扫描包 -->
<context:component-scan base-package="com.xx.controller"/>
<dubbo:application name="xxx "/>
<!-- 增加引用远程服务配置 -->
<dubbo:reference id="xxxService" interface="com.xxx.XxxService" timeout="300000"/>
<!-- 注册远程zookeeper管理接口 -->
<dubbo:registry protocol="zookeeper" address="192.168.25.128:2181" />
3.3.4 批量注册和调用服务
该部分主要说明,如何批量注册服务和消费者调用服务。需要注意的是,实现批量注册需要在服务实现类上添加dubbo的@Service注解,而不是spring框架的。而在消费者调用服务,则需要使用dubbo的@Reference注解,引用服务。
服务层发布服务:
<dubbo:protocol name="dubbo" port="20886"/>
<dubbo:application name="xxx "/>
<!-- 注册远程zookeeper管理接口 -->
<dubbo:registry protocol="zookeeper" address="192.168.25.128:2181" />
<!—设置远程调用的服务实现类包 -->
<dubbo:annotation package="com.pinyougou.sellergoods.service.impl" />
表现层调用服务:
<!-- 引用dubbo 服务 -->
<dubbo:application name="xxxx" />
<dubbo:registry protocol="zookeeper" address="192.168.25.128:2181" />
<!—设置调用服务的contoller包-->
<dubbo:annotation package="com.pinyougou.manager.controller" />
4. 使用Maven开发添加依赖
4.1. Dubbo相关依赖
在pom.xml文件中加入dubbo相关的jar包依赖,注意在添加的时候需排除spring的部分依赖,以免产生jar冲突而导致编译失败。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<!-- 排除依赖 -->
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
</exclusions>
</dependency>
4.2. zookeeper相关依赖
在pom.xml文件中加入zookeeper相关的jar包依赖。
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.7</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
5. Dubbo监控中心
5.1. 安装并配置
第一步:下载dubbo-admin的包
第二步:编译dubbo-admin工程,打成war包
第三步:把编译后的war包放入tomcat的webapps目录下
第四步:如果监控中心和注册中心在同一台服务器上,可以不需要任何配置。如果不在同一台服务器,需要修改配置文件,进入 WEB-INF 目录查看或修改文件 dubbo.properties
apache-tomcat-7.0.47/webapps/dubbo-admin/WEB-INF/dubbo.properties
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
5.2. 启动并访问
进入tomcat目录下的bin目录下启动tomcat,sh startup.sh
启动成功之后在浏览器中访问ip:8080/dubbo-admin
注意:如果要运行监控中心,必须先启动zookeeper. 监控中心,对于dubbo的服务调用来说不是必须的,不安装监控中心也可以运行。而安装的目的是为了更好对服务的调用的次数进行统计,方便开发者进行管理。
文档下载地址:
https://wenku.baidu.com/view/3edd5f3e03d276a20029bd64783e0912a3167cfc
网友评论