`
iyuan
  • 浏览: 463229 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

zeroMQ初体验-22.可靠性-总览

    博客分类:
  • MQ
阅读更多
开篇就从曾对zeromq的可靠性做过质疑,不过,作为一个雄心勃勃的项目,这自然不能成为它的软肋,于是乎,就有了这一完整的章节来介绍和提供“提升可靠性”的解决方案。

这一章节总共会介绍如下一些具备通用性的模式:
  • 懒惰的海盗模式:由客户端来保证请求、链路的可靠性。
  • 海盗的简单模式:通过LRU队列来保证请求/应答的可靠性。
  • 偏执的海盗模式:通过心跳机制来确保链路的通畅。
  • 管家模式:由服务器端来保证请求、链路的可靠性。
  • 硬盘模式:通过磁盘的同步来确保在不稳定的链路下提供稳定的数据服务。
  • 主从模式:通过主从备份来保证服务的可靠性。
  • 自由模式:通过冗余的中间件来实现服务的可靠性。

(这边由于没有弄明白原作者的一些比喻,所以,就当是索引吧,主要可从解释中窥得一斑)

关于可靠性:
为了搞清楚什么是可靠性,不妨从他的反面--"故障"来看看。如果可以处理一种可被预测的"故障",那么就可以认为,系统对于这种"故障"是具有可靠性的。当然,仅仅是对于这个故障。那么,只要能预测足够的故障,并能做到对这些故障进行相应处理。自然整个系统的可靠性将大大增强。下面将列出一些常见的故障(按出现频率从高到低排列):
1,应用程序:无论如何,似乎这都无法被避免,这些架在zeromq之上的应用程序总是会出现“接口撞车”、“消费能力不足导致内存溢出”、“停止响应请求”等待问题。
2,当然,作为整个框架的基础,zeromq本身的代码也会出现“死亡”、“内存溢出”等麻烦。不过,相对而言,我们应该相信他是可靠的(不然用他做什么)。
3,队列溢出:这个溢出可以是可预料的(因为消费能力不足而丢弃一些数据)。
4,物理层面上的链路问题:这是一个隐藏的故障,通常来说,zeromq会进行连接重试,不过,不可避免的会出现间歇性的丢包问题。
5,硬件问题:没有办法,至少基于该硬件的软体都可以理解为“故障”了。
6,链路上的丢包:数据死在路上了...
7,所有的数据中心/云端 地震、火山爆发、杯具了(e..好吧)

想要完整的解决方案来覆盖上面的一系列问题,对于本教程而言着实有些苛求了。所以,之后的方案相对会简单不少。

关于可靠性的设计:
可靠性工程可能是个杯具性的活计,不过,简单的来看(何必那么复杂),其实只要能尽量缩短 服务的杯具性崩溃时间,使服务看起来一直在运作,似乎也就马马虎虎了,不过纠错还是必不可少的!
例如:
应答模式:如果客户觉得慢,完全可以重试(或许他就能连上不那么忙的服务器了呢)。
发布/订阅模式:如果订阅者错过了一些东西,或许额外加一组应答来请求会比较靠谱。
管道模式:如果服务器后的某个数据加工出了问题,或许可以在统计结果的地方给出提示。

传统的应答模式(基于tcp/ip)当遇到链路断裂或服务器停摆时,很有可能客户端还傻傻的挂着(直到永远)。就这一点而言,zeromq似乎要友好的多,至少,他会帮你重新连接试试~
好吧,这还远远不够,不过,如果再配合着一些额外的操作,其实是可以得到一个可靠的、分布式的应答网络!

简单来说,就有以下三种解决方案:
1.所有客户端连接单一、可确定的服务器。那么一旦哪里崩溃或链路断裂,简单的自检机制加上zeromq的自动重连就可以了。
2.所有客户端连接单一、可确定的队列服务器。数据都放在了队列里,应用崩溃的话,重试应该很简单。
3.多对多的连接。算是1的加强版吧,这里不行,可以连其他的试试。

额。。。其实我也有点晕了,不过,在后续章节中会逐一详解~

(未完待续)
0
3
分享到:
评论

相关推荐

    zeromq-2.1.7.tar.gz

    zeromq-2.1.7.tar.gz 的早期的一个版本,本人已安装成功 放心使用

    zeromq-4.0.3.tar.gz.zip

    zeromq-4.0.3.tar.gz zeromq-4.0.3.tar.gz zeromq-4.0.3.tar.gz

    zeromq-4.3.2.tar.gz

    zeromq-4.3.2.tar.gz,可在linux下编译安装,能够使用zeromq进行sorket开发,多线程,提升性能,效率,可以配合msgpack进行使用,是个好的扩展插件

    zeromq-4.1.3.tar.gz

    zeromq-4.1.3.tar.gz,最新的zeromq的开发工具包,希望对开发者有用

    zeromq-4.1.8.tar.gz

    zeromq-4.1.8.tar.gz 有问题请联系

    zeromq-2.1.9.tar.gz

    zeromq-2.1.9.tar.gz 这是zeromq linux 官方原版 请放心下载

    zeromq-4.0.5-4.el7.x86_64.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    zeromq-4.2.3.tar.gz

    zeromq-4.2.3.tar.gz 一个稳定的版本,可以安装使用!

    zeromq-4.3.4.zip

    0MQ version 4.3.4 stable, released on 2021/01/17

    zeromq-3.2.5.tar.gz、jzmq.tar.gz、Python-2.6.6.tar.bz2、storm-0.8.0.zip下载

    storm搭建所需资源

    zeromq-4.2.0.tar.gz源码包

    在官网下载zeromq太慢了,网速极不稳定,特意下载放在这里供大家下载,当然象征性地赚点 资源分

    zeromq-3.2.5.tar.gz

    ZeroMQ是一个网络通讯库,其主要用来为分布式应用程序开发提供进程间通信(此处的进程既可以是同一台机器上的两个进程也可以是不同机器上的两个进程)。ZeroMQ的特点在于灵活的通信手段和丰富的连接模型,并且它可以...

    zeromq-4.1.4.tar.gz

    ZeroMQ是一个网络通讯库,其主要用来为分布式应用程序开发提供进程间通信(此处的进程既可以是同一台机器上的两个进程也可以是不同机器上的两个进程)。ZeroMQ的特点在于灵活的通信手段和丰富的连接模型,并且它可以...

    zeromq-4.1.2.tar.gz

    ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。

    zeromq-4.3.4.tar.gz

    0MQ version 4.3.4 stable, released on 2021/01/17

    zeromq-4.2.3.zip

    zeroMQ 4.2.3版本 zeromq-4.2.3.tar.gz 欢迎关注我的CSDN博客:https://mp.csdn.net/console/home 免积分下载

    zeromq-4.2.1.tar.gz (包括安装包和zeromq\jzmq教程)

    ZeroMQ(也说明 ØMQ,0MQ 或 ZMQ)是一个高性能的异步消息库,旨在使用分布式或并行应用程序。它提供了一个消息队列,但 不同于面向消息的中间件,一个 ZeroMQ 系统可以在没有专用运行消息代理。jzmq安装包,本人也...

    zeromq-4.2.5.tar.gz

    zeromq-4.2.5.tar.gz

    Win64-ZeroMQ-JZMQ-CZMQ.zip

    VS2015 在Widows 10 上编译的 ZeroMQ 4.3.2,JZMQ 3.1 CZMQ 4.2,可以在 JDK 1.8 下运行。DLL 都是 64位,包含了编译及运行相关信息。分享一下,也给自己留个备份

Global site tag (gtag.js) - Google Analytics