大型可擴展系統(tǒng)架構(gòu)—新浪網(wǎng)動態(tài)應用平臺實踐介紹
童劍先生用深入淺出的語言和生動的實例,向與會者介紹了系統(tǒng)架構(gòu)師在平臺設(shè)計和優(yōu)化上
的關(guān)注重點,分享了10 個方面的架構(gòu)與設(shè)計經(jīng)驗。"高可用、低成本、可擴展",三個簡單
詞匯,概括了架構(gòu)師在設(shè)計時的最高原則所在。
1、系統(tǒng)架構(gòu)
新浪網(wǎng)動態(tài)應用平臺分為內(nèi)外網(wǎng)部分。
外網(wǎng)由4/7 層交互機、前端app 集群、前端cache 集群組成。
內(nèi)網(wǎng)由數(shù)據(jù)庫集群、memcache 集群、存儲集群、開發(fā)環(huán)境、代碼內(nèi)容發(fā)布系統(tǒng)、實時監(jiān)控
系統(tǒng)、統(tǒng)一配置管理系統(tǒng)組成
2、性能和可擴展性
多機房分布體系(廣州、北京);
機房間用專線/VPN;
MYSQL 、VFS 存儲同步;
4、開源使用
新浪使用了LAMP、memcached、squid+cache、heartheat+DRBD、Xen、cfengine、bind
DNS+Mon、HAPROXY 等開源項目。
5、架構(gòu)設(shè)計
(1)借鑒成功經(jīng)驗(Memcached、MingleFS)
(2)使用成熟的軟件
除非別無選擇才去自己開發(fā)代碼,自己開發(fā)代碼也許容易,但長期維護很不容易、深入了解
你所使用的成熟的軟件,用好它!
(3)一定程度的底層封裝和隔離
(4)簡單=高效
不要過于追求完美,夠用就好;循序漸進的開發(fā)過程,分階段達成目標;簡單 ( 結(jié)構(gòu)設(shè)計 +
實現(xiàn)方法 ) = 高效 ( 開發(fā)過程 + 故障排查 );簡單是指:簡單的體系結(jié)構(gòu)、更少的系統(tǒng)單
元、更少的處理流程、更少的代碼編寫。
6、標準化配置
(1)運行環(huán)境配置
(2)資源配置
a) 軟件包、版本、路徑、用戶
b) 常用配置文件統(tǒng)一管理
c) apache 和squid 日志記錄每個請求執(zhí)行時長,mysql 打開慢日志
7、約定與限制
(1)基本的約定
(2)必要的限制
8、監(jiān)控報警
(1)原則:詳細的感知運行狀況,一定程度的自動控制和修復行為
(2)統(tǒng)計分析
a) www 日志
b) mysql 日志
c) 錯誤日志
d) 應用程序日志
(3)監(jiān)控
a) 可用性(ping/port/磁盤..)
b) 容量(帶寬、磁盤、CPU..)
c) 質(zhì)量(響應速度、成功率..)
d) 異常(進程/訪問量..)
(4)主動處理嘗試
1) 拒絕惡意訪問IP 地址
2) 暫停或重啟服務
(5)報警
9、關(guān)于性能
(1)在保證高可用的前提下追求高性能
(2)程序開發(fā)語言使用
如果性能瓶頸不在CPU,就用解釋性語言
(3)服務器軟件的合理使用
每個軟件都有最合適的環(huán)境,如Nginix/lighttpd
適合高并發(fā)高IO 的服務
(4)影響性能的軟硬件環(huán)境
a) 硬件:各種應用場景中常見的硬件性能瓶頸和導致的后果現(xiàn)象
b) 軟件:事件處理模型,請求處理時長,內(nèi)存使用,磁盤使用。
(5)網(wǎng)絡(luò)服務的性能指標
每秒請求數(shù)、并發(fā)量、網(wǎng)絡(luò)吞吐量
(6)性能分析
a) 不看表面現(xiàn)象,治本
b) 給系統(tǒng)整體把脈。
10、容量規(guī)劃
(1)日常情況合理的使用率
a) 負載小于CPU 的核心數(shù),如單CPU 核應該小于4
b) 各項資源使用率在40%以下,峰值情況下不高于80%
(2)使用率超過60%就應該引起注意
a) 分析是正常的業(yè)務增長還是不合理的使用
b) 分析是否為異常的用戶訪問,是否遭受攻擊
c) 分析是否業(yè)務優(yōu)化