前言

machinery

音讯队列

音讯队列这个概念其实在我之前的文章:手把手教姐姐写音讯队列,本人入手用go写一个简易版的音讯队列,有趣味的小伙伴们能够看一下这篇文章。回归正题,咱们再来介绍一下什么是音讯队列。

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

场景

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

日志解决是指将音讯队列用在日志解决中,比方Kafka的利用,解决大量日志传输的问题。架构简化如下:

KfakaKfaka

工作队列

machineyCelerygoWorkerYTaskmachinerymachinery

场景

工作队列是用来执行一个耗时工作。大家可能都应用过马爸爸的花呗,每当咱们还款时,就会减少本人的芝麻信用分。这就能够用到工作队列来计算用户的积分和等级了。架构简化如下:

mqredis

区别

音讯队列和工作队列,我感觉最大的不同就是理念的不同:工作队列传递的是”工作”,音讯队列传递的是”音讯”。工作队列能够说是音讯队列的二次开发。

通过下面两个场景例子,咱们能够总结一下两者区别:

  • 音讯队列更侧重于音讯的吞吐、解决,具备有解决海量信息的能力。另外利用音讯队列的生产者和消费者的概念,也能够实现工作队列的性能,然而还须要进行额定的开发解决。
  • 工作队列则提供了执行工作所需的性能,比方工作的重试,后果的返回,工作状态记录等。尽管也有并发的解决能力,但个别不适用于高吞吐量疾速生产的场景。其实工作队列和近程函数调用很像,不过和rpc调用不同,他的调用不是网络申请的形式,而是通过利用音讯队列传递工作信息。

综上所述,集体认为工作队列就是音讯队列在异步场景下的深度二次开发,依据理论我的项目开发依据理论场景做相应抉择即可。

后言

以上全是集体了解,有什么不对的,欢送指出。

好啦,这一篇文章到这就完结了,咱们下期见~~。心愿对你们有用。可增加我的golang交换群,咱们一起学习交换。

结尾给大家发一个小福利吧,最近我在看[微服务架构设计模式]这一本书,讲的很好,本人也收集了一本PDF,有须要的小伙能够到自行下载。获取形式:关注公众号:[Golang梦工厂],后盾回复:[微服务],即可获取。

我翻译了一份GIN中文文档,会定期进行保护,有须要的小伙伴后盾回复[gin]即可下载。

machinery
golangvx

举荐往期文章:

  • machinery入门看这一篇(异步工作队列)
  • 这个缓存更新的套路你都晓得吗?
  • 手把手教姐姐写音讯队列
  • 常见面试题之缓存雪崩、缓存穿透、缓存击穿
  • 详解Context包,看这一篇就够了!!!
  • go-ElasticSearch入门看这一篇就够了(一)
  • 面试官:go中for-range应用过吗?这几个问题你能解释一下起因吗
  • 学会wire依赖注入、cron定时工作其实就这么简略!
  • 据说你还不会jwt和swagger-饭我都不吃了带着实际我的项目我就来了