成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java 帝國之消息隊列

開發 開發工具
5年前網上購物興起的時候, 帝國非常看好, 決定向這個領域進軍, 于是興建了張家村, 在這里安裝了Java 虛擬機和數據庫, 然后部署了一個基于Web的訂單系統和一個庫存系統, 由張家村的人負責操作。

張家村的歷史

Java 帝國的張家村正在迎來一次重大的變革。

5年前網上購物興起的時候, 帝國非常看好, 決定向這個領域進軍, 于是興建了張家村, 在這里安裝了Java 虛擬機和數據庫, 然后部署了一個基于Web的訂單系統和一個庫存系統, 由張家村的人負責操作。

張家村的老村長很清楚, 說是兩個系統, 其實是邏輯上的一種劃分方式, 在物理上兩個系統還是部署在一個虛擬機中。 那個時候用戶量少, 數據量也不大, 村民們只要使用這一個Java 虛擬機和數據庫就足夠了。

訂單和庫存系統運轉一直很好, 用戶的訂單來了, 會在訂單系統中存下來, 然后通知庫存系統發貨。

你要問怎么通知? 老村長會告訴你說: 其實簡單的很, 就是普通Java 方法的直接調用, 調用庫存系統某個類的某個方法而已。 由于在同一個虛擬機之內, 效率極高 。

轉眼間5年過去了, 人類變得越來越懶, 越來越喜歡網上購物, 用戶量和數據量暴增, 再加上他們時不時搞個什么秒殺活動, 更是讓張家村變得不堪重負。 為了應付洶涌而來的訂單, 張家村經常徹夜燈火通明, 全村人三班倒才能勉強應付。

老村長向鎮上報告了很多次都沒有回音, 要不是帝國的性能監控部門發現了這個異常,還不知道要被瞞到什么時候。

還好,欽差王大人來了, 變革要開始了。

拆分

王大人經驗豐富, 目光如炬, 一眼就看出了問題, 立刻下達了***道命令: 拆分 ! 把訂單系統和庫存系統分開!

老村長說: “那拆開了以后,我們村還是放不下啊”

王大人道: “訂單系統還是留在張家村, 庫存系統挪到李家莊去”

老村長暗自思忖,訂單系統是直接面向用戶的,很重要, 張家村一定要保住, 至于庫存系統,主要是后臺操作,挪走就挪走吧, 于是就答應了。

拆分不是那么容易的, 訂單和庫存耦合的比較緊密, 現在要把庫存系統搬到李家莊的Java虛擬機和數據庫去,免不了一番劇烈的折騰。

在王大人的指導下, 原先那些直接的Java 方法調用,也被改成了Web 服務 -- 張家村和李家莊雖然距離較遠 , 還是有網絡相通的。

現在用戶下了訂單以后, 先在張家村保存, 然后由張家村調用李家莊的Web服務來通知庫存系統。

數據庫自然也做了拆分, 老的庫存數據被導出來, 再導入到李家莊的新數據庫中 。

不管過程是多么艱難, 兩個系統還是分了家,李家莊喜氣洋洋、敲鑼打鼓的迎接了庫存系統的部署, 開始了試運營。

新問題

由于只需要處理訂單, 張家村的負載一下子降了下來, 恢復了正常的作息。

可是好景不長,張家村很快發現李家莊對新系統根本不上心, 派了一個酒鬼小李去負責操作庫存Web服務, 小李喝醉了啥都忘了, Web服務經常用不了。

這還不算,李家莊是嚴格的日出而作, 日落而息, 張家村正在繁忙的處理訂單的時候, 李家莊已經把系統關了,睡覺去了。

這可苦了張家村的小張,用戶提交了訂單, 去調用Web服務通知庫存發貨, 可是Web服務經常不響應, 小張沒有辦法, 只好反復重試、等待一段時間后再試,導致一個訂單很長時間才能完成, 用戶體驗極差, 大家怨聲載道。

小張向李家莊投訴了很多次都不管用,沒人搭理,跨村莊協作可真是難啊!

小張活干的不好,工分減少, 再這么下去,月底分糧的時候又要餓肚子了,小張想起來了自己經歷過的《Java帝國之撥云見日識回調 》, 心里再次哀嘆: 為什么受傷的總是我?

晚上到家,小張苦思憫想: 原來訂單系統和庫存系統都在一個虛擬機中, 處理起來很方便, 但是現在是個遠程的Web服務, 酒鬼小李不給我返回結果, 我就沒法結束, 這是典型的同步操作, 能不能改成異步的呢?

