dubbo笔记——入门介绍

一、基本介绍

1、背景说明

        随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已经无法应对,分布式服务架构以及流动计算架构势在必行,急需一个治理系统确保架构有条不絮的演进。

单一应用框架:

  • 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。
  • 此时,用于简化增删改查工作量,数据访问框架(ORM)是关键。

垂直应用框架:

  • 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。
  • 此时,用于加速前端页面开发的Web框架(MVC)是关键。

分布式服务架构:

  • 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
  • 此时,用于提高业务复用性及整合的分布式服务框架(RPC)是关键。

流动计算架构:

  • 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需要增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。
  • 此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。

2、DUBBO简介

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

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

3、系统间服务调用方式

1.浏览器直接访问

        浏览器发起请求,通过ajax或jsonp方式请求:

2.Httpclient方式

        系统与系统之间通过Httpclient发起http请求来请求数据,http协议是短连接:

扫描二维码关注公众号,回复: 2979192 查看本文章

3.RPC方式

1.RPC介绍

        RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

        RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

        有多种 RPC模式和执行。最初由 Sun 公司提出。IETF ONC 宪章重新修订了 Sun 版本,使得 ONC RPC 协议成为 IETF 标准协议。现在使用最普遍的模式和执行是开放式软件基础的分布式计算环境(DCE)。

2.原理图示

        采用长连接方式:

4、DUBBO服务架构

1.基本说明

        在大规模服务化之前,应用可能只是通过RMl或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬件进行负载均衡。

(1)当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。此时需耍一个服务注册中心,动态的注册和发现服务,使服务的位置透明。并通过在消费方获取服务提供方地址列表,实现软负载均衡和Failoverm,降低对F5硬件负载均衡器的依赖,也能减少部分成本。

(2)当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。这时,需要自动画出应用间的依赖关系图,以帮助架构师理理清关系

(3)接着,服务的调用量越来越大,服务的容里问题就显露出来,这个服务需要多少机器支撑?什么时候该加机器?为了解决这些问题.第一步,要将服务现在每天的调用量,响应时间,都统计出来, 作为容量规划的参考指标。其次,要可以动态调整权重,在线上,将某台机器的权重一直加大,并在加大的过裎中记录响应时间的变化,直到响应时间到达阈值,记录此时的访问量,在以此访问量乘以机器。

        以上是Dubbo最基本的几个需求,更多服务治理问题参见:http://code.alibabatech.com/blog/experience_1402/service-governance-process.html 

2.服务架构

 dubbo的服务架构如下图:

节点角色说明:

  • Provider:暴露服务的服务提供方。
  • Consumer:调用远程服务的服务消费方。
  • Registry:服务注册与发现的注册中心。
  • Monitor:统计服务的调用的调用次数和调用时间的监控中心。
  • Container:服务运行容器。

3.调用关系

调用关系如下:

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

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

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

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

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

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

5、版本说明

        Dubbo的版本格式约定如下:

<major><minor><micro>

版本格式的三位分别表示:

  • 主版本(major)升级,表示API不兼容,或者架构调整。
  • 次版本(minor)升级,表示增加了新功能,或者大的优化。
  • 小版本(micro)升级,表示修复问题,或者小的优化。

所以:

  • 二版本越大,表示功能越多。
  • 三版本越大,表示越稳定。

现在在阿里巴巴内部广泛使用的GA版本为:2.4.9,最新发布的可靠版本为2.5.3(2012-10-24),我们这里使用2.5.3。Dubbo官网并没有提供下载服务,但是dubbo将源码托管于github,并且将jar包发布到maven的中央仓库,所以可以从github和maven中央仓库来下载。源码下载地址为:https://github.com/alibaba/dubbo 

发布包下载地址为:http://repo1.maven.org/maven2/com/alibaba/dubbo/  

二、通过Maven构建dubbo

        既然可以下载得到源码以及发布包,那么为什么要去构建dubbo呢?我们先来看下dubbo的主要模块:

         其中,核心框架、管理控制台、简易监控中心、简易注册中心是我们需要的模块,目前,只有核心模块可以下载到,其它的均无法直接下载,所以我们需要构建dubbo。当然了,我们也可以在网上下载已经构建好的模块,选择不重新构建。当然也有一种情况是因为阿里现在已不在提高更新,自己可能根据情况对项目重写,然后再发布。

1、导入源码到Eclipse

先导入编译依赖到Eclipse:

再导入dubbo源码到Eclipse:

导入完成:

 

 2、安装依赖到本地仓库

安装hessian-lite到本地仓库:

安装opensesame到本地仓库:

3、构建dubbo

4、构建完成

        构建后可以找到对应的模块包。

核心框架:

管理控制台:

简易监控中心:

简易注册中心:

猜你喜欢

转载自blog.csdn.net/qq_22172133/article/details/81660722