三分鐘讀懂ZeroMQ

2021-10-04 07:09:08 字數 928 閱讀 4588

zeromq可以分開來看zero mq,mq就是message queue訊息佇列。zero是零,它代表零中介軟體(none-broker)、零延遲,同時,它又有了新的含義:零管理、零成本、零浪費。總的來說,零表示最小、最簡,這是貫穿於該項目的哲理。致力於減少複雜程度,提高易用性。

訊息佇列有四個典型應用場景:

非同步處理:任務並行,減少響應時間

應用解耦:無上下文,無狀態,只通過訊息通訊

流量削鋒:流量過大或暴增時,像個漏斗一樣做緩衝

訊息通訊:需要廣播訊息

與其它訊息佇列activemq, rabbitmq, rocketmq, nats, nsq, kafka等相比,它的特點是:

1、無鎖的佇列模型

對於跨執行緒間的互動(使用者端和session)之間的資料交換通道pipe,採用無鎖的佇列演算法cas;在pipe兩端註冊有非同步事件,在讀或者寫訊息到pipe的時,會自動觸發讀寫事件。

2、批量處理的演算法

對於傳統的訊息處理,每個訊息在傳送和接收的時候,都需要系統的呼叫,這樣對於大量的訊息,系統的開銷比較大,zeromq對於批量的訊息,進行了適應性的優化,可以批量的接收和傳送訊息。

3、多核下的執行緒繫結,無須cpu切換

區別於傳統的多執行緒併發模式,訊號量或者臨界區, zeromq充分利用多核的優勢,每個核繫結執行乙個工作者執行緒,避免多執行緒之間的cpu切換開銷。

inproc(程序內)、ipc(程序間)、tcp、pgm(廣播)、epgm(廣播)

zeromq支援四個層次的通訊:程序內,跨程序,跨節點,跨網路。在節點和網路層需要指定ip位址或網域名稱,如:

backend.bind("tcp:")
執行緒和程序通訊,可以自定義,如:

workers.bind("inproc://workers")
內建的四種訊息模式:

三分鐘帶你讀懂 BERT

作者 suleiman khan,ph.d.翻譯 胡瑛皓 stone豪 校對 醬番梨 審核 詹森 李加薪 整理 立魚王 由谷歌公司出品的用於自然語言理解的預訓練bert演算法,在許自然語言處理的任務表現上遠遠勝過了其他模型。bert演算法的原理由兩部分組成,第一步,通過對大量未標註的語料進行非監督的...

沉默三分鐘

網上見此真情之文,藉以自表 原文 http www.hecaitou.net p 3018 沉默三分鐘是心祭。那麼多年了,國旗終於為平民而降。那麼多天了,全民哀悼終於實現。與此同時,火炬停止傳遞,因為這不是乙個歡慶的時刻。很多年後回顧2008年,我 也許寧可它從日曆中消失。還沒有哪一年和今年一樣,才...

三分鐘教你讀懂匯票是什麼

匯票 1 匯票的概念及特點 匯票 draft 是出票人簽發的,委託付款人在見票時或者在指定日期無條件支付確定金額給收款人或者持票人的票據。出票人 金融機構 銀行匯票 銀行以外的企業和其他組織 商業匯票 匯票的特點 1 匯票是一種證實貨幣權利的金融工具 2 匯票是具有支付功能的金融工具 3 匯票是具有...