dubbo学习 一 dubbo概述

1,背景

1,网站刚开时候的时候可能所有的功能业务都在一个应用里面

2,当业务不断复杂,流量不断增多的时候,就需要将原先的一个应用划分成多个独立的应用。

3,当分出来的业务越来越多的时候,应用也变的多而复杂,各个应用之间的交互也必不可少,就需要进行远程服务调用RPC,使用哪个找哪个,调用哪个。

4,当服务越来越多的时候,上面那种用一个找一个的方法,不仅管理混乱而且资源浪费,这时就需要一个服务调度中心来管理所有的服务信息,做为一个服务中心,所有使用者都只要关注服务中心即可。并且还需要不同服务 不同集群不同路由不同容错等等资源合理 运用起来才行。

而dubbo正好解决这样的一系列问题。

2,dubbo大体的架构

我的理解

dubbo大体上就是有三个部分,服务提供者,服务消费者,监控中心。服务提供者开发好服务之后,将调用这个服务的地址等信息都注册到一个服务注册中心去(常用zookeeper),通一个服务可以有多个提供者,服务消费者要消费的时候,就从注册中心拿过来自己要消费的服务的多个地址列表(有多个提供者的话),然后按照dobbo自己的软负载均衡算法,来选出一个提供者,去调用。这样,消费者不用去关心谁提供的服务,只需要找服务注册中心即可,而提供者也不需要将配置文件告诉所有消费者,只需要注册到注册中心即可。并且服务的集群负载均衡都是在消费端的,也保证了服务的干净,随时都可以增加减少服务提供者。

官方文字

节点角色说明:

Provider: 暴露服务的服务提供方。

Consumer: 调用远程服务的服务消费方。

Registry: 服务注册与发现的注册中心。

Monitor: 统计服务的调用次调和调用时间的监控中心。

Container: 服务运行容器。

调用关系说明:

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

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

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

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

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

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

dubbo的多样化方式

1,支持协议多样化

不同的服务,不同的场景,不同的消费者,可能适合的服务协议不一样,这里,dubbo已经实现了多种协议的提供和调用

     dubbo协议:使用mina,netty,grizzy三种之一来实现。

rmi协议:使用jdk标准的java.rmi.*来实现

hessian协议:采用Servlet暴露服务,Dubbo缺省内嵌Jetty作为服务器实现。

http协议:采用Spring的HttpInvoker实现

webservice协议:基于apache的cxf来实现

thrift协议,memcached协议,redis协议

并且dubbo也支持协议的扩展。

2,注册中心多样化

注册中心也实现了多种方式

Multicast注册中心:不需要启动任何中心节点,只要广播地址一样,就可以互相发现,但是组播受网络结构限制,只适合小规模应用或开发阶段使用。

Zookeeper注册中心:Zookeeper是Apacahe Hadoop的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高,可用于生产环境,并推荐使用

Redis注册中心

Simple注册中心

3,dubbo也支持各种扩展

1,协议的扩展,可以根据自己的业务需求来扩展对应的协议,不过一般上也够用,

2,负载均衡的扩展,如果觉得dubbo的集中负载均衡不够的话,可以自己扩展。

3,注册中心扩展,一般上用zookeeper也行了。

4,序列化的扩展,dubbo默认使用的是 hessian2(阿里修改了下)序列化方法,可扩展成kryo等更高效的。

等等

由此来说,dubbo的实现已经可以满足服务集中化管理的多种场景了。可以学学。

dubbo的具体使用方法细节参考:http://dubbo.io/Home-zh.htm  写的非常详细。

时间: 2024-12-20 03:13:51

dubbo学习 一 dubbo概述的相关文章

Dubbo学习(一) Dubbo原理浅析

一.初入Dubbo Dubbo学习文档: http://dubbo.incubator.apache.org/books/dubbo-user-book/ http://dubbo.incubator.apache.org/books/dubbo-admin-book/ https://github.com/alibaba/dubbo http://alibaba.github.io/dubbo-doc-static/Home-zh.htm 一.什么是dubbo   Dubbo是Alibaba开

dubbo学习 三 dubbox概述

