Dubbo简介

Dubbo是一个Alibaba开源的分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。dubbo就是个服务框架,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求说白了就是个远程服务调用的分布式框架,基于WebService。并且Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

Dubbo架构

说明:

  • Provider: 暴露服务的服务提供方。

  • Consumer: 调用远程服务的服务消费方。

  • Registry: 服务注册与发现的注册中心。

  • Monitor: 统计服务的调用次调和调用时间的监控中心。

  • Container: 服务运行容器。

调用关系说明:

  • 服务容器负责启动,加载,运行服务提供者。

  • 服务提供者在启动时,向注册中心注册自己提供的服务。

  • 服务消费者在启动时,向注册中心订阅自己所需的服务。

  • 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

  • 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

  • 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

通过调用关系我们知道注册中心在整个项目中起到了一个中介和调度的作用,非常重要,关于注册中心官方推荐使用ZooKeeper ,下面了解一下ZooKeeper

ZooKeeper

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现

为什么使用ZooKeeper

Zookeeper是Apacahe Hadoop的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高,可用于生产环境,并推荐使用

ZooKeeper安装

官网下载解压包,官网地址:http://zookeeper.apache.org/

Windows

Windows下Zookeeper不需要安装,直接运行解压完文件中的bin/zkServer.cmd即可启动成功

Linux

  1. 安装jdk

  2. 先将下载的zookeeper-3.3.6.tar.gz上传到linux系统。

  3. 解压缩压缩包 tar -zxvf zookeeper-3.4.6.tar.gz

  4. 进入zookeeper-3.4.6目录,创建data文件夹。

  5. zoo_sample.cfg改名为zoo.cfg 命令:mv zoo_sample.cfg zoo.cfg

  6. 修改zoo.cfg 中的dataDir属性,属性为上面新建data文件夹路径(进入data文件夹,然后使用pwd则可以显示全部路径)

  7. 进入bin目录 启动: ./zkServer.sh start 关闭:./zkServer.sh stop 查看状态 ./zkServer.sh status

  8. 需要关闭防火墙

配置Dubbo

使用的时候需要保证两个项目中有相同的服务接口,即调用的服务类要实现接口,这个接口两个项目中都需要存在。

两个项目也都需要引入dubbo的jar和配置好Spring

  1. 引入对应的jar , 已经配置好Spring

    maven:

com.alibaba
dubbo

org.springframework
spring

org.jboss.netty
netty

org.apache.zookeeper
zookeeper

com.github.sgroschupf
zkclient

