当前位置: 首页 > 科技观察

一周收到三张工单,这是什么破消息队列?

时间:2023-03-12 07:36:05 科技观察

上个星期四正想打码,家人突然发微信截图:违章停车被罚了!!!心里慌了,这个月的生活费要扣了~过了一会儿,仔细看了看违停的照片,想起来:时间发生在前天(周二)早上,我停在路边买早餐。全程不超过3分钟!3分钟=扣3分+罚款100元,这早餐太贵了。大约一分钟后,我恍然大悟:我今天(星期四)早上又停在这里买早餐了!!!停了两次,看看是不是不知道违规,所以第二次就免了?然而,事实狠狠地打了我的脸。几个小时后,老婆又给我发了一张截图:10000匹草泥马疾驰而过。今晚下班,我是不是要把公司的键盘拿回家……幸好周三的限量没有开放,要不然不就直接给我来个三连了吗???之前一直停在这里买早餐,从来没有被拍到过。这台相机可能是最近才安装的。只能怪自己,唉~不过后来我开始思考一个问题:为什么是前天和今天?违章信息今天一口气推送给我?如果前天的交通违章信息能在同一天发出,我就不用连续两次违章停车了。这是用来推送什么破消息队列???如果交警队的系统用的是消息队列,那么用的是什么消息队列呢?首先,什么是消息队列?消息队列,即MessageQueue,那么它首先要有一个队列。我们对队列并不陌生。遵循先进先出(FIFO)的数据容器在编程和开发中经常被使用。例如,一个或多个线程生成任务消息并投递到队列中,另一个或多个线程从队列中取出消息进行处理,典型的生产者-消费者模型。上面描述的场景是在单机上。如何实现跨多台服务器的生产者消费者模型?消息队列很好地解决了这个问题。使用消息队列有三大优势:调峰:当大量请求到来时,数据库往往难以应对,如果将请求放入消息队列中,可以起到缓冲调峰的作用.解耦:生产者只需要写消息,不关心谁来读取和消费,什么时候消费,实现生产者和消费者的完全解耦。异步:如果某个任务的处理时间过长,可以将任务发布到队列中,不阻塞等待处理链上的后续处理,实现异步。常见的四种消息队列:Kafka:使用Scale和Java开发,单机吞吐量达到10W,时效达到ms级,支持分布式部署,消息稳定性高!常用于日志处理和分析场景。RabbitMQ:使用冷门语言erlang开发,吞吐量达到万级,时效达到微秒级,可以说是非常快了。ActiveMQ:Java开发的,吞吐量也在万级别,时效也在ms级别,消息可靠性也较低。RocektMQ:也是Java开发,阿里巴巴出品。从名字就可以看出,它的速度快如火箭,支持10W级别的吞吐量。这些消息队列的速度都很快,都没有达到一天级的延迟,所以这锅消息队列应该是撑不起来的。如果真的使用消息队列,我多么希望是一个特别容易丢消息的队列,把我非法停止的消息扔掉。可惜RocketMQ和Kafka理论上基本不会丢数据,而ActiveMQ和RabbitMQ只是极小概率丢数据。交警局的违章记录应该是人工审核的,所以这件事多半是人为的问题,所以……迟到的三联只会迟到,不会缺席。就在我周末出去跑腿路边喝杯茶的时候,交警叔叔给我发来第三张罚单:我是不是被交警盯上了?这一刻,我不敢回头看老婆的脸,但我还是有点侥幸:这只是一张违章停车通知书,也许不会被举报,毕竟我遇到过之前发了ticket最后没有处理的情况!不知道为什么,这次的消息队列很给力。没过多久,短信又来了,很快!完全搞不懂这个神秘的消息推送机制,有时快,有时慢,有时甚至会卡几天。这个月还没过半,交了罚款就出去了,值几百块钱.不知道口袋里的零花钱能不能撑到月底……对于票务信息的延迟推送,你怎么看?你遇到过吗?是这样吗?本文转载自微信公众号“编程技术宇宙”,可通过以下二维码关注。转载本文请联系编程技术宇宙公众号。