何为Dubbo

​  Dubbox 是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbo ,被国内电商及互联网项目中使用,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行优化,并继续维护,为了与原有的Dubbo区分,故将其命名为Dubbox

​  Dubbox 致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbox就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbox这样的分布式服务框架的需求,并且本质上是个服务调用的东西,说白了就是个远程服务调用的分布式框架。

  SOA是Service-Oriented Architecture的首字母简称,它是一种支持面向服务的架构样式。从服务、基于服务开发和服务的结果来看,面向服务是一种思考方式。

Dubbo能做什么?

最简单直接的说法就是:dubbo本身是一个程序,在开发中作为jar包供我们使用,dubbo为我们做的就是根据服务的url去调用服务(基于rpc协议的调用)。

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

Dubbo基于RPC(Remote Procedure Call 远程过程调用)协议,服务提供方和服务消费方之间的调用关系:

节点角色说明:

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

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

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

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

  • Container: 服务运行容器。

调用关系说明:

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

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

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

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

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

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

Dubbo 属于 RPC 框架,连接消费者和生产者,注册中心 监控被调用对象的运行状态

Dubbo提供的注册中心有如下几种类型可供选择:

  • Multicast注册中心
  • Zookeeper注册中心
  • Redis注册中心
  • Simple注册中心

dubbo和zookeeper的关系:

对于注册中心的选择,我们一般用Zookeeper,那么zookeeper和dubbo的关系是怎么样的

上面这个图如果看不太懂的话,建议看一下 ZooKeeper的数据模型,这里简单解释一下:

zookeeper的数据模型跟我们windows系统下的文件模型相似,都是树形结构的;

  windows下的文件系统有文件夹和文件两种,文件夹只是路径,文件才是存储体;

  而zookeeper的数据模型也是树结构的,每个节点叫做znode,每个znode既可以存储数据也可以当做路径

树形结构的节点都是唯一的,而上面这个图上的绿色圆点都是zookeeper中的一个znode,每个znode都有自己的路径和自己的值,存储着我们dubbo注册的service信息,而上面这张图的znode分为4级(root、service、type、url):

  • 一级节点root内存储着dubbo,代表这个znode下的所有znode都是dubbo相关的
  • 二级节点service存储着我们dubbo注册到zk中的service名称,每多注册一个service服务,就会在dubbo这个znode下添加一个新的service节点
  • 三级节点type存储着service类型,是提供者还是消费者
  • 四级节点url存储着我们所注册的服务的具体地址

dubbo就是通过这一层层的节点找到我们需要调用的url然后进行调用的。

zookeeper作为dubbo的注册中心的角色使用

我们把提供者和消费者通过dubbo注册到zookeeper这个注册中心里,zookeeper中存储的是服务的url的列表

通过消费者调用提供者服务的时候,会根据接口的名称类型通过dubbo到zookeeper中找到对应的服务的url列表,zookeeper返回服务提供者地址列表给消费者

消费者从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用(这个调用就是图1 消费者和提供者的调用关系),如果调用失败,再选另一台调用

