雙 11 架構設計
雙11購物節,會帶來十倍級別流量提升,在技術上有很大挑戰,應對挑戰過程中能給我們帶來更多技術提升,這種提升需要基於對問題不斷深入理解,以及通過技術架構設計落地實現來完成。
這次備戰花費了團隊小夥伴們很多時間精力,每個人都應該詳細總結下,總結過程能讓我們有更多收穫,不然更多是付出了很多辛苦,而沒有收穫,那會是很大浪費,也對機會是一種浪費。再有就是哪些將那些做的不好的,需要技術手段來提升完善的地方梳理出來。一個重要事情是怎樣減少這種花費很多人力方式,能不能搞成自動化,或者通過架構優化來解決效能以及錯誤等問題。用技術手段而不是堆人力方式。
覆盤儲存讀取,讀取本身有比較多監控,遇到問題有幾類:
1、通用資料讀取熱點,資料熱點會導致redis叢集效能下降,這種需要定時去讀取來解決。
2、這次備戰時遇到新問題,刷子帶來熱點問題,可以採取快取來解決。就是服務記憶體快取來擋住刷子使用者,避免redis產生熱點。
3、連線數問題,連線過多會導致連線取不到,a、採取機房分離策略,廊房服務讀廊房叢集,馬駒橋讀馬駒橋機房,減少連線。b、叢集規模減小,資料存的少了,讀它的就少了,讀的少了,redis客戶端客戶端減少從而減少連線。c、連線問題通過業務拆分方式解決,單個業務單個叢集,叢集規模變小,業務之間影響變小,共享叢集一個業務導致叢集不穩定,其他叢集也不穩定。c、小叢集業務叢集問題不大,還有偏好這種通用資料,讀的業務很多,就需要一主多從來解決。
覆盤遇到問題,對於儲存讀取前邊做了很多工作,讀取方面遇到問題減少了。最近又遇到儲存增長問題,有同學設計了一套監控體系,對儲存每個任務進行監控,監控後可以設定監控指標,達到指標後進行報警。挺好一種設計,根讀取類似都是採取定量方式,清晰定位儲存量問題,後續擴容還是構建新的叢集就是水到渠成的事。
電商系統穩定關係著核心使用者體驗,保證穩定方式需要減少外部依賴,所有外部資源都可能會導致問題,減少依賴就能減少出問題的風險。另一條重要原則是後續備案,很重要一件事是要有備選方案出了問題能夠有備選供選擇。
降級、限流、限速、熔斷等都是一種備案。
1、降級是通過降掉非核心流程,保證核心流程穩定高效。或者解決0點流量來臨時,儲存不穩定,網路不穩定後的處理方式,直接將邏輯降級,不使用。
2、限流,單個服務單個容器能夠處理的量是有限的,單機壓出上限後,增加限流google guava包有相應方法,直接用即可。
3、熔斷,服務直接返回狀態給客戶端,客戶端不再請求服務,從而保護服務,此時服務不是全的,但是不影響使用者體驗。
再有就是服務出現問題時,要第一時間降級操作,不要想著去解決問題,因為解決問題會耽誤時間,影響使用者體驗,需要後續去定位問題,這是很重要一點,教過學費的。
架構設計,監控是一種重要架構哲學,對於系統優化一個前提,監控本身也能對整個系統所處狀態進行呈現,作為我們的決策依據。
花費人力去盯的地方,都應該想一下怎樣通過架構以及設計來解決,更多自動化去做,減少人力,用技術方式解決問題,這應該是我們應當追求的。
備案也是一種重要設計哲學,做到有備無患,不能只能看著系統崩潰而束手無策。事情一定要進行總結,才能在這件事中獲得更多資訊,不然更多是經過,事情要想辦法去把它做好,是將來做任何事情一種很重要方式、方法。
解決技術問題,應該通過好的策略好的架構來實現。解決問題過程中我們獲得技術提升。