Dubbo学习笔记(一)

引言

Dubbo(阿里)是一个被国内很多互联网公司广泛使用的开源分布式服务框架,这里强调的是服务,即使从国际视野来看应该也是一个非常全面的SOA基础框架。作为一个重要的技术研究课题。当当网根据自身的技术要求,在Dubbo不更新的情况下实现了Dubbo的很多的新功能,并将其命名为Dubbox(Dubbo eXtensions)

传统模式

Dubbo学习笔记(一)_第1张图片
传统的MVC架构就是有主要的三层来组成,基本上实现了这三层之后就可以完成一个简单的MVC的应用。首先Dao层是主要的数据库访问层,Service层主要是编写业务逻辑,Controller层表示控制器层主要的作用各个功能之间的控制。
一个最基本的WEB应用来说可以通过实现这三个层次来实现整个应用的功能。

引导

Dubbo主要做的就是将上面的分层分成两部分,上面那一部分打包成一个jar包,然后通过启动脚本启动各个应用。
Dubbo学习笔记(一)_第2张图片
也就是说可以将应用分别按照功能划分成功能不同的部分,例如上面我们将dao层和service层打包成一个Jar包,将控制层和前端页面打成一个war包。这里就产生了一个问题,就是controller层怎么调用Service层的逻辑呢?这个中间衔接的过程就是Dubbo。当项目越来越大的时候就会有很多的服务,例如一个电商系统的订单服务、用户管理服务、购买服务等等。每个服务都会打包成一个Jar包,而这些服务分布在不同的服务器上,有可能是Linux服务器有可能是Windows服务器,总之就是统一为控制器提供服务的。Controller就是去要调用这些服务才能正常的使用获取到数据。Dubbo就是实现了这些服务于Controller的调用。

对于dubbo来说本身就是一个集群,例如,有一个用户服务,这个服务部署到一个节点上,当这个服务宕机之后就没有办法向外界提供服务,所以说这个服务被部署到不同的节点上,而dubbo内部也是提供了这样的集群的模式。

在使用了Dubbo之后,还要对这些服务进行一定的管理,要从性能等各个方面来考虑这个问题。这样在高并发的时候就可以实现集群之间的正常的调用。不然的话像是双十一那么高的并发量淘宝的服务器早就宕机了。这里也为大家提出了一个概念就是负载均衡。

这个也就是为什么Dubbo被称为是分布式服务治理框架。当然与这个框架有相同的功能的就是我们SpringCould 中的Eureka等。

至于比较高级的使用,例如跨机房操作,管理操作等都是通过管控台来实现的。总之就是希望这些服务是高可用的,就是希望这些应用能正常的使用,不至于一个宕机之后服务不能使用的情况。

Dubbo学习笔记(一)_第3张图片
Dubbo子系统部署之后,对内可以为PHP提供服务,可以对.NET提供服务,对外可以对外网开放服务,可以在手机端实现调用、在浏览器提供调用等。

Dubbo简介

Dubbo是什么?

Dubbo是一个分布式服务框架,致力于高性能透明化的RPC远程服务调用解决方案,SOA服务治理方案。从这个方面来看dubbo就是一个服务框架,如果没有分布式的需要其实是没必要使用的。这个只有在分布式的时候才有对于Dubbo的需求,并且对于本质上上服务调用这个东西说白了就是远程服务调用的分布式框架。
比较核心的部分包括

  • 远程通讯:提供对多种基于长连接的NIO框架的抽象封装,包括线程模型,序列化,以及“请求-响应”模式。
  • 集群容错:提供基于接口方法的远程过程调用,例如多种协议支持,软负载均衡,失败容错,路由,动态配置等。
  • 动态发现:基于注册中心目录服务,这在SpringCould 的Eureka等都是使用服务消费方能动态查找服务提供方,使地址透明,使服务提供方可以比较容易的实现动态的变化机器数量。

Dubbo用途

Dubbo能做什么
  • 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需要简单的配置,也没有API的侵入
  • 负载均衡机制和容错机制,可以在内网替代F5等硬件负载均衡器,降低成本,减少单点
  • 服务的注册于自动发现,不需要通过写死服务提供方的地址,注册中心基于接口查询服务提供者的IP地址,并且能够动态的添加很删除服务提供方。
  • Dubbo采用了Spring的配置方式,透明接入应用,这样来说的Spring本身就是一个轻量级框架,也就是说使用Spring配置方式对应用没有任何的API侵入,Dubbo是基于Spring 的Schema扩展,对于这个功能的开发可以参考Spring源码中对于Schema的实现。

你可能感兴趣的:(Java架构)