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?

首先从架构模式上来讲:

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/

监控服务:

图表:

原文地址:https://www.cnblogs.com/fengli9998/p/6800818.html