淺談軟件架構(一) 編程
這個世界上,被人們創造出來的軟件架構大概已經有幾百種之多了。固然,它們所處的層次,以及應用範圍是不一樣的。本文討論的是,工做在協議頂層——即應用層,且是機器間聯網工做的軟件架構。(因爲內容榮雜,本文將分多個期次介紹,請讀者關注後續博文) 瀏覽器
開篇 安全
行文將討論的軟件架構爲如下7類: 服務器
1. C/S 網絡
2. B/S 多線程
3. Cluster (HA) 架構
4. Cloud 併發
5. Distributed 負載均衡
6. APNS-like 模塊化
7. P2P
一,C/S架構。
這個詞彙可謂老生常談了。自高級語言編程在網絡應用中一出現就隨之誕生了。本文做者也在別的博文中討論過,請讀者參考另外一篇博文《CS架構與多進程多線程》。(此處附圖一張)
二,B/S架構。
現在的互聯網世界,幾乎被B/S架構壟斷。諸如博客,社交,電商等等都基於B/S搭建。它存在與世界已經三十多年了,從上世紀九十年代開始流行至今,且應用增加速度長期處於暴增狀態。就是現在的手機客戶端也大可能是B/S的功能複製品或是http協議的封裝體。能夠這麼說,B/S就是人們平常離不開的互聯網的核心。
接下來,咱們從發展歷史,以及應用兩個方面來敘雖然說B/S的傳奇故事。
1.發展歷史
衆所周知,B/S架構指的是瀏覽器(Browser)/服務器(Server)的工做模型。
說到B/S的歷史,首先要來談談瀏覽器。這要追溯到20世紀80年代,互聯網之父TimBerners-Lee早期就重點研究Unix平臺的瀏覽器,固然與今天桌面電腦上的瀏覽器儼然不是一個概念(由於Unix用於服務器,並不善於桌面效果展現)。但那就是早期的瀏覽器,因爲Unix並不是家用電腦操做系統,因此並無被大衆所熟知。後來,網景通信公司聯合創始人MarcAndreessen做爲合做開發人開發出了第一款流行的桌面瀏覽器——Netscape 。該瀏覽器的1.0版本於1994年12月15日發佈。在微軟捆綁瀏覽器IE出現以前,前者曾經佔據瀏覽器市場90%份額。Netscape讓桌面瀏覽器走向了流行,也令人們能夠更方便地使用互聯網帶來的福利了。
如上圖所示,B/S工做的模型與C/S相似,只不過客戶端運行的再也不是具備特定功能的客戶端軟件,而是功能具備公通性的瀏覽器。換句話說,只要安裝了瀏覽器,就能夠訪問任何http網站。對於客戶而言,使用起來更爲簡便。同時,瀏覽器能夠顯示文字和圖片,更爲直觀地向用戶展現效果,使得使用友好性大大增強。同時閱讀的視覺官感也很是良好。
能夠說,瀏覽器的發明,帶動了互聯網世界的一次革命。
瀏覽器的優點不言而喻,接下來迎來的就是風起雲涌的開發熱潮,全世界各種瀏覽器遍地開花。其中比較有名的有,微軟IE,Mozilla火狐(firefox),谷歌Chrome,Iceweasel,手機端的UC-Web等等。隨着互聯網技術的發展,以及網站架設和主頁開發語言的進步,互聯網的發展進入了它的黃金時期。
現在,我能夠作個大膽的假設:只要用過互聯網的人,就用過瀏覽器,也就享受過B/S的恩惠了。
2.應用
說到應用,B/S的應用可謂不勝枚舉。仍是舉幾個生活中的例子。大名鼎鼎的社交網站FaceBook,電商法老亞馬遜,全球最大互聯網公司——谷歌等等,無一不是靠着B/S架構在運轉!再看看我神州大地,百度,阿里巴巴,騰訊,新浪,360,京東,蘇寧易購,國美在線,以及各種層出不窮的團購網站。這些企業的一個典型特色是,要使用他們的服務,就得打開瀏覽器。儘管如今他們都推出了手機客戶端,那也只是爲了方便購物而作的一個封裝,其根本技術基礎依然是B/S架構。
能夠這麼說,要讓線上服務變得方便,最優先選的方式即是B/S,由於它有一個戰勝其餘一切的優點——簡單易用。
瀏覽器與HTTP服務端通訊採用的使HTTP協議(固然如今有更安全的HTTPS協議),它的下層採用的是TCP協議。所以它是一個可靠的通訊協議,只要帶寬容許,網絡情況良好,就能保證良好的上網體驗。
服務端,圍繞着HTTP服務器而搭建,接收請求的服務進程就是HTTP服務器,它根據請求做出不一樣的迴應。至於服務端實現的功能,由程序猿使用網頁腳本語言編程,程序代碼做爲腳本方式被HTTP服務器調用。服務器在處理完請求以後將結果代碼返送給瀏覽器,由瀏覽器解釋並顯示結果。也就是說,在這個工做模型中,瀏覽器也承擔必定的工做,減輕了服務器的壓力。如此一來,也能充分利用計算機資源,用戶主機承擔一部分工做,服務器主要做出響應回饋用戶請求結果。也便於開發的模塊化設計,服務器調用腳本,瀏覽器自行解析結果(按照統一協議標準解析),這樣不會由於服務器與客戶端的操做系統平臺不一致而形成請求結果的二義性。
HTTP服務器軟件現在已較爲成熟,如Apache,Nginx等,其穩定性與速度都較爲優良。
另外,在大用戶量高併發應用場景中,單一的服務器已難以知足及時響應。於是會在服務端環境搭建HA和負載均衡。 請讀者參閱相關文章進一步瞭解。
本文待續。其餘軟件架構的說明請參看後續博文。