隨著**運營時間的增長,使用者量、資料量和訪問量都在不斷地增長,於是大的訪問量、大的儲存量和大的資料量,大的負載和網路環境快速部署都會出現。於是**運營問題可以總結為一下四點: 1.
大的訪問量 2.
大的儲存量 3.
訪問速度 4.
伺服器監控 5.
網路環境的快速部署
解決方案:負載均衡和冗餘技術。
負載均衡:讓網路伺服器的壓力均衡到不同的裝置。
負載均衡技術方案:
cisco
乙太網通道,
windows
的nlb
技術,linux
的lvs
技術和f5
等負載均衡器
linux
的lvs
方案:
冗餘技術方案:
cisco hsrp
熱備份路由,
windows
集群技術,
linux的ha
技術,ibm
的aix
技術。
冗餘技術:避免出現單點故障,實現故障切換,由此引申出集群技術。
集群就是指將多個伺服器集中起來一起同時的進行同一種服務,在客戶看來只有乙個伺服器工作。
集群的特點:只有一台伺服器提供服務,其他的伺服器處於休眠狀態,如果這台伺服器出現問題,其他的伺服器將被啟用,保證服務的不間斷性。只有負載均衡和冗餘技術結合在一起,才能真正達到超級計算機功能。
主流資料庫型別:
mysql
(中小型資料庫),
oracle
(甲骨文公司),
db2(
ibm大型資料庫),
nosql
(非關係型資料庫,目前很火)。
對於大資料儲存我們一般可以使用主從複製和分區分表技術來解決。
mysql
主從複製原理圖:
binary log:
記錄資料的增刪改日誌,不記錄查詢服務。通過日誌進行資料的同步。
mysql
還有另外一種擴充套件方式,
mysql
讀取小表的速度更快。於是就引入了分表的概念,分表分為垂直分表和水平分表,一般遇到最多的還是水平分表,
mysql5.1
引進了分區分表技術。分區分表是不改變表名,將表切成不同分割槽。
下面引入一種非關係型資料
mongodb
,最近很火。
mongodb
是乙個機遇分布式檔案儲存的資料庫,有
c++語言編寫,是乙個介於關聯式資料庫和非關係資料之間的產品。它最大的特點是支援的查詢語言非常強大,幾乎可以完成類似關係資料的絕大部分操作,還支援對資料庫建立索引。
目前主要實現方案:
squid
**快取技術,頁面靜態化快取,
memcache
和sphinx
搜尋加速。
squid
可以實現快取**和資料的動靜分離,將靜態資料儲存起來,只有需要請求伺服器的檔案才到真正的伺服器上去讀取,大大提高訪問速度。
頁面靜態化:主要是通過模版實現,如
thinkphp
,brophp
,smarty
模版等。
memcache
:是乙個高效能的分布式的記憶體物件快取系統,通過在記憶體裡維護乙個統一巨大的
hash
缺點:遇到斷電,伺服器宕機,會造成資料的丟失。尤其是對於**資料重要性高的**不適合。
sphinx
全文檢索:
sphinx
是乙個機遇
sql的全文檢索引擎,可以結合
mysql
,postgresql
做全文檢索,他可以提供比資料本身更專業的搜尋功能,使得應用程式更容易實現專業化的全文檢索。
sphinx
單一索引,最大可以包含
1億條記錄,全文檢索速度
1000
萬條只需
3-4分鐘,建立
1000
萬條索引在
50分鐘完成。
1.4服務監控:
apache
服務監控,
mysql
服務監控,磁碟空間監控,流量監控。
警報:郵件警報,
postfix
發郵件系統,
sendmail
發郵件系統和
dovecot
收郵件系統。電子郵件發是由
smtp(25
埠),收郵件是由
pop3
協議(110
埠)完成的。
網路環境的快速部署變得越來越容易,在快速部署中如果可以用主機管理面板,這樣對於主機的管理變得越來越方便。
windows
可以使用
plesk
面板,linux
可以使用
cpanel
面板。
apache
壓力測試軟體
ab,是由
軟體提供,可能要建立很多檔案然後刪除。
mysql
壓力測試:
mysql5.1.4
開始帶有乙個壓力測試工具
mysqlslap
,通過模擬多個併發客戶端訪問
mysql
來進行測試。
伺服器架構之效能擴充套件 第一章(2)
隨著 運營時間的增長,使用者量 資料量和訪問量都在不斷地增長,於是大的訪問量 大的儲存量和大的資料量,大的負載和網路環境快速部署都會出現。於是 運營問題可以總結為一下四點 1.大的訪問量 2.大的儲存量 3.訪問速度 4.伺服器監控 5.網路環境的快速部署 解決方案 負載均衡和冗餘技術。負載均衡 讓...
第一章 擴充套件 條件變數
一 什麼是條件變數 與互斥鎖不同,條件變數是用來等待而不是用來上鎖的。條件變數用來自動阻塞乙個執行緒,直到某特殊情況發生為止。通常條件變數和互斥鎖同時使用。條件變數使我們可以睡眠等待某種條件出現。條件變數是利用執行緒間共享的全域性變數進行同步的一種機制,主要包括兩個動作 乙個執行緒等待 條件變數的條...
第一章 擴充套件 條件變數
一 什麼是條件變數 與互斥鎖不同,條件變數是用來等待而不是用來上鎖的。條件變數用來自動阻塞乙個執行緒,直到某特殊情況發生為止。通常條件變數和互斥鎖同時使用。條件變數使我們可以睡眠等待某種條件出現。條件變數是利用執行緒間共享的全域性變數進行同步的一種機制,主要包括兩個動作 乙個執行緒等待 條件變數的條...