原因,最近換了工做,而新的項目中使用了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了,即便寫筆記也更像是「抄書」,以爲沒有什麼意思,可是如今想一想總以爲仍是但願能留下點什麼,因此儘可能堅持寫寫學習筆記,儘可能把學會的東西轉換爲本身的語言,避免「抄書」。