dubbo介绍以及创建
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?
首先从架构模式上来讲:
一个系统用作客户端,一个系统则充当服务端。服务端要把自己的接口定义提供给客户端,客户端将接口定义在spring中的bean。客户端可以直接使用这个bean,就好像这些接口的实现也是在自己代码里一样。(这是与httpclient的区别,使用dubbo后服务的消费端感觉像是在自己的系统中一样使用bean类)
客户端和服务端启动的时候都会把自己的机器IP注册到zookeeper上。客户端会把zk上的服务端ip拉到磁盘上,并记录哪些ip提供哪些服务(服务端启动的时候暴露给zk)。然后调用的时候客户端会根据ip调用服务端的服务,这时候即使zk挂掉也没关系。(在服务端的配置中暴露服务接口,将服务注册到注册中心)。
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)
在配置文件中配置监控,这个我们在搭建项目的时候会介绍这个配置文件,这里先写了,后面再详细说。
启动成功界面:
监控服务:
图表:
dubbo介绍以及创建的更多相关文章
- 161130、Dubbo+SpringMVC工程创建详解
Dubbo出现的目的是为了应对现在高并发,高数据量请求的问题.目前的垂直应用架构已经无法满足现在大数据的冲击,SOA就应运而生,而Dubbo在国内使用的还是比较多,稳定性也比较不错. 架构 节点角色说 ...
- python模块介绍- xlwt 创建xls文件(excel)
python模块介绍- xlwt 创建xls文件(excel) 2013-06-24磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 ...
- dubbo系列一:dubbo介绍、dubbo架构、dubbo的官网入门使用demo
一.dubbo介绍 Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成.简单地说,dubbo是一个基于Spri ...
- dubbo介绍及其使用案例
dubbo介绍及其使用案例 1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果 ...
- Python 数据处理扩展包: pandas 模块的DataFrame介绍(创建和基本操作)
DataFrame是Pandas中的一个表结构的数据结构,包括三部分信息,表头(列的名称),表的内容(二维矩阵),索引(每行一个唯一的标记). 一.DataFrame的创建 有多种方式可以创建Data ...
- dubbo为consumer创建代理
ReferenceConfig.init()方法中获取到了最终的代理对象,先观察一下代理对象的视图. 默认使用javassist生成动态类,可配置proxy为jdk,则使用jdk动态代理: <d ...
- 高性能优秀的服务框架-dubbo介绍
先来了解一下这些年架构的变化,下面的故事是我编的.... "传统架构":很多年前,刚学完JavaWeb开发的我凭借一人之力就开发了一个网站,网站 所有的功能和应用都集中在一起,方便 ...
- C++MFC编程笔记day01 MFC介绍、创建MFC程序和重写消息处理
一.MFC概念和作用 1.全称Microsoft Foundation Class Library,我们称为微软基础类库,封闭了绝大部分的win32 Api函数,C++语法中的数据结构,程序的运行流程 ...
- dubbo介绍及实战
1. dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封 ...
随机推荐
- ThinkPHP - 5 - 学习笔记(2015.4.15)
ThinkPHP __construct()和__initialize() 1.__initialize()不是php类中的函数,php类的构造函数只有__construct().2.类的初始化:子类 ...
- 6.hdfs的存储过程
1.hdfs 怎么存储 切割存储 2. 为何每块是128m 与io读写速度有关,一般人的接受速度1s中,而磁盘的读写速度为100m/s,在读取文件时候需要硬盘寻找地址,一般读懂速度和寻找之间的比例是1 ...
- UVA 11922 Permutation Transformer(平衡二叉树)
Description Write a program to transform the permutation 1, 2, 3,..., n according to m instructions. ...
- Codeforces 96D Volleyball(最短路径)
Petya loves volleyball very much. One day he was running late for a volleyball match. Petya hasn't b ...
- Python中的list
list的创建 1 字面量 >>>L = [1, 2, 3] [1, 2, 3] 2 通过iterable可迭代对象,比如str对象,range对象,map对象 >>&g ...
- LintCode-41.最大子数组
最大子数组 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和. 注意事项 子数组最少包含一个数 样例 给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2 ...
- SQL 跨库查询
使用SQL查询数据,不仅能查询当前库的数据,还可以跨数据库,甚至跨服务器查询. 下面给大家介绍一下跨服务器查询的步骤(以SQL Server为例): 1,建立数据库链接 EXEC sp_addlink ...
- 从实战角度浅析snmp
Snmp Simple Network Management Protocol Snmp最终是为五花八门的网管软件服务的,由于接触的网管软件较少,所以对snmp的理解至今还仅限于初级配置阶段.以下言 ...
- Spring MVC 之@Controller@RequestMapping详解
一:配置web.xml 1)问题:spring项目中有多个配置文件mvc.xml dao.xml 2)解决:在web.xml中 <init-param> <param-name& ...
- TCP/IP三次握手与四次握手
原文地址 http://blog.csdn.net/whuslei/article/details/6667471 http://blog.csdn.net/wo2niliye/article/det ...