關於系統設計的一些想法

        這裏是對我以往設計的一個小的總結。主要涉及的是平時設計的時候,遇到的一些問題,以及如何去解決他的一些思路。

        首先講下,在設計系統的時候需要考慮的一些因數。

     

        第一:需求的完成度。

        一個再NB的系統,如果沒有人用,那就是一個SB系統,這個是每個做系統的都知道的一個道理。所以對需求的滿足度是排在第一位的。

     

      第二:系統模塊的關聯性的一些考慮。

       在一個系統裏面,肯定會涉及到關聯性的問題,而這個問題也是困擾設計的一個很重要的東西。在不同的情況下,需要使用不同的處理方式。我們可以舉一個具體的例子:

       產品模塊和訂單模塊,無可厚非。訂單模塊依賴於產品模塊,訂單都是根據產品來的,但是當你的產品發生變化時,訂單卻不能發生變化。爲什麼?很淺顯的道理,前一天我買了一個蘋果,第二天我再去看我的訂單信息居然變成了老鼠藥。。。同時對以往的信息也會造成不可能追述的問題。在這種設計的時候,要充分使用冗餘數據來進行處理。這種情況要最大的減少數據的關聯性。

      用戶和菜單模塊,用戶擁有某些菜單的使用權限。如果菜單的名稱發生了變化,但是你的關聯的菜單名稱卻沒有發生變化,這樣也是不太合理的。在這種情況肯定使用標準的三範式來進行處理會更好。在這裏就需要更好的關聯性。

      

      第三:系統的公用性考慮。

      一個模塊的公用性,是考慮模塊所處架構的位置。這個說起來比較空洞,但是舉一個很簡單的例子。

     用戶登錄模塊,如果單從一個系統考慮,一個系統一個登錄是比較好,突然發現有20個系統,每個系統還得要不同的賬戶,每次切換系統都要繼續重新登錄,然後。。。。

     當遇到這種情況的時候,明顯應該把登錄模塊單獨成一個新的系統(單點登錄/Ucenter)。設計系統很大的一個原則就是要求功能最好單一性,就好像術業有專攻一樣。每個系統負責更加單一的功能,在後期維護也會變得更加簡單。例如:郵件發送系統、統計系統。。。

    

      第四:效率考慮。

      一個系統反應的快慢決定了客戶滿意度的一個很重要的因數。我操作一個功能需要在哪裏等半天才能進行第二個操作。當然這個說法有點誇張,但是往往用戶會很討厭等待,漫長的等待也是資源的一種浪費。

     而系統效率加快設計的方面就比較多: 從數據庫到界面都有。這個大家去看相關的博客文章。例如:表分區,數據分表,頁面靜態化,緩存的使用,索引的使用,文件系統的使用。。。


     第五:開發週期。

     開發的週期和效率往往是兩個極端,爲了運行效率的考慮一般都會加長開發週期。


     第六:可擴展性。

     有這麼一句話大家應該都能理解:“人物遠慮,必有近憂!”。在設計系統的時候,充分考慮後期可能發展的方向,並預留下來,在後期的開發和優化會更加的簡單和快捷。



今天大概就講這些東西,下次講一些具體的項目,所涉及到的一些系統設計。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章