文档章节

ZBUS高可用HA介绍

少帮主
 少帮主
发布于 2015/12/21 15:52
字数 1047
阅读 5148
收藏 79
点赞 6
评论 6

请参考最新文档 http://zbus.io/guide/ha?menu=ha

 

http://git.oschina.net/rushmore/zbus

1. ZBUS 高可用设计

Zbus高可用采用ZbusServer + TrackServer结合完成,相对于单机版本的zbus,客户端需要TrackServer的帮助完成实际的zbus动态选择。Zbus可以动态的增加到TrackServer组成的高可用群中,zbus节点之间无状态。加入高可用群的ZbusServer向TrackServer上报当前zbus节点的拓扑信息,包括所在节点的IP,队列分布,消费者信息等等拓扑信息。TrackServer将所有的zbus上报信息组织路由表,客户端(生产者、消费者)则订阅TrackServer的路由信息实时获得zbus节点的所有变化信息,从而根据实际情况来变换路由算法,做负载均衡等等策略。 

 

TrackServer与ZbusServer都是可以任意个实例运行,典型的配置是2个TrackServer共同热备,2+台ZbusServer负载均衡。

 

2. ZBUS HA的配置

ZbusServer与TrackServer各个节点之间都无状态,节点之间启动无顺序。单机下演示典型的配置:

进入zbus的ha目录下

第一步: 启动两个TrackServer实例,tracker1.bat 与tracker2.bat分别启动了16666和16667端口的TrackServer

tracker.bat

 

第二步: 启动两个ZbusServer实例,zbus1.bat与zbus2.bat,zbus的配置与单机版的唯一区别在于显示指定了需要上报的TrackServer列表

zbus.bat

启动结束,整个HA环境便这样非常简单的搭建好了。如果是在分布式环境下搭建,只需要在不同的机器上启动TrackServer,在每台ZbusServer上的配置中填写启动的TrackServer地址列表即可。

 

3. ZBUS API说明举例

ZBUS的API对高可用与单机做了模型抽象统一,基本从应用代码层面感受不到HA的参与。

 

ZBUS的编程模型接口遵循了PBC三个角色,即:

P--生产者Producer

B--中介商服务Broker

C--消费者Consumer

另外,RPC是在生产消费者基础上,让消费者具备反馈消息回到生产者的能力的一个特列,仍然可以看成PBC的一个特例。

 

构建生产者与消费者,我们都需要指定Broker,Broker中间服务节点,可以是单机版本SingleBroker也可以是高可用版本HaBroker。

 

Broker具体做什么呢,在zbus体系下的抽象是1)底层到服务器的链接能力,2)更高层对服务器的命令执行能力(invoke),仅此而已。

1)链接能力,主要做连接池管理,提供抽象链接概念,应用层不需要关心

2)命令执行,对服务器能完成啥指令的一个抽象,应用层得到Broker可以直接向服务发指令。

 

SingleBroker单机版就是对单个zbus的直接抽象,HaBroker高可用版本是对多个zbus的抽象,链接能力能扩展至多个zbus,invoke同样,HaBroker通过TrackServer的信息更新获得动态更新连接池与动态invoke命令能力。

 

生产者、消费者的Producer编程模型

1. 构建Broker,选择SingleBroker或者HaBroker

2. Producer、Consumer 根据Broker创建

3. Producer生产消息,消费者消费消息。

 

构建SingleBroker只需要配置ServerAddress(直接连接的zbus地址),构建HaBroker只需要指定TrackServer列表(间接更新多个zbus的TrackServer列表)

 

具体代码参见test目录下诸多例子。

 

4. 消费者场景下多Broker配置推荐

 

Consumer如果使用HaBroker,则具备Failover消费多个zbus的消息,但是消费转移仅仅发生在Failover之后。Consumer的高可用还有另外一种推荐的配置是,在MqConfig中配置多个SingleBroker,我们称之为MultiBroker(不存在这个类)

HaBroker VS MultiBroker