我把一個訂單包裹發給小李, 他什么時候處理我就不用管了, 這樣我這邊的效率就會大大的提高! 可是現在的Web服務并不支持這種方式, 我怎么才能把包裹發過去呢?

消息隊列

小張徹夜未眠, 第二天一大早就去請教老村長。

村長說: “你能想到這一層,非常不錯! 近來我也一直在考慮這個問題啊, 在大型的分布式系統中,怎么做異步通信是個大問題, 我想到了一個叫消息隊列的東西”

“消息隊列? 沒有聽說過”

“就拿你遇到的情況來說吧, 我們開發一個消息隊列,名稱我都想好了,就叫ZhangMQ(Zhang Message Queue), 把它部署在我們張家村和李家莊之間, 我們村產生的訂單, 你只要負責把訂單消息寫到這個隊列里就完事大吉了。 ”

“奧,李家莊的酒鬼小李醒了,就讓他從這個消息隊列中讀取消息,進行處理,對吧”

“沒錯,這不就變成異步的了? 酒鬼小李不處理, 那就是他們的責任了”

"那訂單消息的格式需要和李家莊商量好, 另外次序也不能亂掉, 還有, 要是斷電了或者重啟了,消息隊列中的訂單消息也不能丟失 " 小張想的很深入

“沒錯,這些都是我們的ZhangMQ要考慮的,要實現持久化, 把訂單消息存到硬盤上”

“這真是不錯“ 小張躍躍欲試 ”村長,我想去開發這個ZhangMQ, 一定要讓我參加啊“

”沒問題, 不過我當前最重要的是說服李家莊, 讓他們來采用我們的消息隊列“

經過據理力爭和艱難協商,李家莊終于同意了消息隊列的方案,畢竟對他們也沒啥損失, 也不用聽張家村沒完沒了的投訴了,只需要改一點點代碼,從消息隊列中讀取訂單即可。

小張和其他人在家里埋頭開發ZhangMQ, 半年后,ZhangMQ正式上線, 徹底解決了異步通信的問題。

前欽差王大人對張家村做了回訪,發現了消息隊列,贊不絕口,回去后就發來了褒獎令,還下令在帝國推廣, ZhangMQ一下子出名了!

【本文為51CTO專欄作者“劉欣”的原創稿件,轉載請通過作者微信公眾號coderising獲取授權】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2018-03-29 15:20:05

JavaJaasJdbc

2017-08-16 15:11:29

JavaJDBCJTA

2017-10-12 14:56:11

2017-02-28 08:57:41

JavaJMS隊列

2010-01-21 11:23:49

Linux多線程同步消息隊列

2017-10-11 15:08:28

消息隊列常見

2017-11-22 14:31:24

華為云

2017-11-14 14:41:11

Java泛型IO

2021-02-19 09:19:11

消息隊列場景

2009-11-09 11:15:06

WCF消息隊列

2010-04-13 17:00:43

Unix消息隊列

2010-04-21 12:12:56

Unix 消息隊列

2012-09-24 11:48:05

IBMdw

2025-04-09 08:20:00

RocketMQ消息隊列開發

2009-12-07 09:23:05

2010-04-21 12:39:48

Unix 消息隊列

2022-04-12 11:15:31

Redis消息隊列數據庫

2019-09-23 10:47:52

Kafka架構微服務

2019-05-29 14:49:02

KafkaRocketMQRabbitMQ

2010-10-12 11:02:42

職場
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99re国产视频 | 国产超碰人人爽人人做人人爱 | 伊人狠狠| 国产日韩欧美精品 | 一区二区国产精品 | 噜久寡妇噜噜久久寡妇 | 国产精品久久久99 | 91在线精品一区二区 | 婷婷成人在线 | 日韩久草| 亚洲激情在线视频 | 日本不卡免费新一二三区 | 国产美女视频黄a视频免费 国产精品福利视频 | 久久综合一区 | 国产在线视频在线观看 | 欧美成人激情 | 日韩久久综合网 | 作爱视频免费看 | av一区二区三区四区 | 狠狠婷婷综合久久久久久妖精 | 亚洲国产欧美在线 | 精品成人佐山爱一区二区 | 91在线视频免费观看 | 天堂一区 | 99久久亚洲 | www狠狠干 | 欧美三级视频在线观看 | 日本亚洲一区 | 国产美女自拍视频 | 成人av片在线观看 | 看片91| 日韩精品不卡 | 国产精品一区二区视频 | 人人操日日干 | 久热免费在线 | 天天干狠狠操 | www视频在线观看 | 鸡毛片 | 日本一本在线 | 欧美久久久久久久久 | 亚洲精品视频免费 |