前言
本文介紹架構的目的是什么,架構是解決什么問題,
目的
架構的目的不是為了架構而架構,不是別人做了所以自己要做,不是為了技術自嗨,,,
架構的真正目的在于解決軟體系統復雜度帶來的問題,這條準則可以讓新手架構心里有數,不會一頭霧水,讓老手架構有的放矢,不要貪大求全,
有了指導思想,讓我們來舉個例子,看如何將“解決軟體系統復雜度帶來的問題”應用到實踐,
簡單復雜度分析案例
假設我們需要設計一個大學的學生管理系統,其基本功能包括登錄、注冊、成績管理、課程管理等,當我們對這樣一個系統進行架構設計的時候,首先應識別其復雜度到底體現在哪里,從下面幾個角度全方位考慮,
1、性能
學校大約1 ~ 2萬人,平均每個學生訪問系統不超過一次,所以性能上不復雜,存盤用MySQL,服務器用Nginx,快取是不需要的,
2、擴展性
學校系統功能穩定,可擴展的空間并不大,因此可擴展性也不復雜,
3、可用性
學校管理系統沒有太高的可用性要求,即使服務器發生宕機1 ~ 2個小時也是沒有問題的,不過,資料存盤可靠性上有要求,不能容忍丟失大量資料,所以要考慮多種例外情況,比如機器故障,機房故障等,對于機器故障,可以考慮MySQL同機房主備;對于機房故障,可以做MySQL跨機房備份,
4、安全性
學生的資訊還是有一定的隱私性的,但沒有不要求像銀行、金融那樣的高安全性,只需要采用密碼登錄、HTTPS通信、資料庫訪問權限控制等方案就行,
5、成本
由于系統簡單,訪問量和存盤資料量都不大,所以基本幾臺服務器就可以搞定,
復雜度來源
架構設計中,常見的幾個考慮點:
1、性能
(1)訪問量或并發量,確認日平均訪問量,并判斷是否存在高并發,短時間大流量(高峰期)情況,高峰期流量多少,
(3)回應速率,是否有低延遲要求,延遲要求是秒級還是分鐘級,
2、可用性
(1)服務可用,可以容忍服務器宕機多長時間,1分鐘還是1小時,
(2)存盤可用,可以容忍多少資料丟失,一部分還是大量,
3、擴展性
(1)功能擴展,是否方便支持新的功能加入,
(2)水平或垂直擴展,是否支持增加相同功能的服務器(水平)或增加提供不同功能的服務器(垂直),
4、安全性
看業務場景提供多高級別的安全性,
5、成本
在可行的方案中選擇成本較低的,當然,如果資金足夠且業務重要,可以選擇成本高些的更可靠的方案,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/298863.html
標籤:其他
上一篇:架構的目的