HaBroker:优点是能解决Consumer,Failover问题,缺点是Consumer可能因为Failover汇聚到某一台zbus上,没有做分割,Consumer只能能物理上链接到某一台zbus。

MultiBroker: Consumer静态配置指定到多个zbus上,能解决分割问题,配置也方便。缺点是不能解决zbus的完全动态性。


 


 

 

© 著作权归作者所有

共有 人打赏支持
少帮主

少帮主

粉丝 316
博文 6
码字总数 3921
作品 2
深圳
其他
加载中

评论(6)

gahello
gahello
请问一下,,linux有相关启动脚本了没有。。
都是Windows的。。。
syi6_zh
syi6_zh
这个正式项目有应用吗,有没碰到过什么问题?
Tom-Lin
Tom-Lin
关注
cwledit
cwledit
TrackServer 的模式 在队列中已有消息的情况下,consumer 先启动,TrackServer 与ZBUS后启动的话,consumer 不会去处理消息中的已有队列,consumer 重启后就会消费了。在非TrackServer 的模式 consumer 会处理的
少帮主
少帮主

引用来自“cwledit”的评论

consumer可能因为Failover汇聚到某一台zbus上时,人为介入是否有办法解决?
采用多总线注册方式,固定,后续可能选择算法上会继续探索好点的算法自动化的分割,但是切换过程也是有代价的,所以先推荐你用MultiBroker的方式
cwledit
cwledit
consumer可能因为Failover汇聚到某一台zbus上时,人为介入是否有办法解决?
zbus-6.2.0 发布,轻量级 MQ,RPC 服务总线

zbus-6.2.0 发布,整个项目模块化重构,改进内容: MQ默认直接采用持久化。MQ速度在SSD磁盘上可达200M+/s,数十亿级消息堆积测试(100G+磁盘) RPC支持分为直接RPC与基于MQ的RPC,直接RPC性能...

少帮主
2015/09/21
3.3K
27
MQ、RPC、服务总线--zbus

小巧而极速的MQ, RPC实现, 支持HTTP/TCP代理,开放易扩展,多语言支撑微服务,系统总线架构 zbus核心是一个独立实现的小巧极速的消息队列(MQ),支持持久化与内存队列, 支持单播、广播、组...

少帮主
2014/01/22
67.4K
56
zbus 0.9.0 新版发布,MQ、RPC、微服务总线

经过相当长一段时间的重构优化,zbus新版0.9.0发布。 依然保持小巧极速易用,核心~400K Jar包,发行 ~3M,极少依赖,重点增强: 消息队列(MQ) 单播、广播、组播、订阅消息模式统一 支持磁盘...

少帮主
2017/09/18
4.2K
29
优质实用的开源项目推荐

一、0wner 源码地址:https://github.com/lviggiano/owner.git OWNER 是一个简单的 Java 对 Properties 文件的封装库,假设 properties 配置如下: port=80hostname=foobar.commaxThreads=1......

李景枫
2016/03/01
116
0
ZBus简单介绍

HTTP兼容 ZBus的通信协议头是采用HTTP格式头,而Body部分可以是任意的格式。 这样子在流量器访问和Broke建立链接是一致的接口 MQ / TOPIC ZBus 支持MQ 和 Topic,默认为MQ类型。 Producer/C...

精通吹水
2016/04/08
582
0
rushmore/zbus-php

/\ /\ /\\\\\ /\ /\ /\ /\\\\\ /\/////\ /\ /\/////\ ///////\/ /\\\\ /\ /\ /\////// /\\\\\ /\\\\\ /\\\\\ zbus strives to make Message Que...

rushmore
2017/07/09
0
0
ZBUS项目结构概貌

项目已经更新,请参考 zbus.io http://git.oschina.net/rushmore/zbus ZBUS项目代码概览 broker -- 链接代理,解决连接池管理,链接高可用 kit --工具类,包括log日志、对象池等 mq --消息队...

少帮主
2015/09/17
1K
2
rushmore/zbus-go