Dubbo简单介绍及其和zookeeper的关系的更多相关文章

  1. Dubbo简单介绍及实例

    1.概念 Dubbo是一个分布式服务框架,以及阿里巴巴内部的SOA服务化治理方案的核心框架.其功能主要包含:高性能NIO通讯及多协议集成.服务动态寻址与路由.软负载均衡与容错,依赖分析与降级等. 说通 ...

  2. 003 -- Dubbo简单介绍

    1:Dubbo的基本概念 dubbo是阿里巴巴SOA服务治理 方案的核心框架,每天为20000+个服务次的数据量访问支持.dubbo是一个分布式的服务框架,致力于提供高性能和透明化的RPC远程服务调用 ...

  3. dubbo简单示例

    dubbo简单示例 2019-09-06 1 Zookeeper注册中心的搭建(windows单机) 下载zookeeper压缩包并解压到 D:\zookeeper\apache-zookeeper- ...

  4. dubbo配置方式简单介绍

    原地址:http://www.cnblogs.com/chanshuyi/p/deep_insight_dubbo_config.html 一.介绍 Dubbo 采用全Spring配置方式,透明化接入 ...

  5. dubbo学习过程、使用经验分享及实现原理简单介绍

    一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下. 整理这篇文章差不 ...

  6. 【Dubbo基础】dubbo学习过程、使用经验分享及实现原理简单介绍

    一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下. 整理这篇文章差不 ...

  7. dubbo和zookeeper的关系

    转载前言:网络上很多教程没有描述zookeeper和dubbo到底是什么关系.分别扮演了什么角色等信息,都是说一些似是而非的话,这里终于找到一篇文章,比较生动地描述了注册中心和微服务框架之间的关系,以 ...

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

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

  9. [转]ZooKeeper学习第一期---Zookeeper简单介绍

    ZooKeeper学习第一期---Zookeeper简单介绍 http://www.cnblogs.com/sunddenly/p/4033574.html 一.分布式协调技术 在给大家介绍ZooKe ...

随机推荐

  1. 如何回复在Git中误操作删除的文件?

    不小心的操作,删除了某些文件 某天很高大地用上了git来管理版本,分布式版本管理工具,好是好,但是还不是很熟悉,结果某天一不小心就从本地仓库中删除了若干个文件,该如何找回这些文件呢? 调查现场 git ...

  2. 10.Linux网卡的配置及详解

    1.网卡配置文件在/etc/sysconfig/network-scripts/下: [root@oldboy network-scripts]# ls /etc/sysconfig/network- ...

  3. (一)js概述

    1.    js:弱类型,动态类型,解释型的脚本语言. 2.    网景,布兰登艾奇,js和java没有关系,js的标准:ECMAscript. 3.    js组成:ECMAscript + Bom ...

  4. [QT][SQLITE][QTDEMO]qt5.8_sqlite数据库_demo

    qt环境:5.8 数据库:sqlite //-------------------------------------- sqlite 日期 搜索 -------------------------- ...

  5. Lumen实现用户注册登录认证

    Lumen实现用户注册登录认证 前言 Lumen是一个基于Laravel的微框架,号称是以速度为生.截用Lumen官网的一段,号称是比silex和slim还要快. 本文将用Lumen来实现一个完整的用 ...

  6. del语句

    5.2. del 语句 有个方法可以从列表中按给定的索引而不是值来删除一个子项: del 语句.它不同于有返回值的 pop() 方法.语句 del 还可以从列表中删除切片或清空整个列表(我们以前介绍过 ...

  7. 转载(原标题:网站再遭新威胁 Struts2又曝高危漏洞啦)

    自从著名J2EE框架Apache Struts2被曝出可被远程攻击者利用的执行漏洞后,关于Struts2的安全性便广受关注.近日,安全研究人员则再次发现了Struts2存在远程代码执行的漏洞,Stru ...

  8. [Luogu4169][Violet]天使玩偶/SJY摆棋子

    luogu 题意 一个平面上有\(n\)个点,\(m\)次操作,每次新增一个点,或者是询问离某个点最近的点的距离.这里的距离是曼哈顿距离. \(n,m\le3*10^5\) sol 写一发\(CDQ\ ...

  9. 自定义springmvc统一异常处理器(实现HandlerExceptionResolver接口)不起作用的一种情况

    ExceptionResolverCustom 这个是自定义的异常处理器类. 在springmvc中注册 在web.xml文件中屏蔽springmvc自动注册的异常处理器 网上的资料就是这么配置的,可 ...

  10. mysql安装问题汇总

    操作系统:win7 mysql版本号:mysql 5.5(64位) 1.又一次安装mysql卡在最后一步过不去 问题描写叙述:第一次安装完mysql.使用jdbc写入的中文都是乱码.但已存在于数据库中 ...