Dubbo总结和使用

1.Dubbo是什么

Dubbo是一个分布式服务架构,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA(**程序的不同单元和功能通过约定的接口联系起来**)服务治理方案.

2.Dubbo能做什么?

1.透明化的远程方法调用,就想调用本地方法一样调用远程方法,只需要简单的配置, 没有任何的API入侵.
2.软负载均衡及容错机制,可以在内网代替F5等硬件负载均衡器,降低成本,减少单点.
3.服务自动注册与发现,不需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者

Dubbo架构简介

这里写图片描述

Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器。

调用过程说明:

0服务容器负责启动,加载,运行服务提供者。
1. 服务提供者在启动时,向注册中心注册自己提供的服务。
2. 服务消费者在启动时,向注册中心订阅自己所需的服务。
3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

Dubbo使用方法

1.Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

2.dubbo通常采用zookeeper作为注册中心,这也是官方推荐的方式

注册中心

注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。使用dubbo-2.3.3以上版本,建议使用zookeeper注册中心。
Zookeeper是Apacahe Hadoop的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高,可用于生产环境,并推荐使用

Zookeeper的安装

第一步:安装jdk
第二步:解压缩zookeeper压缩包
第三步:将conf文件夹下zoo_sample.cfg复制一份,改名为zoo.cfg
第四步:修改配置dataDir属性,指定一个真实目录

Dubbo原理(使用zookeeper做注册中心)

这里写图片描述

Dubbo常用配置介绍

1.<dubbo:service/> 服务配置,用于暴露服务
2. <dubbo:reference/> 引用配置,用于创建一个远程服务代理
3. <dubbo:protocol/> 协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。
4. <dubbo:application/> 应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者。
5. <dubbo:module/> 模块配置,用于配置当前模块信息,可选。
6. <dubbo:registry/>注册中心配置,用于配置连接注册中心相关信息。
7. <dubbo:monitor/> 监控中心配置,用于配置连接监控中心相关信息,可选。
8. <dubbo:provider/> 提供方的缺省值,当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值,可选。
9. <dubbo:consumer/> 消费方缺省配置,当ReferenceConfig某属性没有配置时,采用此缺省值,可选。
10. <dubbo:method/> 方法配置,用于ServiceConfig和ReferenceConfig指定方法级的配置信息。
11. <dubbo:argument/> 用于指定方法参数配置。

Dubbo的spring配置

Dubbo基于spring的schema扩展进行加载
单一工程中的spring配置
<bean id="xxxService" class="com.xxx.XxxServiceImpl" />
<bean id="xxxAction" class="com.xxx.XxxAction">
    <property name="xxxService" ref="xxxService" />
</bean> 
远程服务
将local.xml配置拆分成两份,将服务定义部分放在服务提供方remote-provider.xml,将服务引用部分放在服务消费方remote-consumer.xml。
然后提供方暴露服务:
<beans xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation=
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd>
<!-- 和本地服务一样实现远程服务 -->
<bean id="xxxService" class="com.xxx.XxxServiceImpl" />
<!-- 使用dubbo发布服务 -->
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="hello-world-app" />
<dubbo:registry protocol="zookeeper"
    address="192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.xxx.XxxService" ref="xxxService" />
<dubbo:service interface="com.xxx.XxxService" ref="xxxService" />
<beans>

消费方引用服务:

<dubbo:application name="hello-world-app"/>
<dubbo:registry protocol="zookeeper" address="192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183"/>    
<!-- 增加引用远程服务配置 -->
<dubbo:reference id="xxxService" interface="com.xxx.XxxService" />
<!-- 和本地服务一样使用远程服务 -->
<bean id="xxxAction" class="com.xxx.XxxAction">
    <property name="xxxService" ref="xxxService" />
</bean>

框架整合
maven添加Dubbo依赖:

<!-- dubbo相关 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
        <!-- 排除依赖 -->
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.jboss.netty</groupId>
                <artifactId>netty</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
    </dependency>
    <dependency>
        <groupId>com.github.sgroschupf</groupId>
        <artifactId>zkclient</artifactId>
    </dependency>

启动容器

1. 通过spring方式启动
1.1 applicationContext-dubbo.xml位置没有要求
        ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-dubbo.xml");
        ac.start();
        System.out.println("启动成功");
        System.in.read();
  1. 使用dubbo提供的方式启动(推荐使用这种方式)
    2.1 要求applicationContext-dubbo.xml必须放入类路径下/META-INF/spring/*.xml
Main.main(args);

Dubbo控制台

1.本质就是一个web项目
2.获取注册中心内Provider注册的信息.用页面呈现出来.
3.实现步骤
3.1 把dubbo-admin-2.5.3.war上传到服务器tomcat中.
3.2 启动tomcat完成后关闭tomcat,删除上传的dubbo-admin-2.5.3.war
3.2.1 为什么要删除:需要修改解压后的文件夹,如果不删除.war文件,下次重启tomcat会还原成未修改状态
3.3 进入dubbo-admin-2.5.3/WEB-INF/dubbo.properties,修改第一行为zookeeper的ip和端口
3.3.2 第二行和第三行为管理界面的用户名和密码
这里写图片描述
3.4 启动tomcat, 在浏览器地址栏访问tomcat中dubbo项目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值