dubbo是一个高性能的,基于java的,开源RPC框架,主要功能是让构建分布式计算更加容易。

(分布式:多台计算机实现不同功能,形成一个整体对外服务)

(集群式:多台计算机实现相同功能,分担计算压力)

Dubbo采用单一长连接和NIO异步请求,适合小数据量大并发的服务调用,不适合传送大数据量的服务,比如传文件,视频等。

Dubbo主要有四部分组成 :

register   invoker(service consumer)   exporter(service provider) nonitor

工作原理:

1、  exporter启动时向register注册所提供的服务

2、  invoker启动时向register订阅服务的地址列表

3、  invoker调用一个服务地址进行单一的长连接,失败重试另一个地址

4、  运行过程中register对exporter进行实时的心跳机制监控,如果exporter不能提供服务,更新服务列表,并向invoker进行推送,以便于invoker及时更改服务地址

5、  Monitor定时的采集服务调用次数、时间等相关信息

搭建项目所需要的主要的jar包:

  Dubbo框架的实现:dubbo.jar

  字节码生成:javassist.jar

  网络传输:netty.jar

  Register:zookeeper.jar   zkclient.jar

  Spring的相关jar

根据工作原理来配置spring文件:

1、  创建exporter的接口javaSE项目,仅仅包含接口和显现类,将具体的实现类和接口分离达到项目瘦身,方便管理。

2、  把接口项目打包成exporter.jar包,创建实现类项目,导入接口项目exporter.jar包

3、  配置实现类exporterImpl的JavaEE的xml文件

根据官网的demo配置文件,配置自己的配置文件

  application:服务的名称

  registry:配置的注册中心,我们选择zookeeper,在把它的conf/zoo_sample.cfg

  复制一份为zoo.cfg。便可以查看或修改相关的配置文件,这里我们把

  dataDir=/tmp/zookeeper改为dataDir=F:/data/zookeeper

  获得端口号clientPort=2181,修改后的配置文件为:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"

xsi:schemaLocation="http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans.xsd

        http://code.alibabatech.com/schema/dubbo

        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

<!-- 项目名称 -->

<dubbo:application name="exporter"/>

<!-- 注册中心register -->

<dubbo:registry address="zookeeper://localhost:2181"/>

<!-- 通信协议 -->

<dubbo:protocol name="dubbo" port="20880"/>

<!--把exporter提供的服务暴露出来 -->

<dubbo:service interface="com.syd.exporter.service.FruitService" ref="FruitService"/>

<dubbo:service interface="com.syd.exporter.service.WeatherService" ref="WeatherService"/>

</beans>

在web.xml文件中注册监听器,创建spring的容器对象

<context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>classpath:provider.xml</param-value>

</context-param>

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

4、  创建invoker项目,这里为了简化,创建JavaSE project ,创建调用者的实现类,参考官网demo的配置文件:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"

xsi:schemaLocation="http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans.xsd

        http://code.alibabatech.com/schema/dubbo

        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

<!-- 项目名称 -->

<dubbo:application name="invoker"/>

<!-- 注册中心 registry -->

<dubbo:registry address="zookeeper://localhost:2181"/>

<!-- 调用的服务 -->

<dubbo:reference id="FruitService" interface="com.syd.exporter.service.FruitService"/>

<dubbo:reference id="WeatherService" interface="com.syd.exporter.service.WeatherService"/>

<!-- 调用者类 -->

<bean id="client" class="com.invoker.consume.Client">

<property name="ws" ref="WeatherService" />

<property name="fs" ref="FruitService" />

</bean>

</beans>

5、  创建测试类,先启动registry注册中心,再启动exportImpl项目,最后用invoker项目进行测试 。

Dubbo的使用,其实只需要有registry、invoker、exporter就可以使用了,但是为了更好的调试、发现问题、解决问题,需要引入monitor。官网上有源码dubbo-admin,可以下载后编译,,发布到tomcat的webapps中就能运行,进行监测。

负载均衡(Load Balance):

负载均衡是以集群为前提,将工作任务(负载),进行平衡,分摊到多个操作单元上进行执行。

Dubbo提供了多种负载均衡,缺省情况下为random随机调用

Random  LoadBalance(随机):可以按服务器的权重设置随机概率,调用量越大,分布越均匀

Loadbanlance=”random”

RoundRobin  LoadBalance(轮询): 按公约后的权重设置轮循比率,但是存在慢的提供者累计请求的问题。

Loadbanlance=”roundrobin”

LeastActive  LoadBalance(最少活跃调用数):活跃数指调用前后的计数差,差越大,收到的请求越少。

Loadbanlance=”leastactive”

ConsistentHash  LoadBalance(一致性hash): 相同参数的请求总是发到同一个提供者

