zoukankan      html  css  js  c++  java
  • Disque:Redis之父新开源的分布式内存作业队列

    DisqueRedis之父Salvatore Sanfilippo新开源的一个分布式内存消息代理。它适应于"Redis作为作业队列"的场景,但采用了一种专用、独立、可扩展且具有容错功能的设计,兼具Redis的简洁和高性能,并且用C语言实现为一个非阻塞网络服务器。

    Redis的作者Salvatore Sanfilippo(网名Antirez)发表的一篇博客文章,介绍了自己几个月以来在晚上和周末开发的新项目——Disque

    开发初衷

    Antirez之所以动念开发Disque,是因为看到很多人用Redis来处理队列,但这样做的优势和劣势都很明显:Redis很快、易用而且很多基础设施里已经在用;但是Redis的高可用性/集群特性的设计完全偏向可变数据结构,这与不可变的消息非常不同,并非最佳方案。

    消息中介重要的功能是保证至少一次或者最多一次发送消息,而且前者更重要。Antirez开始想通过少量修改Redis来实现,但几天后发现客户端算法太复杂了。Redis已经有很多功能,再增加功能并非什么好主意。何况消息队列的运作方式与Redis很不同。

    那么,是不是可以新开发一个消息队列呢?

    世界上已经有很多消息队列了,新做一个有价值吗?Antirez想,既然有这么多人用Redis来处理消息队列,已有的方案看上去要么太简单要么太复杂,其中必有机会,于是他动手了。

    开发过程

    他头一次没有直接写代码,而是花了几个星期思考设计,尝试从用户角度理解什么样的消息队列会让人更爽。主要的使用场景没变:延迟作业。Disque是通用系统,但主要针对的问题,是发送可能要处理的作业的消息。如果有什么违背了这一场景,就会被干掉。

    设计有了,Antirez直接从Redis代码入手。幸运的是Redis部分就是编写C分布式系统的一个框架。协议、网络库、客户端处理、结点到结点的消息总线已经有了,无需重头再写。但他又不想影响Redis本身,于是采取了比较实际的办法:开一个Redis分支,然后将Redis专用的东西全部删掉,只剩一个框架,再开始实现设计。

    很幸运的是有C# 客户端来操作Disque: https://github.com/ziyasal/Disque.Net .

    相关链接:

    Disque:Redis之父新开源的分布式内存作业队列

    Disque 使用教程(DisqueBook.com)

  • 相关阅读:
    工资调整
    演义群侠传(八)【bloom组件源码学习】
    Win8快捷键
    教育类app
    演义群侠传(八)【我需要学习的东西】
    演义群侠传(七)【GC垃圾回收】
    演义群侠传(十)【重学设计模式】
    addChild&&rawChildren的addChild
    演义群侠传(六)【PSD切图方式】
    linux分析网卡流量
  • 原文地址:https://www.cnblogs.com/shanyou/p/4671864.html
Copyright © 2011-2022 走看看