zookeeper+dubbo【转载】
转载地址:http://ahua186186.iteye.com/blog/1912421
注:zookeeper集群是myid文件是没有后缀名的。
转自:
http://www.verydemo.com/demo_c353_i4119.html
http://www.verydemo.com/demo_c196_i554.html
导读:考虑到单机部署运行,在此文档中RegisterGroup 是单例的Zookeeper,部署集群模式的registerGroup请参考Zookeeper集群http://wenku.baidu.com/view/641998d649649b6648d747a7.html
dubbo是阿里的一个开源soa框架,详细介绍http://code.alibabatech.com/wiki/display/dubbo/Home-zh
zookeeper是Hadoop的子项目,主要功能基于paxos算法对分布式系统的请求进行调度,详细介绍http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/
考虑到单机部署运行,在此文档中RegisterGroup 是单例的Zookeeper,部署集群模式的registerGroup请参考Zookeeper集群 http://wenku.baidu.com/view/641998d649649b6648d747a7.html
代码下载[不含 app的lib]http://download.csdn.net/detail/goliathray/5048969
需要的工具 eclipse tomcat
ProviderGroup:可以存在多个ProviderGroup,每个Group由多台Node组成,每个Node需要保证以下配置
1. 采用相同的application name
2. 保证provider的连接地址互不相同(在单机上部署多个provider需要保证端口不同)
3. 注册中心地址一致
ConsumerGroup:可以存在多个ConsumerGroup,每个Group由多台Node组成,每个Node需要保证能网络连接到所需业务的Provider并保证以下配置
1. 采用相同的application name
2. 注册中心地址一致
ProviderNode可以作为ConsumerNode调用别的ProviderGroup组的业务,相对的ConsumerNode也可以作为ProviderNode
RegisterGroup:注册中心组作为服务调用的分配者,每个RegisterNode监听除自身以外所有节点是否存活和健康(包括其RegisterGroup),本文档以Zookeeper单例部署为例子说明。
DubboAdmin:管理节点,可选节点,只作为一个管理者和观察者。
部署说明:
1. 在Eclipse中引入DubboConsumerNode1 - 3 和DubboProviderNode1 -3 共6个项目
2. 将DubboAdmin中的文件复制到apache-tomcat\webapps\ROOT下
3. Zookeeper已经做了基础配置,只需在 \zookeeper-3.4.4\bin启动 zkServer.cmd
Zoo.cfg配置说明
#tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 毫秒时间就会发送一个心跳。
tickTime=2000
#dataDir:Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
dataDir=/tmp/zookeeper
#dataLogDir:日志文件保存的位置(未配置)
dataLogDir=/tmp/zookeeper/log
#clientPort:这个端口就是客户端连接Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=2181
#initLimit:这个配置项是用来配置 Zookeeper接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
#当已经超过 10 个心跳的时间(也就是tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。
initLimit=10
启动顺序:
这个部署并不严格要求启动的前后顺序,建议启动顺序
1. 启动Zookeeper ,显示
2. 启动Tomcat,若先启动Tomcat则会一直监听Zookeeper服务是否启动,当Zookeeper启动后才会加载完成,启动完成后访问127.0.0.1:8080,以root/root 登陆,显示
3. 启动Provider,在eclipse中找到Provider1-3.java,直接运行main方法,每启动一个节点,显示
同时在提供者列表中会增加一个节点信息
3个Provider全启动后
4. 启动Consumer, 在eclipse中找到Consumer1-3.java,直接运行main方法,每启动一个节点,可以见到console有输出
在Provider的Console中有显示
同时在消费者列表有新增节点信息
3个Consumer全启动后
节点的异常:
ProviderNode异常:当某台ProviderNode宕机后,Register无法再获取此Provider的信息,但是在进行initLimit个心跳连接之前,Register会认为这个Node只是暂时出错,并不会把他剔除出Provider的列表,Consumer的调用会报错(在未配置容错的情况下),某台Consumer可能会显示
但是在经过initLimit次的心跳后,此节点会被剔除出Provider列表,访问恢复
ConsumerNode异常:除非存在P-C-P的循环,不会对此部署产生影响,在经过initLimit次的心跳后,在Consumer列表中被剔除
RegisterNode异常:参考Zookeeper集群异常
异常恢复:对于每个ProviderNode和ConsumerNode,只需要重启动后连接上Register,既可以恢复原有的服务状态。
DubboAdmin管理:
DubboAdmin本身的配置采用的是文件的方式保存配置信息,配置的结果信息会由各个节点保存到临时文件,以保证在重启服务后恢复到原有状态
权重负载均衡:默认采用的是随机权重的负载均衡,对于第一次加载的Provider服务,权重为100,服务的访问率为(节点服务权重/服务重权重)*100%,可以通过增减权重的方式改变节点的访问几率,在对1号节点增加4倍权重后,1号节点的访问概率变为66.7%,可以在3个Provider节点的Console中看到信息的增幅速度明显改变,1号节点的速度远大于其他2个节点。
自定义的负载均衡:可以新增负载均衡的规则,优先于默认的负载均衡,有随机,伦循,按最小并发3种规则,可以细化到方法。
消费者的容错:在Provider端出现异常时,可以默认返回一个容错值,默认为Null,可以自己配置,通过对Provider的Service设置mock类
启动容错后若Provider端出错,返回Null,优先于禁用
可以看到Consumer的Console报错
消费者的禁用:对于ConsumerNode,禁用后则不能访问任何Provider
若设置了容错,则返回NULL
若无容错,则返回调用异常
恢复后显示数据可以正常访问
提供者的禁用:禁止此Provider提供服务,(对下次启动生效),在重启动这个服务后显示
服务无法被访问,在点击启用后服务恢复
上一篇 Blueprint入门之四 下一篇 使用UFT进行接口测试(Web Service、REST)
总结:权重负载均衡:默认采用的是随机权重的负载均衡,对于第一次加载的Provider服务,权重为100,服务的访问率为(节点服务权重/服务重权重)*100%,可以通过增减权重的方式改变节点的访问几率,在对1号节点增加4倍权重后,1号节点的访问概率变为66.7%,可以在3个Provider节点的Console中看到信息的增幅速度明显改变,1号节点的速度远大于其他2个节点。
zookeeper+dubbo【转载】的更多相关文章
- zookeeper dubbo 问题解决录
问题1: 运行起来不报错,不过在Console没有zookeeper的心跳信息,也就是说没有配置上zookeeper,而出错的原因是下面蓝色这段解析不了 spring-dubbo-provider.x ...
- 适合初学者的一个分布式环境搭建过程(spring boot + zookeeper + dubbo + mybatis + mysql)
本人也是才开始接触 阿里巴巴的开源分布式框架 dubbo,因为现在微服务框架 spring boot也非常的火,然后结合dubbo的官网搭建这个开发环境. 一.首先 zookeeper作为集群管理服务 ...
- zookeeper+dubbo简单使用
首先下载zookeeper,直接百度官网下载即可! 下载完之后,把cfg配置文件改名为zoo.cfg,如下: 在bin目录下启动zkServer即可! 项目结构: 简单讲解:首先dubbo是一个mav ...
- Zookeeper + Dubbo + SpringMVC + dubbo-admin
第一步:在CentOS/Windows上安装Zookeeper[前提] A:CentOS Zookeeper作为Dubbo服务的注册中心,Dubbo原先基于数据库的注册中心,没采用Zookee ...
- Zookeeper+Dubbo+SpringMVC环境搭建
项目码云GIT地址:https://gitee.com/xshuai/dubbo/ 开发工具 MyEclipse 10.7 JDK 1.7 容器 Tomcat 8(运行dubbo) zookeeper ...
- IDEA上创建 Maven SpringBoot + zookeeper +dubbo 实例
概述 首先声明,本文是学习总结类型的博客内容,如有雷同纯属学习.本位主要结合zookeeper和dubbo做个简单实例.目前来说,一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越 ...
- zookeeper+dubbo简单部署方案
1.zookeeper服务 首先,我们需要下载:zookeeper-3.4.9 解压后,在conf文件夹中添加一个配置文件zoo.cfg,内容如下: tickTime=2000 dataDir=/Us ...
- springboot+Zookeeper+Dubbo入门
最近想学习dubbo,就利用周末写了一个特别简单的demo,不知道有没有用,先记录一下. 1.安装zookeeper并启动(安装看我上一篇博客https://www.cnblogs.com/huang ...
- 分布式锁2 Java非常用技术方案探讨之ZooKeeper 【转载】
前言: 由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题.以自己结合实际工作中的一些经验和网上看到的一些资料 ...
随机推荐
- Codeforces Round #317 [AimFund Thanks-Round] (Div. 2) Array 模拟
题目链接:http://codeforces.com/contest/572/problem/A 题意 就给你两个数组,问你能不能从A数组中取出k个,B数组中取出m个,使得这k个都大于这m个. 题解 ...
- IntelliJ IDEA重构技巧收集
https://segmentfault.com/a/1190000002488608(重命名文件) http://www.jianshu.com/p/ab298b46bf50(快速生成方法) htt ...
- Spring MVC中@ControllerAdvice注解实现全局异常拦截
在网上很多都把Advice翻译成增强器,其实从翻译工具上看到,这个单词翻译是忠告,通知的意思. 首先这个注解实在Spring Web包下,而Spring MVC离不开Spring Web的依赖,所以经 ...
- SVG动画基础篇
参考资料: http://www.w3school.com.cn/svg/index.asp https://msdn.microsoft.com/zh-cn/library/gg193979 gi ...
- 使用Crashlytics来保存应用崩溃信息
使用Crashlytics来保存应用崩溃信息 本文首发于InfoQ,版权归InfoQ所有,转载请保留原文链接. 简介 Crashlytic 成立于2011年,是专门为移动应用开者发提供的保存和分析应用 ...
- Android开发——内存优化 图片处理
8. 用缓存避免内存泄漏 很常见的一个例子就是图片的三级缓存结构,分别为网络缓存,本地缓存以及内存缓存.在内存缓存逻辑类中,通常会定义这样的集合类. private HashMap<Strin ...
- 10.【nuxt起步】-引用mintui
这时候我们完成了list.vue,但是怎么返回index.vue,这时候需要这个头部返回 1.我们使用现成的minu-ui,eleme的开源移动端 ,参考 https://www.cnblogs.co ...
- log4net报错Could not load type 'System.Security.Claims.ClaimsIdentity'
使用log4net,在win7上可以正常使用,但是在部分xp电脑上可以生成access数据库,但是无法写数据到mdb 排除了程序原因,怀疑是xp缺少什么dll之类的 偶然查到log4net的调试方法: ...
- 微信公众平台SDK for node
实现了下面特性: 1.开启开发人员模式 2.解析微信请求參数 3.验证消息来源 4.被动回复文字消息 5.被动回复图文消息 6.获取access_token 7.创建自己定义菜单 地址:wechat ...
- cocos2d-x入口类
上一篇文章中有一个在栈中创建的实例--AppDelegate.这个类的初始化使cocos2d-x的程序能够执行起来.由于它是继承于CCApplication类.而执行的run方法就是在此类中实现的. ...