系統總體架構:公司在US東海岸和西海岸均有一個服務器集羣,每一個集羣大概有20多臺高性能服務器。
1)當客戶訪問時,有一個統一的第三方硬件分配系統,將訪問分別導向最近的集羣之上進行訪問。畢竟光纖javascript
中的信號也是須要時間進行傳輸的,並且如此也是能夠對總體系統的安全性上進行備份並在訪問壓力上進行流css
量分流。
2)當導到最近的集羣后,又有一第三方負載均衡系統將訪問分別導向到集羣中不一樣的服務器上進行訪問。
同時服務器也會進行更進一步的細分:(1)Web瀏覽服務器;(2)訂單服務器;(3)SQL Server服務器
其中(1)和(2)的大體分別設置爲4:1,由於在天天的訪問客戶中,大概只有1/4或1/5的客戶下訂單。
3)客戶在網站上下訂單後,由於每時每刻的訂單量都是成千上萬的,因此咱們的訂單都是採用異步方法進html
行傳輸以及寫入。首先是經過Web Service將接收到的訂單寫入到MSMQ(微軟自帶的消息隊列)中,而後經過java
WindowsService將MSMQ中的信息寫入到SQL Server數據庫中。
4)將SQLServer中的數據根據必定的條件在合適的時候所有寫入到一個統一的數據庫中。算法
從數據庫中讀取信息顯示到網站頁面上的步驟和優化方法:
1)將數據寫入的數據庫(A數據庫)映射一份到其它服務器上的的數據庫(B數據庫)中,B數據庫中的字段數據庫
通常不進行讀寫的操做,而是隻進行讀取操做。在B數據庫中對須要經常讀取的數據表進行索引設置,以加快查瀏覽器
詢時的速度。
2)每隔必定的時間(本網站通常是半小時),後臺跑一個應用程序,將網站上的暢銷的產品及其特性(包含安全
其具體性能參數、庫存數量等)生成一個XML文件,並存儲在內存中,以即可以更快的向網站顯示信息。
3)網站上的搜索功能使用第三方搜索軟件,如Endeca,這樣能夠更快的從內存中查詢到須要的數據(因本服務器
網站產品極多,使用直接鏈接數據庫進行搜索,會極大的影響帶寬和速度)。
網站上要用到的一些安全設置:
1)WebService暴露在網站上時,最好使用非對稱的加密算法,這樣就算黑客知道了客戶端的密鑰,也是無網絡
法創建鏈接的,由於服務端每一次的密鑰都是不一樣的。
2)頁面上的URL連接進行加密顯示,如不顯示asp、aspx、jsp等,而是將其後綴名字進行必定的轉換再顯示
給客戶。而且當使用分頁或搜索時,URL中不要顯示出頁面序號或搜索的字段號,而是通過必定的算法轉換後,
將通過加密的URL顯示再瀏覽器中。這樣能夠保證咱們不向客戶端顯示出數據庫中表的字段名字,由於這樣是不
安全的。
3)Web服務器或數據庫服務器的用戶名和密碼要常常進行更改。
4)服務器上的一些端口號要進行關閉,或進行受權開通。並要常常升級系統補丁和殺毒軟件的病毒庫。
5)數據庫連接字符串不要明碼寫到Web.config中,而顯示通過假裝的字符串(例如:userid=[USERID],
password=[password]),同時將用戶名和密碼放入一個自定義的文件中,放到d、e等磁盤中都可。由於在磁
盤中能夠進一步的限制由哪些用戶能夠打開此文件。在此文件中顯示的也是通過進一步加密後的用戶名和密碼
,總之,是不管在任何地方都不要顯示明碼的用戶名和密碼,而是在系統運行時,經過解碼來獲得正確的數據
庫連接字符串,雖然在性能上有些損失,可是對數據庫中的數據倒是更加安全。
6)數據庫中要儘可能避免使用Admin級別的用戶名,而是針對不一樣的數據庫使用不一樣的用戶名和密碼(最好針
對一個實例中的各個不一樣的數據庫分別分配用戶名和密碼,也能夠對每一個實例中的不一樣的數據庫針對不一樣的
team分別分配用戶名和密碼)。同時將其角色的級別要降到最低,恰好能夠操做數數據庫中的表便可。
網站上要要用到的一些小常識:
1)對於加載javascript和css文件,須要在HTML的頭文件中進行加載。由於Web的展現是對html進行逐行掃
描展現的,若是頁面載入的慢一些的話,而javascript和css文件在文件最後加載,那麼可能用戶看到的是沒有
渲染的頁面,而最後加載後,頁面又從新刷新而從新應用這些設置。這樣就浪費了系統的頁面響應時間。對於
大流量的網站來講是影響很是大的。
2)儘可能少用一些服務器端控件,而多使用Html控件,由於微軟對於服務器控件多有一些Viewstate,這樣可
能致使網絡流量的增長。
3)若是對於一些txt或固定的文本型頁面,咱們能夠運用IIS中的Gzip功能,將其進行壓縮,以減小網絡間的
數據流量(圖片對此沒法進行壓縮)。
4)對於網站上使用最多的圖片來講,由於其是最浪費網絡數據流量的,因此咱們在其數據量很是大時,咱們
借用第三方軟件(其在全世界各處均有大型服務器集羣,能夠提供各類服務)。咱們將咱們上傳的圖片傳到我
們的圖片服務器上後,第三方的服務器上每隔幾秒就會從咱們的服務器上拉最新的圖片數據,並將其存儲到世
界各地的服務器集羣中,由於其帶寬是定製的,因此網站訪問圖片時,能夠快速下載下來。比本身從自身的圖
片服務器上下載要省事省時(並且不爽其下載速度時,還能夠罵罵他們,呵呵)。