原因,最近换了工做,而新的项目中使用了celery+rabbitmq来实现一个分布式任务队列系统,为了可以维护好这套系统,只能来学习一下这两个组件,顺便把学习笔记记录下来,留做之后回顾,固然若是碰巧能帮助到也在学习这两个组件的同窗,那就更好了,关于celery的部分见这里。分布式
这组笔记来源于《rabbitmq实战:高效部署分布式消息队列》工具
该章开篇首先介绍了为何须要引入消息队列,经过一个简单的认证模块的例子来展现了引入消息队列以后实现了模块之间的解耦,方便扩展。学习
补充一下本身的想法:我认为这里举的这个认证模块的例子不太合适,由于认证模块是一个同步的模块,等待认证结果返回才能继续下来,可是引入消息队列以后会增长处理时间,还会出现消费者若是出了问题,就会致使消息阻塞,因此不如不用消息队列,我的想法,若是不对,还请指正。rabbitmq
其实消息队列在1983年就已经有人提出了这种“信息总线”的思想,并付诸了实施,开发除了Teknekron,它刚开始后的客户都是金融行业,后来新闻行业也成了它的客户,由于新闻是典型的须要把消息分发给不一样的客户的应用场景,而后IBM也开始研发本身的商业消息队列软件IBM MQ,可是这些都是商业软件,并不是开源的,它们之间都是没有一个统一的标准的,这给用户带来了复杂性,因而后来就有许多企业链接制定了统1、开放的消息通讯队列协议:AMQP,这也是这本书的主角rabbitmq的协议标准。队列
这里介绍了rabbitmq创始人的经历,令我感到的奇怪的是,他们竟然会上来就选择一个工具型的应用来进行创业,而且还成功了,这在中国是不多见的,至少如今仍是不多的,更多的是应用层的创业的,其实这也是中国和国外IT的差距吧,看似繁荣的表面,其实基础软件依旧仍是属于学习者。开发
2006年的时候rabbit technologies公司成立,这个家公司就是专门开发rabbitmq的。部署
其中介绍了对于开发语言的选型,为何选择erlang,由于erlang自己是为了开发交换机而开发的语言,因此很适合rabbit,另外erlang实现分布式很方便(这个我还不太理解,没有使用过erlang)。同步
世面上这么多的消息队列软件:ActiveMQ、ZeroMQ、Kafka,那么rabbitmq和这些相比有什么优点呢?消息队列
rabbitmq是彻底实现了qmap协议的、因为erlang,rabbitmq集群很方便实现、rabbitmq更稳定it
这个我建议直接查看rabbitmq的官网,介绍的很详细
第一章介绍学习完了,以前学习一个新的技术老是以为看完了就ok了,即便写笔记也更像是“抄书”,以为没有什么意思,可是如今想一想总以为仍是但愿能留下点什么,因此尽可能坚持写写学习笔记,尽可能把学会的东西转换为本身的语言,避免“抄书”。