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. java从命令行接收多个数字,求和程序分析

    问题:编写一个程序,此程序从命令行接收多个数字,求和之后输出结果. 1.设计思想 (1)声明两个变量接收输入的字符串 (2)将字符串转换成int类型 (3)输出求和 2.程序流程图 3.源程序代码 i ...

  2. Python CSV 超简明用法

    平常经常会用CSV存储数据,不可避免的会跟CSV文件的读写操作扯上关系. Python有CSV这个Package来解决这个问题,官网也有比较详细的教程 https://docs.python.org/ ...

  3. Hadoop安全(2)——————UserGroupInformation

    UserGroupInformation保存hadoop用户及组信息 此类包装JAAS Subject,并提供确定用户的用户名和组的方法.它支持Windows,Unix和Kerberos登录模块.

  4. S2_SQL_第五章

    UNIQUE|FULLTEXT|SPATIAL:分别表示唯一索引,全文索引和空间索引,为可选参数index_name;指定索引名称table_name;指定创建索引表名colymn_name;指定需要 ...

  5. myeclipse的快捷键

    ------------------------------------MyEclipse 快捷键1(CTRL)-------------------------------------Ctrl+1 ...

  6. django获取ajax的post复杂对象

    一.django的request中post对象为空(即获取不到前台ajax传送的post对象) 1.将django的setting中的django.middleware.csrf.CsrfViewMi ...

  7. java 虚拟机与并发处理几个问题简要(二)

    六.两个重要的概念性问题: 1.同步:要保持数据的一致性,就需要一种保证并发进程正确执行顺序的机制.这种机制就是 进程同步(Process Synchronization). 竞争资源的多个进程按着特 ...

  8. webpackJsonp is not defined

    解决方法公共模块放前面

  9. This application failed to start because it could not find or load the Qt platform plugin "windows" 的问题原因以及解决方案

    1. 问题原因非常简单,经过各种百度,都没有找到解决方案,在此做一个记录备用. 2.原因就在于,项目目录使用了中文路径,然后出现了这个问题. 3.我是在使用 syncfusion 下的HTML 转PD ...

  10. win10 uwp 九幽图床

    本文主要是图片加水印自动上传,代码已经上传github. 图片加水印,我的方法,简单,一个好的方法是毒逆天大神的图片加水印方法或http://daily.zhihu.com/story/8812028 ...