简易Dubbo的搭建过程
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的搭建过程的更多相关文章
- Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题
现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...
- Dubbo监控中心搭建-dubbo-monitor-simple的使用
场景 Dubbo环境搭建-管理控制台dubbo-admin实现服务监控: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10362 ...
- Access应用笔记<四>-一个完整的自动化报表搭建过程
距离之前的三篇日志已经很久啦,今天终于完成了一个比较完整的自动化报表搭建过程 基于公司数据保密原则,样板就不放到网上来了,简单说一下背景: 这次access实现的功能包括: 1)为部门整体搭建了一个员 ...
- iOS---XMPP环境搭建过程
什么是即时通信? 即时通信是目前Internet上最为流行的通讯方式, 各种各样的即时通讯软件也层出不穷, 服务提供商也提供了越来越枫木的通讯服务功能. 即时通讯有多重实现方式, XMPP就是其中一种 ...
- 最简单的SVN环境搭建过程
本文简单描述最简单的SVN环境搭建过程 搭建环境:windows (个人验证了windows2003,windows xp) 使用软件:Setup-Subversion-1.6.17 //Serve ...
- cocos2d-x3.9 NDK android 环境搭建过程中遇到的错误
编译环境:Mac OS, NDK r9d 错误:arm-linux-androideabi-gcc: error trying to exec '/media/Project/adt-bundle-l ...
- 懒人记录 Hadoop2.7.1 集群搭建过程
懒人记录 Hadoop2.7.1 集群搭建过程 2016-07-02 13:15:45 总结 除了配置hosts ,和免密码互连之外,先在一台机器上装好所有东西 配置好之后,拷贝虚拟机,配置hosts ...
- 【转】Nginx windows下搭建过程
Nginx windows下搭建过程 内容列表: 简要介绍 下载安装 配置测试 一.简要介绍 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器, ...
- mercurial(Hg) Server 搭建 过程记录
mercurial(Hg) Server 搭建 过程记录 1. 环境说明 只是测试搭建,环境为本机开发环境:win 8.1 + IIS8.5 软件准备: 2. 软件安装 先安装Python2.7, ...
随机推荐
- UWP 应用获取各类系统、用户信息 (2) - 商店授权信息、零售演示模式信息、广告 ID、EAS 设备信息、硬件识别信息、移动网络信息
应用开发中,开发者时常需要获取一些系统.用户信息用于数据统计遥测.问题反馈.用户识别等功能.本文旨在介绍在 Windows UWP 应用中获取一些常用系统.用户信息的方法.示例项目代码可参见 Gith ...
- [MySQL] - MySQL连接字符串总结
来源:http://blog.sina.com.cn/s/blog_5f0dab1e0100e4pv.html?retcode=0 一.MySQL Connector/ODBC 2.50 (MyODB ...
- struts2的基本配置
1.package标签下主要的点在namespace和name,extend上 extend 一般继承自struts-default.xml下,继承其拦截器及一些功能,这个已在本人的拦截器一文中有讲到 ...
- 超级表格:要山寨Excel,还是与之Say Byebye?
创业产品难免被人拿来与现有的知名产品比较,创业者也喜欢把自己的产品与现有的知名产品比较. 我,超级表格创始人,对此有话说. 当我要在各种场合描述超级表格是什么时,也纠结过. 向用户描述时,说超级表格类 ...
- linux常用指令集-持续更新...
0.查看所有java进程GC情况:for i in `jps|egrep -v "Jps|Launcher" |cut -d" " -f1`;do pwdx $ ...
- 服务器ipmi远程管理
DELL iDRAC (Integrated Dell™ Remote Access Controller )是 Dell PowerEdge 系列服务器上的远程管理方案, 11代 12代服务器已经集 ...
- 点触科技安全验证新模式与逐浪CMS3.9.3新功能预览
是颠覆传统字符验证码的新一代验证码系统.用户通过点击.拖动等有趣方式即可完成验证,防止机器攻击, 应用在注册.登录.数据访问保护.黄牛刷单等场景. 只要在逐浪CMS后台-系统-配置 ,进行简单的配置, ...
- 再学UML-UML用例建模解析(三)
2. 编写用例文档 绘制用例图只是完成了用例建模最基本也是最简单的一步,用例建模的核心在于编写用例文档,用例文档又称为用例规约或用例描述.顾名思义,用例文档是用于描述用例的文档,每一个用例对应于一个用 ...
- day5-基础 函数
函数 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序 ...
- 什么是SWP文件?能否删除swp文件?
SWP意思就是交换文件..SWP是各种操作系统(Windows或Linux)使用的交换文件的文件扩展名. 可以安全地清理SWP文件以释放磁盘空间. 要清理SWP文件,请按照以下步骤操作: 运行WinU ...