消息隊列1

什么是隊列系統(tǒng)棵癣?

可以把隊列和棧還有堆想象成一個容器辕翰,

隊列其實就是我們通常說的排隊,可以想象成一個兩端開口的容器狈谊,先來后到喜命,先進(jìn)來的就先出去后進(jìn)來的就后出去。

棧就不一樣了河劝,棧大家可以想象成一端開口的容器 壁榕,比如說杯子,先進(jìn)去的反而后出來赎瞎。

而堆就是沒有口的一個盆牌里,隨便進(jìn)出。


含義:

消息隊列系統(tǒng)就是利用隊列的原理务甥,把一個個的消息放到像隊列一樣的容器里牡辽。


特點:

1喳篇、消息隊列是有順序的

2、消息隊列系統(tǒng)是可以存放數(shù)據(jù)的


場景:

1.用戶點擊按鈕發(fā)送短信态辛,有沒有收到短信系統(tǒng)其實并不知道

? ? 答疑: 用戶點擊了獲取短信的按鈕麸澜,主線程收到指令以后,fork 一個新的線程來去處理發(fā)送短信因妙,然后主線程繼續(xù)執(zhí)行后續(xù)的操作痰憎。

2.大家在使用各大第三方系統(tǒng)的時候是不是個回調(diào),如果回調(diào)沒有調(diào)通怎么辦

3.秒殺的時候商品只有100個的時候怎么處理

4.需要和第三方數(shù)據(jù)通訊的時候 對方掉線了怎么辦

5.如果我需要給別人發(fā)回調(diào) 別人沒有收到咋辦

6.我系統(tǒng)需要大量的記錄日志的時候怎么記


考慮:

1.我接下來的操作是不是必須成功

2.我接下來的操作用戶有沒有必要參與

3.接下來的操作是不是費時

如果是命中這三項其中一項攀涵,那么我們就可以把這個操作進(jìn)行異步處理(PS:注意這里不是多線程铣耘,而是多進(jìn)程。PHP支持多進(jìn)程也支持多線程)以故。


其實 php 在這里是可以用多線程來處理異步的問題蜗细,為啥不用呢?

1.從語言的角度來說 php的多線程需要依賴第三方庫怒详,而且比較弱炉媒,會出現(xiàn)子線程阻塞的問題,還有線程回收與釋放的問題 不像其它語言那么靈活

2.多線程來處理這類的問題只解決了費時的場景昆烁,和用戶無需參與的場景吊骤,并沒有解決保證成功的場景


以上都是 php 基于 sapi 運(yùn)行的情況,也就是基于 web 服務(wù)運(yùn)行 php 的場景静尼,也就是大家用 apache 或者 nginx 的時候白粉,cli 模式下運(yùn)行 php是另外的模型了。


為什么多線程不能解決保證成功的場景鼠渺?

答:如果我用多線程處理這個問題鸭巴,我請求網(wǎng)絡(luò)還是失敗,這個時候怎么辦拦盹?

? ? 1.子線程繼續(xù)等待鹃祖,循環(huán)直到成功

? ? 2.子線程銷毀,繼續(xù) fork 新線程直到成功

? ? 那么就很容易出現(xiàn)有線程一直阻塞在這里不會被釋放的現(xiàn)象吧普舆?

? ? 如果這種異常情況多了 大家想一下 你的電腦的內(nèi)存和 cpu 是不是瞬間就被撐爆了恬口?

? ? 那么需要解決剛剛說的那三個場景,就需要一個有存儲能力的異步工具沼侣,起碼失敗了你能幫我把失敗的東西存起來楷兽。

? ? 失敗了, 我首先做的事情是重試? 我不能無限重試华临,我更需要的是把失敗的東西存下來我能找到他,只要消息存下來了端考,準(zhǔn)確的說雅潭,消息低成本的存下來了揭厚,我就可以重新再嘗試,

回到場景一:

