【SSM分布式架构电商项目-32】Dubbo入门

系统间服务调用方式

浏览器直接访问

浏览器发起请求,通过ajax或jsonp方式请求:
这里写图片描述

Httpclient方式

系统与系统之间通过Httpclient发起http请求来请求数据:
这里写图片描述
http协议是短连接。

RPC方式

这里写图片描述

这里写图片描述

采用长连接方式。

单点系统中存在的问题

在单点登录系统中的功能中,根据token查询用户信息的功能对系统性能要求最高,如果我们想单独调整该功能的性能是不可能的,因为该功能和其它的功能耦合再一起。

要想单独优化该功能的性能就必须把该功能单独出来,我们就可以借助与dubbo框架完成。

什么是dubbo?

简介

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

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

官网

http://dubbo.io/
以前的截图:
这里写图片描述

版本说明

以前的截图:
这里写图片描述

这里写图片描述

我们使用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。

当然了,在提供的资料中以及有构建好的模块提供,也可以选择不重新构建。

导入源码到Eclipse

这里写图片描述

先导入编译依赖到Eclipse:

这里写图片描述

再导入dubbo源码到Eclipse:
这里写图片描述
导入完成:
这里写图片描述

安装hessian-lite到本地仓库

这里写图片描述

安装opensesame到本地仓库

这里写图片描述

构建dubbo

这里写图片描述
构建完成:

[INFO] Reactor Summary:
[INFO] 
[INFO] dubbo-parent ....................................... SUCCESS [  0.349 s]
[INFO] dubbo-common ....................................... SUCCESS [  4.351 s]
[INFO] dubbo-container .................................... SUCCESS [  0.007 s]
[INFO] dubbo-container-api ................................ SUCCESS [  0.718 s]
[INFO] dubbo-container-spring ............................. SUCCESS [  0.368 s]
[INFO] dubbo-container-jetty .............................. SUCCESS [  0.343 s]
[INFO] dubbo-container-log4j .............................. SUCCESS [  0.432 s]
[INFO] dubbo-container-logback ............................ SUCCESS [  0.431 s]
[INFO] dubbo-remoting ..................................... SUCCESS [  0.003 s]
[INFO] dubbo-remoting-api ................................. SUCCESS [  1.717 s]
[INFO] dubbo-remoting-netty ............................... SUCCESS [  0.678 s]
[INFO] dubbo-remoting-mina ................................ SUCCESS [  0.528 s]
[INFO] dubbo-remoting-grizzly ............................. SUCCESS [  0.776 s]
[INFO] dubbo-remoting-p2p ................................. SUCCESS [  0.793 s]
[INFO] dubbo-remoting-http ................................ SUCCESS [  0.781 s]
[INFO] dubbo-remoting-zookeeper ........................... SUCCESS [  0.484 s]
[INFO] dubbo-rpc .......................................... SUCCESS [  0.004 s]
[INFO] dubbo-rpc-api ...................................... SUCCESS [  1.174 s]
[INFO] dubbo-rpc-default .................................. SUCCESS [  1.051 s]
[INFO] dubbo-rpc-injvm .................................... SUCCESS [  0.367 s]
[INFO] dubbo-rpc-rmi ...................................... SUCCESS [  0.359 s]
[INFO] dubbo-rpc-hessian .................................. SUCCESS [  0.427 s]
[INFO] dubbo-rpc-http ..................................... SUCCESS [  0.415 s]
[INFO] dubbo-rpc-webservice ............................... SUCCESS [  2.279 s]
[INFO] dubbo-cluster ...................................... SUCCESS [  1.123 s]
[INFO] dubbo-registry ..................................... SUCCESS [  0.007 s]
[INFO] dubbo-registry-api ................................. SUCCESS [  0.839 s]
[INFO] dubbo-monitor ...................................... SUCCESS [  0.004 s]
[INFO] dubbo-monitor-api .................................. SUCCESS [  0.366 s]
[INFO] dubbo-filter ....................................... SUCCESS [  0.004 s]
[INFO] dubbo-filter-validation ............................ SUCCESS [  0.429 s]
[INFO] dubbo-filter-cache ................................. SUCCESS [  0.398 s]
[INFO] dubbo-registry-default ............................. SUCCESS [  0.419 s]
[INFO] dubbo-monitor-default .............................. SUCCESS [  0.370 s]
[INFO] dubbo-registry-multicast ........................... SUCCESS [  0.443 s]
[INFO] dubbo-config ....................................... SUCCESS [  0.005 s]
[INFO] dubbo-config-api ................................... SUCCESS [  1.157 s]
[INFO] dubbo-config-spring ................................ SUCCESS [  1.080 s]
[INFO] dubbo-rpc-thrift ................................... SUCCESS [  0.898 s]
[INFO] dubbo-rpc-memcached ................................ SUCCESS [  0.469 s]
[INFO] dubbo-rpc-redis .................................... SUCCESS [  0.607 s]
[INFO] dubbo-registry-zookeeper ........................... SUCCESS [  0.574 s]
[INFO] dubbo-registry-redis ............................... SUCCESS [  0.724 s]
[INFO] dubbo .............................................. SUCCESS [  5.777 s]
[INFO] dubbo-simple ....................................... SUCCESS [  0.003 s]
[INFO] dubbo-registry-simple .............................. SUCCESS [  5.491 s]
[INFO] dubbo-monitor-simple ............................... SUCCESS [ 11.807 s]
[INFO] dubbo-admin ........................................ SUCCESS [  4.867 s]
[INFO] dubbo-demo ......................................... SUCCESS [  0.003 s]
[INFO] dubbo-demo-api ..................................... SUCCESS [  0.237 s]
[INFO] dubbo-demo-provider ................................ SUCCESS [  9.309 s]
[INFO] dubbo-demo-consumer ................................ SUCCESS [  9.491 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:16 min
[INFO] Finished at: 2016-05-31T11:22:10+08:00
[INFO] Final Memory: 73M/1725M
[INFO] ------------------------------------------------------------------------

找到对应的模块包

核心框架

这里写图片描述

管理控制台

这里写图片描述

简易监控中心

这里写图片描述

简易注册中心

这里写图片描述

Dubbo框架说明

背景

这里写图片描述

服务治理

这里写图片描述

架构

这里写图片描述

调用关系:
1. 服务容器负责启动,加载,运行服务提供者。
2. 服务提供者在启动时,向注册中心注册自己提供的服务。
3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

猜你喜欢

转载自blog.csdn.net/cckevincyh/article/details/80349871