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. Navicat for MySQL:快捷键整理

    使用快捷键,提升工作效率! ctrl+q 打开查询窗口 ctrl+/ 注释sql语句 ctrl+shift +/ 解除注释 ctrl+r 运行查询窗口的sql语句 ctrl+shift+r 只运行选中 ...

  2. Springmvc学习笔记(一)

    一.sprinvmvc的介绍 1.1.Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全 ...

  3. Relocation 状态压缩DP

     Relocation Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit  ...

  4. 705. New Distinct Substrings spoj(后缀数组求所有不同子串)

    705. New Distinct Substrings Problem code: SUBST1 Given a string, we need to find the total number o ...

  5. codevs 种树3

    codevs上的题目,自从wikioi改名后,就不怎么做题了. 这道题的话注释在代码中就可以了,还是求最长路,相较返回如果中间可以种多个的话,那就种越多越好,因为这样可以减少种的棵树, 所以这个i与i ...

  6. win7+ ubuntu 双系统

    windows +linux双系统组合有多种方式,只要划好分区两者即可共处,本文是为了解决两者在启动时遇到的问题. 第三方启动器(例如grub,grub2,grub4dos等)

  7. 扩展javascript扩展(类,对象,原型)

     扩展javascript扩展(类,对象,原型)

  8. css3制作网页中常见的小箭头

    /* css3三角形(向上 ▲) */ div.arrow-up { width:0px; height:0px; border-left:5px solid transparent;  /* 右透明 ...

  9. 在sqlserver2005/2008中备份数据库,收缩日志文件

    ---1.先备份数据库(含日志文件) use myhis go backup database myhis to disk='d:\myhis_rzbak' go ---2.设为简单恢复模式 use ...

  10. BaseServlet,让一个servlet处理多个请求

    BaseServlet 第一次学习servlet的时候是跟着传智播客免费的教学视频,其中崔希凡讲的是我学过自认讲的最好的一位,BaseServlet也是跟着他写过一次,当时很多东西不能理解,后来慢慢发 ...