1、什么是dubbo?

DUBBO是一个分布式服务框架(关于框架,其实就是配置文件加java代码),致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容。

总结:

dubbo的对象:

  • Provider   暴露服务方称之为“服务提供者”。

  • Consumer   调用远程服务方称之为“服务消费者”。

  • Registry   服务注册与发现的中心目录服务称之为“服务注册中心”。

  • Monitor   统计服务的调用次调和调用时间的日志服务称之为“服务监控中心”

dubbo作为一种分布式的服务框架,中间有个注册中心,服务的提供者和消费者按照dubbo协议进行配置,分别向注册中心提交服务和消费服务。而在外部有个监控中心,负责监控服务的使用情况,消费者和服务者的调用情况(包括调用的时间和次数)。

2、为什么要使用dubbo?

首先从架构模式上来讲:

dubbo是用来跨系统通信的,即使不用集群也可以。分布式环境下需要使用dubbo来进行系统间的通信。(我们以前使用过jsonp、httpclient这些跨域访问)
一个系统用作客户端,一个系统则充当服务端。服务端要把自己的接口定义提供给客户端,客户端将接口定义在spring中的bean。客户端可以直接使用这个bean,就好像这些接口的实现也是在自己代码里一样。(这是与httpclient的区别,使用dubbo后服务的消费端感觉像是在自己的系统中一样使用bean类)
客户端和服务端启动的时候都会把自己的机器IP注册到zookeeper上。客户端会把zk上的服务端ip拉到磁盘上,并记录哪些ip提供哪些服务(服务端启动的时候暴露给zk)。然后调用的时候客户端会根据ip调用服务端的服务,这时候即使zk挂掉也没关系。(在服务端的配置中暴露服务接口,将服务注册到注册中心)。
优势:
关于dubbo的访问:

http://www.iteye.com/magazines/103
所以dubbo的优势:
其功能主要包括:高性能NIO(异步)通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。
dubbo能解决的以下问题:

3、dubbo如何创建?

关于构建可以参考博文:http://blog.csdn.net/huangyekan/article/details/42172675

Dubbo官网并没有提供下载服务,但是dubbo将源码托管于github,并且将jar包发布到maven的中央仓库,所以可以从github和maven中央仓库来下载。

dubbo的源码下载:

https://github.com/alibaba/dubbo

dubbo的发布包下载:

http://repo1.maven.org/maven2/com/alibaba/dubbo/

使用maven来构建dubbo:

dubbo的模块如下:

既然可以下载得到源码以及发布包,那么为什么要去构建dubbo呢?其实是这样子的:

核心框架、管理控制台、简易监控中心、简易注册中心是我们需要的模块,目前,只有核心模块可以下载到,其它的均无法直接下载,所以我们需要构建dubbo。

构建步骤:

这是总共需要导入eclipse的源码:我们需要先导入下面依赖,再导入核心源码。

导入依赖:

再导入核心源码:

完成后:

安装hessian-lite、opensesame到本地仓库

进行dubbo工程打包:(这里注意是核心包的运行)

构建完成后,我们验证下是否成功,主要检查下dubbo的几个文件是否存在,存在则成功,不存在则失败。

核心包

dubbo的管理控制台:

dubbo的注册中心:

dubbo的监控中心:

以上就是dubbo的构建过程。

4、dubbo的架构模式?

这四者之间的关系:

调用关系:

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

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

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

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

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

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

5、dubbo的注册中心zookeeper的配置

我们看到架构图中有注册中心,注册中心这我们使用zookeeper,还有其他的,具体我们在讲zookeeper的时候会讲。

关于zookeeper的介绍:

说简单点,zookeeper我们在大数据范围内成为动物园管理员,大数据中的很多技术有相对应的动物名字。

在分布式系统中,zookeeper主要是用来管理服务的,即服务的提供者,服务的消费者。

zookeeper安装呢?

(1)下载压缩包:

(2)解压后,修改conf下的:

修改zookeeper.cfg名称为zoo.cfg

打开配置文件:

修改此处datadir的位置:我们一边单独建立一个zookeeper的数据文件:

这里我们建立在F目录下。根据自己的需要建立。

启动:

成功后出现如下界面:

zookeeper的默认端口为2181.

但是我们一般在项目中使用的zookeeper集群,关于集群的配置,我们可以百度下如何配置。

除了zookeeper外,dubbo的注册中心有很多:multicast zookeeper redis simple

6、dubbo的监控中心的配置

monitor的原理:

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

如何搭建监控服务:

下载压缩包后,解压:

修改配置文件:

修改注册中心的位置:(记住这里我们使用了zookeeper的zkclient)