```
  1. 编写对应的类

        // 接口
    public interface DubboInterface {
    public String getMessage();
    } // 服务类 public class DubboTest implements DubboInterface{
    public String getMessage() {
    return "Dubbo调用服务成功";
    }
    }
  2. 在Spring文件中配置服务提供方

        <bean id="dubbo" class="dubbo.test.DubboTest"/>
    
    <!-- 使用dubbo发布服务 -->
    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="blog-manager" />
    <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" /> // zookeeper所在机器的ip
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <dubbo:service interface="dubbo.test.DubboInterface" ref="dubbo" timeout="30000"/> // 此时服务方Dubbo已经配置完成
  3. 配置调用方Spring

        <!-- dubbo -->
    <!-- 服务调用方 -->
    <dubbo:application name="e3-blog-web"/>
    <!-- zookeeper -->
    <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>
    <!-- 调用对应的服务 -->
    <!-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->
    <dubbo:reference interface="dubbo.test.DubboInterface" id="dubbo" />
  4. 调用方使用服务

    	@Controller
    public class DubboCustorm { @Autowired
    private DubboInterface dubbo ; public void custrom(){
    System.out.println(dubbo.getMessage());
    } }
  5. 输出结果

分布式框架Dubbo入门的更多相关文章

  1. Dubbox分布式框架之入门

    Dubbox简介 Dubbox是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbox,被国内电商及换联网项目中使用,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行优化,并继续维护, ...

  2. 分布式服务框架dubbo入门实例

    dubbo是一个分布式的服务架构,可直接用于生产环境作为SOA服务框架. 官网首页:http://dubbo.io/ ,官方用户指南 http://dubbo.io/User+Guide-zh.htm ...

  3. 分布式服务框架Dubbo入门案例和项目源码

    本项目源代码:http://download.csdn.net/detail/fansunion/9498406 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案, 是 ...

  4. 阿里分布式开源框架DUBBO 入门+ 进阶+ 项目实战视频教程

    史诗级Java/JavaWeb学习资源免费分享 欢迎关注我的微信公众号:"Java面试通关手册"(坚持原创,分享各种Java学习资源,面试题,优质文章,以及企业级Java实战项目回 ...

  5. 分布式框架Dubbo配置和实例

    准备工作: 1.ZooKeeper:需要去Apache Zookeeper官网下载Zookeeper.tar.gz包,Dubbo是依赖于Zookeeper的 2.Maven:需要去Apache Mav ...

  6. java学习笔记(二)分布式框架Dubbo+zookeeper搭建

    参考文章http://www.cnblogs.com/sxjun/p/6963844.html 注意的几个问题: 1.配置dubbo.properties 将以下地址改为你Zookeeper注册的地址 ...

  7. Dubbo入门—搭建一个最简单的Demo框架

    一.Dubbo背景和简介 1.电商系统的演进 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. a.单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一 ...

  8. Dubbo入门---搭建一个最简单的Demo框架(转)

    Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本.  ...

  9. Dubbo入门介绍---搭建一个最简单的Demo框架

    Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbozookeeper 更多 个人分类: D ...

随机推荐

  1. thinkphp的select和find的区别

    hinkphp是比较好的php开发框架,能比较快速的开发MVC架构的管理系统,我们需要用到 select()和find()方法,两个方法都能返回数据集数组,但有什么不同呢?先看一下我的代码对比:$te ...

  2. Linux学习——yum学习和光盘yum源搭建

    在rmp安装的时代,rpm包依赖让安装人员头大,而且头疼,有了yum后整个的安装更加简单和方便. yum源文件 1.yum源的介绍: 将所有的软件包放到官方服务器上,当进行yum在线安装时,可以自动解 ...

  3. Hive基础(2)---(启动HiveServer2)Hive严格模式

    启动方式 1, hive  命令行模式,直接输入/hive/bin/hive的执行程序,或者输入 hive –service cli 用于linux平台命令行查询,查询语句基本跟mysql查询语句类似 ...

  4. Conscription poj3723(最大生成树)

    Conscription Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6870   Accepted: 2361 Desc ...

  5. HTML5基础知识及相关笔记

    HTML5基础 1.1HTML文件的基本结构和W3C标准 1.1.1HTML简介 HTML是一种描述网页的语言,一种超文本标记的语言! 1.1.2HTML文件的基本结构 头部(head) 头部是网页的 ...

  6. Python数据可视化利器Matplotlib,绘图入门篇,Pyplot介绍

    Pyplot matplotlib.pyplot是一个命令型函数集合,它可以让我们像使用MATLAB一样使用matplotlib.pyplot中的每一个函数都会对画布图像作出相应的改变,如创建画布.在 ...

  7. 小程序解释HTML富文本的两种办法

    今天写着着代码,读取数据库的内容时突然跳出"<span>.<p>. "这些HTML标签.字符,吓一跳:本来如果是写HTML.JS倒也没什么,但是我在写小程序 ...

  8. SQL查找 删除重复数据只保留一条

    --用SQL语句,删除掉重复项只保留一条 --在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 --1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 ...

  9. 关于width与padding

    http://blog.csdn.net/yaoyuan_difang/article/details/24735529

  10. cmd启动,重启,停止IIS命令

    直接使用CMD我们可以操作很多事情,比如启动IIS,重启IIS,停止IIS 重启IIS服务器,开始->运行->cmd (以下列出相关操作命令): iisreset /RESTART 停止后 ...