沒想到,看《復(fù)聯(lián)4》也能理解Spring Cloud
原創(chuàng)【51CTO.com原創(chuàng)稿件】《復(fù)仇者聯(lián)盟 4》將于 4 月 24 號上映,漫威迷們是不是迫不及待了?我雖然不是漫威迷,沒有看過相關(guān)漫畫,但是電影確實一步都不落。
不過我在想一個問題:假如《復(fù)聯(lián) 4》是一個微服務(wù),那么電影院就是一個應(yīng)用。在這個微服務(wù)如此火爆的前提下,影院如何做好管理呢?
我們以此為背景,一起來趣談 Spring Cloud 的工作原理!想要更加深入了解Spring Cloud 底層原理的網(wǎng)友也可以看之前分享的文章《拜托!面試請不要再問我Spring Cloud底層原理》。
影院開張
老王開了一家影院,剛開始影院規(guī)模很小,只有一個售票員小李。老王將《復(fù)聯(lián) 4》即將上映的廣告打出去之后,來咨詢的人絡(luò)繹不絕。
這下小李不干了,說道:老板,這么多人咨詢已經(jīng)打亂了我的正常工作了,影院這么多電影,我哪記得住它們什么時候上映啊。
老王因此犯了愁,小李又說:老板,我給你引薦一個人吧,他們公司專門做這個業(yè)務(wù)的,他叫 Eureka。
服務(wù)注冊和發(fā)現(xiàn):電影的上映和下架
Eureka 來了之后,首先在影院裝了一個大顯示屏幕。老板告訴 Eureka:我們要準(zhǔn)備上映《復(fù)聯(lián) 4》了。
于是 Eureka 便把《復(fù)聯(lián) 4》上線了。顯示屏幕展示著最近上線的電影。這樣,來電影院看電影的觀眾們就不用在咨詢售票員了。
顯示屏幕如下:
客戶端負(fù)載均衡:觀眾去哪個廳觀看電影?
小李開開心心的工作著,突然 8001 廳的掃地大媽不樂意了......
趙大媽說:小李你咋回事啊,怎么我這個廳的人這么多,8002 廳的人那么少,是要累死我啊。
老板見了說道:哎呀,趙大媽您別著急,您看我這不是幫你招了個人嗎,以后保證劉大媽的工作量和您保持一致。
小伙子:趙大媽您好,我是 Ribbon。
趙大媽:這名字挺洋氣啊,來,你告訴我,你想怎么解決這個問題?
小伙子 Ribbon 回答,這好說,下面幾種方案,您看你想要哪一種呢?
- 隨機法:售票員隨機給用戶發(fā)一張票,這張票可能是 8001 廳的,也可能是 8002 廳的。
- 服務(wù)響應(yīng)最快法:咱們 IMAX 廳工作人員多,服務(wù)又好,又寬敞,盡量往那個廳分配。
- 輪詢法:輪著售賣:8001、8002、8001、8002......
- 哈希法:聽說大媽您覺得情侶在電影院親親我我不舒服,那咱們就按照男女,男的去 8001 廳,女的去 8002 廳。
- 最少連接法:哪個廳人少,就往哪個廳分配。
趙大媽您覺得上面幾個方案您還滿意嗎?“滿意,滿意,哎呀,這個 Ribbon 小伙子真不錯”,趙大媽說道。
于是在 Eureka 和 Ribbon 的合作下,電影院正常運行。
熔斷限流:影院有人鬧事
你們老板呢?賣出去 5000 張票,電影院這么小只能坐 2000 人,剩下的人咋辦?
是啊,退票,退票!隔壁廳也亂起來了,這么吵還讓不讓人看電影了?
這時電影院亂成一團(tuán),無法正常營業(yè)了。老板只好掛出牌子:暫停營業(yè),辦理退票。
Ribbon 跟垂頭喪氣的老板說:老板生意好是好事啊,我認(rèn)識一個朋友或許可以幫你。說曹操,曹操到,王老板,你好,我是 Hystrix。
老王:你好,你好,那請問,你要如何幫助我呢?
- 限流:賣票的時候,要求客戶排好隊伍,不要爭搶。上午的 200 張票已經(jīng)賣完了,大家下午再來吧。
- 熔斷:8001 廳突然著火了,不能售賣和觀看了。對不起:《復(fù)聯(lián) 4》延緩上映,敬請關(guān)注。其他影廳不受影響。
服務(wù)網(wǎng)關(guān):一個檢票員就可以
老王對人事部說:最近咱們又加了 5 個影廳,你在去招 5 個檢票員過來。另外把 8001 的那個檢票員辭了,他竟然私自讓他的好朋友不買票就進(jìn)去看。
人事部:老板,咱們放映廳多了,不能這么干了,我給你介紹一個人,他一個人就可以做好這個事情了。
老王:好,你看著辦吧。
大家好,我是 Zuul,很抱歉因為我的到來,老板將你們都辭退了,這是老板讓我給你們發(fā)的遣散費。來,一人一百塊錢。眾人罵罵咧咧的走了。
新官上任三把火:
- 統(tǒng)一入口:影廳入口設(shè)立檢票處,不管看什么電影都從這個入口進(jìn)。
- 服務(wù)鑒權(quán):您這張票是假票,不能進(jìn)入。
- 服務(wù)路由:您好,《復(fù)聯(lián) 4》左邊 8001 廳,《雷神 3》往前走 8005 廳。
總結(jié)
老板發(fā)言:老王電影院自成立以來,承蒙各位大神的幫助。
- Eureka:負(fù)責(zé)管理電影上下架工作。(服務(wù)注冊和發(fā)現(xiàn))
- Ribbon:負(fù)責(zé)管理電影票的分發(fā)工作 。(服務(wù)負(fù)載均衡)
- Hystrix:負(fù)責(zé)突發(fā)情況的處理和管控。 (服務(wù)熔斷,限流,隔離等)
- Zuul:負(fù)責(zé)影票的查驗和影廳的導(dǎo)航工作。(服務(wù)統(tǒng)一管理,鑒權(quán),路由等)
以上內(nèi)容有很多理解不到位的地方或者比喻不太對的地方,還請諒解。權(quán)當(dāng)一樂。最后祝大家觀影愉快!
【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】