欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

dubbo笔记——入门介绍

程序员文章站 2022-05-07 14:23:37
...

一、基本介绍

1、背景说明

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

dubbo笔记——入门介绍

单一应用框架:

  • 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。
  • 此时,用于简化增删改查工作量,数据访问框架(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方式请求:

dubbo笔记——入门介绍

2.Httpclient方式

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

dubbo笔记——入门介绍

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.原理图示

        采用长连接方式:

dubbo笔记——入门介绍

4、DUBBO服务架构

1.基本说明

dubbo笔记——入门介绍

        在大规模服务化之前,应用可能只是通过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的服务架构如下图:

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笔记——入门介绍

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

1、导入源码到Eclipse

dubbo笔记——入门介绍

先导入编译依赖到Eclipse:

dubbo笔记——入门介绍

再导入dubbo源码到Eclipse:

dubbo笔记——入门介绍

导入完成:

 dubbo笔记——入门介绍

 2、安装依赖到本地仓库

安装hessian-lite到本地仓库:

dubbo笔记——入门介绍

安装opensesame到本地仓库:

dubbo笔记——入门介绍

3、构建dubbo

dubbo笔记——入门介绍

4、构建完成

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

核心框架:

dubbo笔记——入门介绍

管理控制台:

dubbo笔记——入门介绍

简易监控中心:

dubbo笔记——入门介绍

简易注册中心:

dubbo笔记——入门介绍

 

相关标签: dubbo