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