其實我對服務器編程方面,實踐的部分並很少。最熟悉的部分有網絡通信和協議部分(只是熟悉)。
但對服務器編程和設計相關知識的瞭解,是很是感興趣的。看過許多高手寫的BLOG,同時本身也有了 一些體會。下面隨便寫寫,一方面記錄本身的想法,一方面跟你們分享下:
好的服務器設計應該是什麼樣的?
這個問題猶如對OOD來講有相應的基本原則同樣,好的服務器設計也是有一些原則(方向)是須要考慮的。
我認爲,不外乎如下幾點:
1. 安全性
針對問題:若是有人故意入侵你的系統怎麼辦?
2. 穩定性
針對問題:你的系統能正常的運行多長時間不會崩潰?
3. 高併發
針對問題:當大規模的請求訪問你的系統時,會出現什麼現象?
4. 高效率 (有點相似高併發,但側重點在於單獨一個請求的數據吞吐量)
針對問題:對有大量數據的請求,能有多快的處理?
這裏的每個點展開,都是一個很複雜的話題。這裏我拿高併發來具體說明下。
對於設計一個高性能併發的服務器而言,在於能同時響應多少的併發鏈接數。目前的解決方案有異步/多進程等方法提高併發量。而且,在併發量提高的同時,也要注意觀察服務器的穩定性,性能等方面的問題。因此說好的服務器設計,應該有一個綜合的設計考量。不一樣的應用需求,對於設計上的要求是不同的,沒有哪種通用的服務器設計能解決全部的問題。
在這裏隨帶說起下,服務器的
性能優化方面的問題。 服務器的資源是有限的,這些資源包括CPU,內存,I/O,DB的處理能力。因此,它所承載的最大負荷必然是有限的。咱們的任務,就是經過設計去最大化利用當前的服務器資源,提高處理數據的能力。在優化之前,最好創建一套完整的監控體系,對影響服務器性能的各個指標進行仔細的觀察,找出性能瓶頸,這樣才能作出最有效的優化(我說是最有效,而不是說你作的其餘地方的優化是無效的)。 這個是這2天看了相關資料後,本人的一些體會,但願能跟各位多多交流!