当当网根据自身的需求,对dubbo进行了扩展就叫成了dubbox.具体的使用方法可以参照官网各种例子:http://dangdangdotcom.github.io/dubbox/ 支持rest风格远程调用 之前了解过restful服务具体是什么,resteasy也了解过,所以看到就可以理解. 基于非常成熟的之前看过的rest实现jboss-resteasy框架,他把这个框架集成到了dubbo里面实现了rest风格的远程调用,这样就大大简化了服务的开发和更多类型的消费者系统.也使dubbo可以对

dubbo学习之dubbo管理控制台装配及集成zookeeper集群部署(1)【转】

dubbo管理控制台开源部分主要包含:路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡,等管理功能. 1.下载dubbo 地址:http://code.alibabatech.com/mvn/releases/com/alibaba/dubbo-admin/2.4.1/dubbo-admin-2.4.1.war 本人将tomcat安装在/opt/目录下,先删除tomcat/webapps下自带的ROOT文件夹,将下载的war包解压到webapps/ROOT,命令如下: [plain] 

dubbo学习 二 dubbo源码大致查阅

源码的解析在官网都已经写的非常详细,可以参考:http://dubbo.io/Developer+Guide-zh.htm 服务提供者暴露一个服务的详细过程 首先ServiceConfig类拿到对外提供服务的实际类ref(如:HelloWorldImpl),然后通过ProxyFactory类的getInvoker方法使用ref生成一个AbstractProxyInvoker实例,到这一步就完成具体服务到Invoker的转化.接下来就是Invoker转换到Exporter的过程. Dubbo处理服

dubbo学习

转自:http://my.oschina.net/u/216330/blog/224873 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及"请求-响应"模式的信息交换方式. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持. 自动发现: 基于注册中心目录服

Dubbo学习小记

前言 周一入职的新公司,到了公司第一件事自然是要熟悉新公司使用的各种技术,搭建本地的环境. 熟悉新公司技术的过程中,首先就是Maven,这个前面已经写过文章了,然后就是Dubbo----公司的服务都是通过Dubbo来治理的.其实之前我就对SOA.RPC等分布式服务的概念有所了解,Dubbo也多多少少知道一些,不过能亲身使用那是再好不过的了. 此文就对我的Dubbo学习做一个小的总结,基本我总结的这些内容对于入门应该是足够了.关于Dubbo的更详细信息,阿里有专门出手册,手册地址为http://d

淘宝SOA框架dubbo学习(3)--搭建监控中心

紧接上一篇,继续我的dubbo的学习之旅 1.下载监控中心dubbo服务安装包 下载地址: http://code.alibabatech.com/mvn/releases/com/alibaba/dubbo-monitor-simple/2.4.1/dubbo-monitor-simple-2.4.1-assembly.tar.gz 注:此地址,可能下载不了,我是群共享文件里,下载的 2.解压缩后,编辑conf/dubbo.properties 内容如下: ? 1 2 3 4 5 6 7 8

淘宝SOA框架dubbo学习(2)--搭建Zookeeper注册中心服务

淘宝SOA框架dubbo学习(1) http://my.oschina.net/hanshubo/blog/374974 1.下载 Zookeeper 下载页面地址: http://www.apache.org/dist/zookeeper/zookeeper-3.4.6/ 注:下面步骤,windows和linux下几乎没什么太大区别 2.解压缩后进入 C:\zookeeper-3.4.6 目录结构如下图 3.进入conf目录 备份zoo_sample.cfg文件,然后将zoo_sample.c

Dubbo学习-源码学习

Dubbo概述 dubbo框架提供多协议远程调用,服务提供方可以是分布式部署.dubbo框架可以很简单的帮我们实现微服务. 此处援引官网上图片 dubbo分为客户端和服务提供方 服务方将服务注册到注册中心 客户端从注册中心获取已注册服务访问方式 客户端通过指定协议访问服务提供方 根据dubbo架构,源码分析我们主要切入点是: dubbo配置如何生效 客户端如何调用服务 注册的服务如何保证被调用到 dubbo远程调用的协议如何工作 针对以上我们来分析Dubbo源码: Dubbo源码是maven管理