Loadbanlance=”consistenthash”

简易Dubbo的搭建过程的更多相关文章

  1. Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题

    现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...

  2. Dubbo监控中心搭建-dubbo-monitor-simple的使用

    场景 Dubbo环境搭建-管理控制台dubbo-admin实现服务监控: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10362 ...

  3. Access应用笔记<四>-一个完整的自动化报表搭建过程

    距离之前的三篇日志已经很久啦,今天终于完成了一个比较完整的自动化报表搭建过程 基于公司数据保密原则,样板就不放到网上来了,简单说一下背景: 这次access实现的功能包括: 1)为部门整体搭建了一个员 ...

  4. iOS---XMPP环境搭建过程

    什么是即时通信? 即时通信是目前Internet上最为流行的通讯方式, 各种各样的即时通讯软件也层出不穷, 服务提供商也提供了越来越枫木的通讯服务功能. 即时通讯有多重实现方式, XMPP就是其中一种 ...

  5. 最简单的SVN环境搭建过程

    本文简单描述最简单的SVN环境搭建过程 搭建环境:windows (个人验证了windows2003,windows xp) 使用软件:Setup-Subversion-1.6.17  //Serve ...

  6. cocos2d-x3.9 NDK android 环境搭建过程中遇到的错误

    编译环境:Mac OS, NDK r9d 错误:arm-linux-androideabi-gcc: error trying to exec '/media/Project/adt-bundle-l ...

  7. 懒人记录 Hadoop2.7.1 集群搭建过程

    懒人记录 Hadoop2.7.1 集群搭建过程 2016-07-02 13:15:45 总结 除了配置hosts ,和免密码互连之外,先在一台机器上装好所有东西 配置好之后,拷贝虚拟机,配置hosts ...

  8. 【转】Nginx windows下搭建过程

    Nginx windows下搭建过程 内容列表: 简要介绍 下载安装 配置测试 一.简要介绍 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器, ...

  9. mercurial(Hg) Server 搭建 过程记录

    mercurial(Hg) Server 搭建 过程记录 1.  环境说明 只是测试搭建,环境为本机开发环境:win 8.1 + IIS8.5 软件准备: 2.  软件安装 先安装Python2.7, ...

随机推荐

  1. 【Linux】time+dd测试硬盘读写速度

    dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. dd 命令通用语法格式如下: dd if=path/to/input_file ...

  2. JS常用的设计模式(3)-——观察者模式

    观察者模式( 又叫发布者-订阅者模式 )应该是最常用的模式之一. 在很多语言里都得到大量应用. 包括我们平时接触的dom事件. 也是js和dom之间实现的一种观察者模式. div.onclick = ...

  3. C#博客记录二

    1.认识运算符 我认为其中 最重要的就是逻辑运算符,对于每个人来说学习web前端就是要有一个好的思维.能够更好的运用. 2.算数运算符 变量名++意味先输出,值后增加. ++变量名意味值先增加,后输出 ...

  4. 如何用 windows+github搭建一个优美的hexo博客

    1.Hexo简单介绍 Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页. 风一般的速度Hexo基于Nod ...

  5. Linux服务器性能评估与优化(一)

    网络内容总结(感谢原创) 1.前言简介 一.影响Linux服务器性能的因素   1. 操作系统级         性能调优是找出系统瓶颈并消除这些瓶颈的过程. 很多系统管理员认为性能调优仅仅是调整一下 ...

  6. hibernate 性能优化之 1+N 问题

    1. 注意 session.clear()的运用,尤其在不断分页查询的时候 a) 在一个大集合中进行遍历,遍历 msg,去除其中的含有敏感字样的对象 b) 另外一种形式的内存泄漏 面试题:Java 有 ...

  7. Java—IO流 File类的常用API

    File类 1.只用于表示文件(目录)的信息(名称.大小等),不能用于文件内容的访问. package cn.test; import java.io.File; import java.io.IOE ...

  8. SQL Server ->> CLR编程问题汇总

    1) CLR不支持C#类方法重载(Method Overload) 今天打算写个枚举目录的C# CLR存储过程,结果发现原来CLR不支持方法重载. Msg 6572, Level 16, State ...

  9. JavaScript 三种工厂模式

    标签(空格分隔): JavaScript 简单工厂模式是工厂函数返回实例化对象或者对象,工厂函数作为一个方法. 工厂方法模式是工厂函数不作改变,将子类放在工厂原型中:工厂函数返回对应的实例化对象:re ...

  10. HCNA实验OSPF基础

    1.拓扑图 方法: 1.配置接口IP 2.配置OSPF协议: [R2]ospf 100 [R2-ospf-100]area 0 [R2-ospf-100-area-0.0.0.0]network 12 ...