實例分析當當網的高可用架構之道
大小:0.64 MB 人氣: 2017-10-11 需要積分:1
標簽:高可用架構(1662)
以下為分享整理正文:系統中的非功能性需求
今天我們的主題是當當高可用架構設計之道,高可用并不是功能性的需求,而是傳統的IT當中非功能性需求的一部分。大家可以看到我這里羅列了很多非功能性需求,但是這當中并沒有「高可用」這三個字。
舉一個例子,比如說你買了一臺蘋果手機,無論是作為手機還是電腦,還是MP3,還是專門用來看視頻的,都是功能;那么非功能性呢,比如說大家很崇拜喬布斯,產品設計極致體驗,蘋果手機只有1個鍵,簡單好用,這就是一個非功能性需求。另外還有很多朋友買土豪金的手機,就是為了區分開,因為顏色不一樣。這個顏色也是非功能性需求。
我們簡單介紹幾個非功能性需求。
擴展性,有一些類似的可以抽象成統一模型的東西,如果說做好的話就可以支持擴展。用一個以前的例子,我以前是做電信行業的,比如說有一個需求要在全球通上開一個5塊錢的套餐,接著又要在動感地帶開一個10塊錢的套餐,那么我們就可以做成一個模型,做成一個套餐的產品,品牌是一個屬性,價格也是一個屬性。這樣的話,神州行再來一個50塊錢的套餐,我們就不需要改什么應用,增加一些配置,定義一些產品屬性就可以了,這就是擴展性。
高效率是說你對現有的資源使用是不是足夠高效。比如說有的人寫的代碼比較爛,一啟動就百分之幾十的CPU使用率,這就不太合理。
可測試,很多開發的同學不當回事,覺得開發好功能邏輯就夠了。但是你做出來的東西是要保證質量的。開個玩笑,如果說測試的妹子很漂亮,你愿意手把手的教她如何來測試功能,但要是妹子走了,來了一個糙爺們還需要你還手把手的教,你就不愿意了。因此必須要有一個測試的完整方法、功能說明、測試用例。
這些非功能性的需求,是整個系統是不是正常穩定、可靠運轉,以及被一個團隊長期沿用下去的一個前提。
而 可用性,涉及到很多方面。比如說伸縮性,是否能夠在業務量增長的前提之下,通過水平擴展可以很容易支撐更多的業務。比如說安全性、可靠性,數據會不會丟失?所以這里面很多的點,最終都是決定了可用性。
那么可用性是什么呢?可用性就是這套系統最終是給用戶用的,是有這些功能的,但是其他方面如果不能保障好,不能N個用戶一直用,那你這個系統就無法體現它的價值。這是非常重要的,很多剛剛工作幾年的,或者是一直在做產品研發的同學,對這方面沒有切身的體會,沒有在大晚上被人打電話說出了什么問題你趕緊來處理一下,沒有這樣切身的痛苦的體會。
「高可用」到底是什么
接下來我們說一下什么是高可用。CAP理論是指在分布式數據的場景來形容三者不可兼得,就是一致性、可用性和分區容忍性。在整個系統層面也可以這么理解,因為多數系統的核心就是數據,數據本身受限于這三個特性只能滿足兩個,不能三個一起滿足,整個系統也是如此。
在互聯網場景里,因為數據量大分區容忍性是必須要支持的。一致性可以稍微容忍一些,但是可用性是一定要保證的。所以最后多數的 互聯網公司多數的業務系統就是犧牲一致性,保證可用性和分區容忍性。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%