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