純講hystrix,脫離實際的業(yè)務背景卑雁,聽起來有點枯燥募书,大家學完了hystrix以后,可能沒法完全感受到技術是如何融入我們的項目中的
大背景:電商網站测蹲,首頁莹捡,商品詳情頁,搜索結果頁扣甲,廣告頁篮赢,促銷活動,購物車琉挖,訂單系統(tǒng)启泣,庫存系統(tǒng),物流系統(tǒng)
小背景:商品詳情頁示辈,如何用最快的結果將商品數據填充到一個頁面中寥茫,然后將頁面顯示出來
分布式系統(tǒng):商品詳情頁,緩存服務矾麻,+底層源數據服務纱耻,商品信息服務,店鋪信息服務射富,廣告信息服務膝迎,推薦信息服務,綜合起來組成一個分布式的系統(tǒng)
1胰耗、電商網站的商品詳情頁系統(tǒng)架構
(1)小型電商網站的商品詳情頁系統(tǒng)架構(不是我們要講解的)
(2)大型電商網站的商品詳情頁系統(tǒng)架構
(3)頁面模板
舉個例子
將數據動態(tài)填充/渲染到一個html模板中,是什么意思呢芒涡?
<html>
<title>#{name}的頁面</title>
<body>
商品的價格是:#{price}
商品的介紹:#{description}
</body>
</html>
上面這個就可以認為是一個頁面模板柴灯,里面的很多內容是不確定的卖漫,#{name},#{price}赠群,#{description}羊始,這都是一些模板腳本,不確定里面的值是什么查描?
將數據填充/渲染到html模板中突委,是什么意思呢?
{
"name": "iphone7 plus(玫瑰金+32G)",
"price": 5599.50
"description": "這個手機特別好用冬三。匀油。。勾笆。敌蚜。。"
}
<html>
<title>iphone7 plus(玫瑰金+32G)的頁面</title>
<body>
商品的價格是:5599.50
商品的介紹:這個手機特別好用窝爪。弛车。。蒲每。纷跛。。
</body>
</html>
上面這個就是一份填充好數據的一個html頁面
2邀杏、緩存服務
緩存服務忽舟,訂閱一個MQ的消息變更,如果有消息變更的話淮阐,那么就會發(fā)送一個網絡請求叮阅,調用一個底層的對應的源數據服務的接口,去獲取變更后的數據
將獲取到的變更后的數據填充到分布式的redis緩存中去
高可用這一塊兒泣特,最可能出現說可用性不高的情況浩姥,是什么呢?就是說状您,在接收到消息之后勒叠,可能在調用各種底層依賴服務的接口時,會遇到各種不穩(wěn)定的情況
比如底層服務的接口調用超時膏孟,200ms眯分,2s都沒有返回; 底層服務的接口調用失敗,比如說卡了500ms之后柒桑,返回一個報錯
在分布式系統(tǒng)中弊决,對于這種大量的底層依賴服務的調用,就可能會出現各種可用性的問題,一旦沒有處理好的話
可能就會導致緩存服務自己本身會掛掉飘诗,或者故障掉与倡,就會導致什么呢?不可以對外提供服務昆稿,嚴重情況下纺座,甚至會導致說整個商品詳情頁顯示不出來
緩存服務接收到變更消息后,去調用各個底層依賴服務時的高可用架構的實現
我們剛才講解的整套大型電商網站的商品詳情頁的緩存架構溉潭,完整的那個流程净响,《億級流量電商詳情頁系統(tǒng)的大型高并發(fā)與高可用緩存架構實戰(zhàn)》
3、框架結構
圍繞著緩存服務去拉取各種底層的源數據服務的數據喳瓣,調用其接口時馋贤,可能出現的系統(tǒng)不可用的問題
從簡
spring boot,微服務的非撤蛲郑快速掸掸,非常好用的技術框架,脫胎于spring蹭秋,具體的東西就不講解扰付,直接帶著大家上手搭建一個spring boot的框架
2個服務,緩存服務仁讨,商品服務羽莺,緩存服務依賴于商品服務
模擬各種商品服務可能接口調用時出現的各種問題,導致系統(tǒng)不可用的場景洞豁,然后用hystrix完整的各種技術點全部貫穿在里面
解決了一大堆設計業(yè)務背景下的系統(tǒng)不可用問題盐固,hystrix整個技術體系,知識體系丈挟,也就講解完了
消息隊列刁卜,redis,咱們都不搞了
分布式系統(tǒng)曙咽,微服務蛔趴,dubbo,不用dubbo例朱,目前比較明顯的一個趨勢是孝情,行業(yè)里,未來主要還是spring boot洒嗤,spring cloud箫荡,主流的開源技術,去構建微服務的分布式系統(tǒng)
基于dubbo渔隶,官方很久之前就停止更新了羔挡,支持也不是太好
spring boot + http client + hystrix