/\ /\\\\\ /\ /\ /\ /\\\\\ ///////\/ /\\\\ /\ /\ /\////// ZBUS = MQ + RPC zbus strives to make Message Queue and Remote Procedure Call fast, light-weighted and easy to build your......

rushmore
2017/09/13
0
0
zbus-6.3.0 发布,轻量级 MQ,RPC 服务总线

zbus-6.3.0 发布了,主要改进内容包括: 1. 增加主从队列支持 2. 增加消息过滤机制,根据消息键值决定是否写入消息队列磁盘。 3. 增加不经过网络传输的JVM内部通讯优化的JvmBroker 4. 增加Z...

少帮主
2016/03/22
4K
20
大数据Hadoop需要了解哪些内容?

一、Hadoop环境搭建 1. Hadoop生态环境介绍 2. Hadoop云计算中的位置和关系 3. 国内外Hadoop应用案例介绍 4. Hadoop概念、版本、历史 5. Hadoop核心组成介绍及hdfs、mapreduce体系结构 6. H...

mo默瑶
05/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Python3学习日志二 Python中的集合set和字典dict

1.集合set 定义一个集合set 我们可以看到定义集合set有两种不同的形式,如果要定义一个空的集合set不能用{}而是要用set();另外,集合是无序的,而且set中的元素是不可重复的,如果你定义了一...

Mr_bullshit
10分钟前
0
0
adb 操作指令详解

ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。 注:有部分命令的支持情况可能与 Android 系统版本及定制 ROM 的实现有关。...

孟飞阳
17分钟前
0
0
nodejs安装以及环境配置(很好的node安装和配置文章,少走很多弯路)

一、安装环境 1、本机系统:Windows 10 Pro(64位) 2、Node.js:v6.9.2LTS(64位) 二、安装Node.js步骤 1、下载对应你系统的Node.js版本:https://nodejs.org/en/download/ 2、选安装目录进...

sprouting
34分钟前
0
0
Redisson

了解了Redisson,发现使用挺简单的,接下来准备深入学习一下。 Redisson介绍 Redisson是架设于Redis基础之上的一个Java驻内存数据网格(In-Memory Data Grid) Redisson在基于NIO的Netty框架上...

to_ln
34分钟前
0
0
python有哪些好玩的应用实现,用python爬虫做一个二维码生成器

python爬虫不止可以批量下载数据,还可以有很多有趣的应用,之前也发过很多,比如天气预报实时查询、cmd版的实时翻译、快速浏览论坛热门帖等等,这些都可以算是爬虫的另一个应用方向! 今天给...

python玩家
34分钟前
0
0
jq 判断复选框是否被选中,复选框后台接收

1. 效果 2. 代码 html部分: JS部分: var rememberLogin = $("#rememberLoginId").is(':checked')//获取复选框是否被选中 var rememberLoginval = $("#rememberLoginId").attr('value')//拿......

Lucky_Me
41分钟前
0
0
python爬虫日志(3)-爬去异步加载网页

在浏览器检查元素页面中,选取Network中的XHR选项即可观察每次加载页面,网页发出的请求,观察url的规律即可利用封装的函数对每一页进行爬取。

茫羽行
42分钟前
0
0
《趣谈网络协议》01之为什么要学习网络协议?

一、协议 1.协议的定义 简单说协议就是一个规则,保证沟通交流双方可以互相听懂、理解或者可以双方合作可以顺利进行的一个约定和规则。 2.生活中例子 (1)有一种叫“程序猿”的物种,敲着一种...

aibinxiao
43分钟前
1
0
Python数据分析numpy基础-维度的认识

什么是多维数组? 核心对象是同型的多维数组(简单理解就是一个表格,通常内容都是些数字),具有相同的数据类型。 概念: 1. axes(轴):数组的维度统称为轴。 2. rank:轴的数量称为rank。...

十年磨一剑3344
47分钟前
0
0
Java 正则表达式相关资料

1.java正则表达式过滤html标签

IT追寻者
51分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部