在配置文件中配置监控,这个我们在搭建项目的时候会介绍这个配置文件,这里先写了,后面再详细说。

启动成功界面:

输入地址:http://127.0.0.1:8088/

监控服务:

图表:

dubbo介绍以及创建的更多相关文章

  1. 161130、Dubbo+SpringMVC工程创建详解

    Dubbo出现的目的是为了应对现在高并发,高数据量请求的问题.目前的垂直应用架构已经无法满足现在大数据的冲击,SOA就应运而生,而Dubbo在国内使用的还是比较多,稳定性也比较不错. 架构 节点角色说 ...

  2. python模块介绍- xlwt 创建xls文件(excel)

    python模块介绍- xlwt 创建xls文件(excel) 2013-06-24磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 ...

  3. dubbo系列一:dubbo介绍、dubbo架构、dubbo的官网入门使用demo

    一.dubbo介绍 Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成.简单地说,dubbo是一个基于Spri ...

  4. dubbo介绍及其使用案例

    dubbo介绍及其使用案例 1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果 ...

  5. Python 数据处理扩展包: pandas 模块的DataFrame介绍(创建和基本操作)

    DataFrame是Pandas中的一个表结构的数据结构,包括三部分信息,表头(列的名称),表的内容(二维矩阵),索引(每行一个唯一的标记). 一.DataFrame的创建 有多种方式可以创建Data ...

  6. dubbo为consumer创建代理

    ReferenceConfig.init()方法中获取到了最终的代理对象,先观察一下代理对象的视图. 默认使用javassist生成动态类,可配置proxy为jdk,则使用jdk动态代理: <d ...

  7. 高性能优秀的服务框架-dubbo介绍

    先来了解一下这些年架构的变化,下面的故事是我编的.... "传统架构":很多年前,刚学完JavaWeb开发的我凭借一人之力就开发了一个网站,网站 所有的功能和应用都集中在一起,方便 ...

  8. C++MFC编程笔记day01 MFC介绍、创建MFC程序和重写消息处理

    一.MFC概念和作用 1.全称Microsoft Foundation Class Library,我们称为微软基础类库,封闭了绝大部分的win32 Api函数,C++语法中的数据结构,程序的运行流程 ...

  9. dubbo介绍及实战

    1. dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封 ...

随机推荐

  1. Office 365 E3功能

    本文简要总结了Office 365E3的功能

  2. kosaraju求强连通分量

    在了解kosaraju算法之前我们先了解一下什么是强连通分量,在有向图中如果两个定点vi,ui存在一条路劲从vi到达ui且也存在一条路劲从ui到达vi那么由ui和vi这两个点构成的图成为强连通图,简洁 ...

  3. 【C#】ArcFace2 视频人脸比对教程

    请允许我大言不惭,叫做教程,特希望各位能指正.哦,我用的是vs2017.了解更多详情可以访问虹软人工智能开放平台 一.准备工作 1.创建项目 2.添加EMGU.CV包 ,并设属性“复制到输出目录”为“ ...

  4. openstack对接VMware浅析

    前言 本文是对openstack对接vmware的浅析,所以本文重点是以下两点: 先了解它的整体架构,搞清楚为什么要用这样的架构: 然后再了解架构中的各个组件,组件提供的主要功能与各个组件之间的交互 ...

  5. python3 bytes与hex_string之间的转换

    1, bytes to hex_string的转换: def byte_to_hex(bins): """ Convert a byte string to it's h ...

  6. HDU 3726 Graph and Queries(平衡二叉树)(2010 Asia Tianjin Regional Contest)

    Description You are given an undirected graph with N vertexes and M edges. Every vertex in this grap ...

  7. Alphabetic Removals(模拟水题)

    You are given a string ss consisting of nn lowercase Latin letters. Polycarp wants to remove exactly ...

  8. 正确使用memset

    今天做了一道素数打表的题我在使用一个数组记录是否为素数的时候使用了memset,将数组里面的数都清为1,代表是素数,不是素数,就改成0,我在判断这一个数是否为素数是依据也是是0还是1,结果一直存在问题 ...

  9. Swift-闭包理解(二)

    简明扼要的闭包表达式 其实Swift已经为我们提供了很多简化的语法,可以让我们保证代码的高可读性和维护性.还用上面的例子来说明,对于  greetPeople 这个全局函数来说,其实只需要使用一次,所 ...

  10. Spring Boot(二)配置分析

    回顾一下采用SSM开发项目时,项目中会存在多个配置文件,比如web.xml,配置Spring相关的applicationContext-springmvc.xml, applicationContex ...