用戶點擊發(fā)生短信請求—>系統(tǒng)講請求放到消息隊列系統(tǒng)—>返回給用戶成功

另外一個進(jìn)程去消息隊列系統(tǒng)里消息—>拿到消息之后處理—>處理成功把消息刪掉—>處理失敗把消息放回系統(tǒng)


總結(jié):

隊列系統(tǒng) 并不是一個系統(tǒng) 而是一個概念扶供,只要你能滿足我說的兩個條件的筛圆,都可以廣義的說是隊列系統(tǒng)了。

比如 mysql 可以設(shè)計成隊列系統(tǒng)椿浓,redis 同理太援。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市扳碍,隨后出現(xiàn)的幾起案子提岔,更是在濱河造成了極大的恐慌,老刑警劉巖笋敞,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碱蒙,死亡現(xiàn)場離奇詭異,居然都是意外死亡夯巷,警方通過查閱死者的電腦和手機(jī)赛惩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來趁餐,“玉大人喷兼,你說我怎么就攤上這事『罄祝” “怎么了季惯?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長喷面。 經(jīng)常有香客問我星瘾,道長,這世上最難降的妖魔是什么惧辈? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任琳状,我火速辦了婚禮,結(jié)果婚禮上盒齿,老公的妹妹穿的比我還像新娘念逞。我一直安慰自己,他們只是感情好边翁,可當(dāng)我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布翎承。 她就那樣靜靜地躺著,像睡著了一般符匾。 火紅的嫁衣襯著肌膚如雪叨咖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天,我揣著相機(jī)與錄音甸各,去河邊找鬼垛贤。 笑死,一個胖子當(dāng)著我的面吹牛趣倾,可吹牛的內(nèi)容都是我干的聘惦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼儒恋,長吁一口氣:“原來是場噩夢啊……” “哼善绎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起诫尽,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤禀酱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后箱锐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體比勉,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年驹止,在試婚紗的時候發(fā)現(xiàn)自己被綠了浩聋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡臊恋,死狀恐怖衣洁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情抖仅,我是刑警寧澤坊夫,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站撤卢,受9級特大地震影響环凿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜放吩,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一智听、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧渡紫,春花似錦到推、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至唧喉,卻和暖如春捣卤,著一層夾襖步出監(jiān)牢的瞬間忍抽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工腌零, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留梯找,地道東北人。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓益涧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親驯鳖。 傳聞我的和親對象是個殘疾皇子闲询,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 一、 消息隊列概述 消息隊列中間件是分布式系統(tǒng)中重要的組件浅辙,主要解決應(yīng)用耦合扭弧、異步消息、流量削鋒等問題记舆。實現(xiàn)高性能...
    步積閱讀 56,968評論 10 138
  • 以下是消息隊列以下的大綱鸽捻,本文主要介紹消息隊列概述,消息隊列應(yīng)用場景和消息中間件示例(電商泽腮,日志系統(tǒng))御蒲。 本次分享...
    文檔隨手記閱讀 1,888評論 0 28
  • “ 消息隊列已經(jīng)逐漸成為企業(yè)IT系統(tǒng)內(nèi)部通信的核心手段。它具有低耦合诊赊、可靠投遞厚满、廣播、流量控制碧磅、最終一致性等一系列...
    落羽成霜丶閱讀 3,992評論 1 41
  • 消息隊列設(shè)計精要 消息隊列已經(jīng)逐漸成為企業(yè)IT系統(tǒng)內(nèi)部通信的核心手段碘箍。它具有低耦合、可靠投遞鲸郊、廣播丰榴、流量控制、最終...
    meng_philip123閱讀 1,512評論 1 25
  • 消息隊列已經(jīng)逐漸成為企業(yè)IT系統(tǒng)內(nèi)部通信的核心手段秆撮。它具有低耦合四濒、可靠投遞、廣播像吻、流量控制峻黍、最終一致性等一系列功能...
    Sophie12138閱讀 723評論 0 7