zoukankan      html  css  js  c++  java
  • 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/

    监控服务:

    图表:

  • 相关阅读:
    mysql基础之日志管理(查询日志、慢查询日志、错误日志、二进制日志、中继日志、事务日志)
    jQuery1.9.1针对checkbox的调整
    管理 sendmail 的邮件队列
    将以管理员方式运行cmd运行方式放到win7任务栏
    转 git操作小结
    [转]前端CSS规范整理
    jQuery 1.9不支持$.browser 怎么判断浏览器类型和版本
    js闭包陷阱问题
    关于NGINX下开启PHP-FPM 输出PHP错误日志的设置(已解决)
    PHP中cURL错误号对照[转]
  • 原文地址:https://www.cnblogs.com/fengli9998/p/6800818.html
Copyright © 2011-2022 走看看