简介
官网:http://dubbo.io/
源码下载:https://github.com/alibaba/dubbo
发布包下载:http://repo1.maven.org/maven2/com/alibaba/dubbo/
DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容。
什么是RPC?
百度百科
通过Maven构建dubbo
dubbo的主要模块:
虽然阿里已经给我们打包好了核心框架的jar包,但在实际开发过程中,核心框架、管理控制台、简易监控中心、简易注册中心可能我们都需要用到,而且业务需求可能要修改dubbo源码,再次打包。基于以上原因我们需要构建dubbo。构建的过程还是有些讲究的,在此记录下maven构建的步骤,方便以后回顾。
源码:dubbo-dubbo-2.5.3(包含依赖hessian-lite、opensesame)
1、先导入编译依赖,再导入dubbo核心源码到Eclipse
2、安装hessian-lite到本地仓库
4、安装opensesame到本地仓库
5、构建dubbo
构建完成:
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] dubbo-parent ....................................... SUCCESS [ 0.561 s]
[INFO] dubbo-common ....................................... SUCCESS [ 7.344 s]
[INFO] dubbo-container .................................... SUCCESS [ 0.004 s]
[INFO] dubbo-container-api ................................ SUCCESS [ 1.150 s]
[INFO] dubbo-container-spring ............................. SUCCESS [ 0.538 s]
[INFO] dubbo-container-jetty .............................. SUCCESS [ 0.430 s]
[INFO] dubbo-container-log4j .............................. SUCCESS [ 0.412 s]
[INFO] dubbo-container-logback ............................ SUCCESS [ 0.645 s]
[INFO] dubbo-remoting ..................................... SUCCESS [ 0.003 s]
[INFO] dubbo-remoting-api ................................. SUCCESS [ 3.842 s]
[INFO] dubbo-remoting-netty ............................... SUCCESS [ 0.903 s]
[INFO] dubbo-remoting-mina ................................ SUCCESS [ 0.657 s]
[INFO] dubbo-remoting-grizzly ............................. SUCCESS [ 1.027 s]
[INFO] dubbo-remoting-p2p ................................. SUCCESS [ 0.725 s]
[INFO] dubbo-remoting-http ................................ SUCCESS [ 0.524 s]
[INFO] dubbo-remoting-zookeeper ........................... SUCCESS [ 0.890 s]
[INFO] dubbo-rpc .......................................... SUCCESS [ 0.003 s]
[INFO] dubbo-rpc-api ...................................... SUCCESS [ 1.772 s]
[INFO] dubbo-rpc-default .................................. SUCCESS [ 1.593 s]
[INFO] dubbo-rpc-injvm .................................... SUCCESS [ 0.474 s]
[INFO] dubbo-rpc-rmi ...................................... SUCCESS [ 0.463 s]
[INFO] dubbo-rpc-hessian .................................. SUCCESS [ 0.828 s]
[INFO] dubbo-rpc-http ..................................... SUCCESS [ 0.751 s]
[INFO] dubbo-rpc-webservice ............................... SUCCESS [ 0.880 s]
[INFO] dubbo-cluster ...................................... SUCCESS [ 1.941 s]
[INFO] dubbo-registry ..................................... SUCCESS [ 0.005 s]
[INFO] dubbo-registry-api ................................. SUCCESS [ 1.311 s]
[INFO] dubbo-monitor ...................................... SUCCESS [ 0.004 s]
[INFO] dubbo-monitor-api .................................. SUCCESS [ 0.516 s]
[INFO] dubbo-filter ....................................... SUCCESS [ 0.003 s]
[INFO] dubbo-filter-validation ............................ SUCCESS [ 0.708 s]
[INFO] dubbo-filter-cache ................................. SUCCESS [ 0.603 s]
[INFO] dubbo-registry-default ............................. SUCCESS [ 0.509 s]
[INFO] dubbo-monitor-default .............................. SUCCESS [ 0.916 s]
[INFO] dubbo-registry-multicast ........................... SUCCESS [ 0.576 s]
[INFO] dubbo-config ....................................... SUCCESS [ 0.002 s]
[INFO] dubbo-config-api ................................... SUCCESS [ 1.284 s]
[INFO] dubbo-config-spring ................................ SUCCESS [ 0.930 s]
[INFO] dubbo-rpc-thrift ................................... SUCCESS [ 1.700 s]
[INFO] dubbo-rpc-memcached ................................ SUCCESS [ 0.523 s]
[INFO] dubbo-rpc-redis .................................... SUCCESS [ 0.914 s]
[INFO] dubbo-registry-zookeeper ........................... SUCCESS [ 0.584 s]
[INFO] dubbo-registry-redis ............................... SUCCESS [ 0.996 s]
[INFO] dubbo .............................................. SUCCESS [10:57 min]
[INFO] dubbo-simple ....................................... SUCCESS [ 0.004 s]
[INFO] dubbo-registry-simple .............................. SUCCESS [16:55 min]
[INFO] dubbo-monitor-simple ............................... SUCCESS [ 18.007 s]
[INFO] dubbo-admin ........................................ SUCCESS [ 9.432 s]
[INFO] dubbo-demo ......................................... SUCCESS [ 0.004 s]
[INFO] dubbo-demo-api ..................................... SUCCESS [ 0.729 s]
[INFO] dubbo-demo-provider ................................ SUCCESS [ 13.662 s]
[INFO] dubbo-demo-consumer ................................ SUCCESS [ 13.786 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 29:29 min
[INFO] Finished at: 2017-03-01T15:03:02+08:00
[INFO] Final Memory: 78M/247M
[INFO] ------------------------------------------------------------------------
Dubbo框架说明
背景
架构
调用关系:
1. 服务容器负责启动,加载,运行服务提供者。
2. 服务提供者在启动时,向注册中心注册自己提供的服务。
3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。