zoukankan      html  css  js  c++  java
  • celery_3:消息队列和任务队列的区别

    本文转自:

    1、消息队列和任务队列有什么区别?

    2、任务队列,消息队列和rpc的区别是什么?

    前言

    昨天发了一篇文章是关于machinery的入门教程,有一位读者在留言中问我 这个和kafka有什么区别?一时我也有点懵,这两个的概念很近,到底有什么不同呢?根据我自己的理解,简单分析了一下,有不足之处欢迎指出。

    消息队列

    消息队列这个概念其实在我之前的文章:手把手教姐姐写消息队列,自己动手用go写一个简易版的消息队列,有兴趣的小伙伴们可以看一下这篇文章。回归正题,我们再来介绍一下什么是消息队列。

    消息队列,一般我们会简称它为MQ(Message Queue)。他是由两个单词组成,我们应该对队列(Queue)很熟悉吧。队列是一种先进先出的数据结构。再配合上消息,消息队列可以简单理解为:把要传输的数据放在队列中。使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ。这里我们就不具体讲解消息队列实现细节,这不是本文的主题,只知道概念就可以了。了解了什么是消息队列,我们一起来看看他在什么场景使用。

    场景

    消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。这里举一个消息队列的使用场景:日志处理。

    日志处理是指将消息队列用在日志处理中,比如Kafka的应用,解决大量日志传输的问题。架构简化如下:

    • 日志采集客户端,负责日志数据采集,定时写入Kfaka队列。
    • Kfaka消息队列,负责日志数据的接收,存储和转发。
    • 日志处理应用,订阅并消费kafka队列中日志数据。

    任务队列

    既然消息队列称为MQ,那么任务队列我们就可以叫其TQ(Task Message)。任务队列可以简单理解为:把要执行的任务放在队列中。使用较多的任务队列有machineyCelerygoWorkerYTask。每一个任务队列都有自己的特点,这里就不细讲了。我写了一篇machinery入门教程,并且翻译了 href="https://mp.weixin.qq.com/s/lFhhytWbJE5g7R8KcA7Tfw">一篇machinery中文文档,有需要的公众号自取。具体任务队列的细节就不讲了。这不是本文的主题,下面我们看一看任务队列的使用场景。

    场景

    任务队列是用来执行一个耗时任务。大家可能都使用过马爸爸的花呗,每当我们还款时,就会增加自己的芝麻信用分。这就可以用到任务队列来计算用户的积分和等级了。架构简化如下:

    • 用户还款,当用户还款成功时,发送一个计算用户积分计算的任务到任务队列。
    • 任务队列,可以是mq,也可是redis,用来存储任务。
    • 任务执行者,任务的执行者,监听任务队列,当任务队列中有任务时,便会执行。

    区别

    消息队列和任务队列,我觉得最大的不同就是理念的不同:任务队列传递的是"任务",消息队列传递的是"消息"。任务队列可以说是消息队列的二次开发。

    通过上面两个场景例子,我们可以总结一下两者区别:

    • 消息队列更侧重于消息的吞吐、处理,具有有处理海量信息的能力。另外利用消息队列的生产者和消费者的概念,也可以实现任务队列的功能,但是还需要进行额外的开发处理。
    • 任务队列则提供了执行任务所需的功能,比如任务的重试,结果的返回,任务状态记录等。虽然也有并发的处理能力,但一般不适用于高吞吐量快速消费的场景。其实任务队列和远程函数调用很像,不过和rpc调用不同,他的调用不是网络请求的方式,而是通过利用消息队列传递任务信息。

    综上所述,个人认为任务队列就是消息队列在异步场景下的深度二次开发,根据实际项目开发根据实际场景做相应选择即可。

     

  • 相关阅读:
    easy ui 表单ajax和from两种提交数据方法
    easy ui 下拉级联效果 ,下拉框绑定数据select控件
    easy ui 下拉框绑定数据select控件
    easy ui 异步上传文件,跨域
    easy ui 菜单和按钮(Menu and Button)
    HTTP 错误 404.3
    EXTJS4.2 后台管理菜单栏
    HTML 背景图片自适应
    easy ui 表单元素input控件后面加说明(红色)
    EXTJS 4.2 添加滚动条
  • 原文地址:https://www.cnblogs.com/hailin2018/p/14467911.html
Copyright © 2011-2022 走看看