消息队列,入门轻松,进阶不易

Posted caoz的梦呓

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了消息队列,入门轻松,进阶不易相关的知识,希望对你有一定的参考价值。

我一直不认为自己是什么优秀的编程者,甚至如果按照现在的标准,去应聘巨头的普通开发岗位,我也是很难获得入职资格的。


但在早期互联网时代,我还是有一点优势,就是遇到问题的时候,肯琢磨,那时候没有什么互联网编程的概念,对并发负载什么的都是见招拆招,经常也会手忙脚乱,可是2004年我决定做统计的时候,面对可能存在的巨大的请求规模,以及结合我更早做广告交换系统中的经验和教训,我想通了一个技术逻辑,这件事现在说起来平平无奇,但是2004年,面对各路草根创业者的时候,这个逻辑让我拥有了巨大优势,什么呢?就是既然解决不了数据库实时统计的存储负载,为什么不把数据存储做成异步处理?


想通了这一点,最大的困境就豁然开朗了,但那时候真的什么都不懂,也没有什么顺手的消息队列工具,就算有,那时候也不太了解,就基于memcache自己写了一些类似消息队列的特别基本的东西,完成从请求拆解到数据存储异步处理的信息传递。


那么,我们现在知道,纯粹用共享内存做消息队列,有太多不可靠的地方,那时候确实也踩了很多坑,数据会不会丢失?会不会出现读取错误?说实话,各种坑都遇到过。而且那时候也没有什么集群的概念,每台服务器都是单独配置,管理起来也是各种头大。即便如此,感谢当年整体行业水平的帮衬,CNZZ还是脱颖而出,成为网站免费统计的市场第一。


所以不夸张的说,当年CNZZ的市场第一,在于比其他同类草根创业者率先想通了异步存储数据这个逻辑,并率先实现了低配简版的消息队列数据传输方式。


现在谈消息队列,选择就多了,有所谓“上古”的 ActiveMQ,有应用广泛的 RocketMQ、Kafka,以及最近推出的 Pulsar,伴随着技术的持续发展,一代又一代的消息队列不断推陈出新,性能越来越强大,功能也日臻丰富完善。


消息队列本身功能简洁、结构清晰,入门简单且有足够的深度,作为使用最广泛的中间件,涉及的底层技术非常全面,适合用来深入分析和学习分布式系统等一些复杂的相关技术,让你一通百通。


你可能会问,我是普通程序员, 工作中只会使用消息队列等“轮子”来实现业务,并没有机会参与到“轮子”的开发,学习这些底层的技术知识对我真的有用吗?


当然有用。消息队列几乎是每个后端程序员都会用到的中间件,它在你的技术栈中重要程度不言而喻。消息的功能很简单,就是收发消息,你肯定可以看一下文档,几分钟就写出一个用消息队列收发消息的 Demo。但是,把消息队列真正应用到生产系统中,就没那么简单了。


在使用消息队列的过程中,你会面临很多实际问题,比如:

  • 选择哪款消息队列更适合你的业务系统?

  • 如何保证系统的高可靠、高可用和高性能?

  • 如何保证消息不重复、不丢失?

  • 如何做到水平扩展?

诸如此类的问题,每一个问题想要解决好,都不太容易。


如果你掌握了消息队列的底层技术,无论使用哪种消息队列产品,你都可以从原理层面来分析问题,再简单看一下它的 API 和相关配置项,就能很快知道该如何配置消息队列,写出高性能并且可靠的程序。


说到这里,就一定要给你们介绍一位高手——东零售技术架构部资深架构师李玥,他在去年带领团队重构了京东自研的消息队列产品:JMQ,实现了超过 2000 个节点的超大规模集群部署,并且抗住了“11.11”和“618”两次大促,超过万亿流量洪峰的考验。


特别要说明的是,内部消息渠道透露,京东很快就会开源这个项目,并重新命名为JoyQueue。这种事情我一向是极为支持的。


据他说,多读优秀开源软件的文档和源代码,从中学习和借鉴优秀的设计思想与编码技巧,再融入自己的思考和创新,是他高效设计开发中间件系统的主要方法。这里又要重复我常说的,用思想驾驭工具,而不是让工具奴役思想。是不是一个道理。最近,李玥和极客时间合作了《消息队列高手课》专栏,我想,你一定可以从中学习到他对消息队列独到的看法和一手经验。 

扫码免费试读或订阅


你能获得什么?


在《消息队列高手课》专栏中,李玥老师将带大家拿着“显微镜”分析开源消息队列的源码,让你具备从源码角度分析和解决实际业务问题的能力,并且借由消息队列的底层技术,带你了解其优秀的设计思想,理解各种“轮子”的实现原理,从而提升你的编程能力。具体地,会从基础、进阶、案例三个部分来讲。


1.基础篇

以讲解消息队列的使用方法和最佳实践为主,包括消息队列基础知识、技术选型、高级功能等,给出消息队列应用过程中常见问题的解决策略。


2.进阶篇

深入到源码中去,探讨消息队列的实现原理,拓展知识深度。在这个模块的前半部分,每篇对异步模型、高性能的底层网络通信等知识点进行探讨,这些知识点不仅是中间件开发人员必须掌握的,而且是各大厂面试题中的常考内容。后半部分每篇会选择一个开源的消息队列,针对一个功能特性,讲解它的实现原理,以及源代码中优秀的设计思想和好的编程技巧。


3.案例篇

应用前两个模块学到的知识,一起做两个微型项目,体验实际的代码开发。第一个微项目,用消息队列和流计算框架来实现一个流计算任务;第二个微项目,实现一个最简单的RPC框架,因为开发中间件用到的很多技术都是互通的,开发消息队列的技术同样可以用于开发RPC框架。


这个课口碑不错


上线24小时,就有近 3000 订阅

原价 ¥99 ,限时优惠 ¥68

扫码免费试读或订阅

也可以点击下方“阅读原文”进入。


以上是关于消息队列,入门轻松,进阶不易的主要内容,如果未能解决你的问题,请参考以下文章

消息队列专题(进阶篇):RabbitMQ 介绍与环境搭建

Redis进阶学习04---秒杀优化和消息队列

MQ入门

分布式任务队列Celery入门与进阶

C#RabbitMQ进阶指南

C#RabbitMQ进阶指南