自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

程序員必看:性能大幅度提升的Twitter新系統(tǒng)架構(gòu)

開發(fā) 架構(gòu)
2013年8月3日《天空之城》在日本的熱播創(chuàng)下每秒新增143119條推文的Twitter峰值記錄,是Twitter平均每秒發(fā)推數(shù)(TPS)5700條的25倍。值得注意的是,在這次毫無征兆的“洪峰”到來時,Twitter全新的系統(tǒng)平臺并沒有被潮水般涌來的推文堵塞而產(chǎn)生任何延遲甚至宕機。

2013年8月3日《天空之城》在日本的熱播創(chuàng)下每秒新增143119條推文的Twitter峰值記錄,是Twitter平均每秒發(fā)推數(shù)(TPS)5700條的25倍。

值得注意的是,在這次毫無征兆的“洪峰”到來時,Twitter全新的系統(tǒng)平臺并沒有被潮水般涌來的推文堵塞而產(chǎn)生任何延遲甚至宕機。

TWITTER perf-improvements-2

Twitter舊架構(gòu)與新架構(gòu)的性能對比

僅僅三年前,在2010年世界杯上,一個點球和一張紅牌產(chǎn)生的“推文風暴”都可能導(dǎo)致Twitter服務(wù)暫時失去響應(yīng),號稱地球脈搏的Twitter 經(jīng)常“心肌梗塞”。過去三年Twitter的工程師們夜以繼日的工作,試圖用“縫縫補補”的方式完善Twitter系統(tǒng),但最終隨著Twitter的快速 發(fā)展,這些方法的收效轉(zhuǎn)瞬即逝。

最終,Twitter痛下決心重新架構(gòu)為人詬病的IT系統(tǒng),新平臺上線運行后在性能和可靠性上都取得的翻天覆地的進步。無論是《天空之城》熱播還是超 級碗決賽都沒能卡住Twitter,而且新的架構(gòu)也為Twitter推出多媒體推文卡片,跨設(shè)備消息同步等新功能的推出提供了有力的支撐。

最近,Twitter平臺工程副總裁Raffi Krikorian(@raffi)在Twitter官方博客 撰文分享了Twitter新架構(gòu)的方法和經(jīng)驗,摘要如下:

重新架構(gòu)的緣由與問題癥結(jié)

2010年世界杯多次卡殼后,我們重新審視了系統(tǒng),有以下幾點發(fā)現(xiàn):

我們運行著全球最大的Ruby on Rails應(yīng)用,200名工程師負責開發(fā)運維這個系統(tǒng),但隨著用戶規(guī)模和服務(wù)數(shù)量的快速增長,系統(tǒng)所有的數(shù)據(jù)庫管理、Memcache鏈接以及公共API 的代碼屬于同一個代碼庫。這給工程師的學習、管理和并行開發(fā)都帶來巨大困難。

我們的MySQL存儲系統(tǒng)已經(jīng)遇到性能瓶頸。整個數(shù)據(jù)庫中到處都是讀寫熱點。

通過添置硬件已經(jīng)無法解決根本的系統(tǒng)問題——我們的前端Ruby服務(wù)器每秒處理交易的數(shù)量大大低于我們的預(yù)期,也與其硬件性能不成比例。

從軟件的角度看,我們陷入了“優(yōu)化的陷阱”。我們是在犧牲代碼庫的可讀性和靈活性來換取性能和效率。

重新檢視系統(tǒng),并設(shè)定三大目標/挑戰(zhàn)

一、新架構(gòu)必須在性能、效率和可靠性上表現(xiàn)優(yōu)異,減少延遲大幅提升客戶體驗;同時將服務(wù)器數(shù)量減少到原來的十分之一;新系統(tǒng)能夠隔離硬件問題防止其演變?yōu)榇笠?guī)模宕機。

二、解決單一代碼庫的種種弊端,嘗試松耦合的面向服務(wù)模型。我們的目標是鼓勵封裝與模塊化的最佳實踐,但這次是在系統(tǒng)層面,而不是類庫、模塊和數(shù)據(jù)包的層面。

三、最重要的是能夠支持新功能的快速發(fā)布。我們希望能夠由一些充分授權(quán)的小團隊能做出自主決策,并獨立發(fā)布一些用戶功能。

我們在動手前部分開發(fā)了一些概念驗證模型,最終我們確定了重建的原則、工具和架構(gòu)。

系統(tǒng)重建的關(guān)鍵措施

一、前端服務(wù):用JVM取代Ruby VM。通過重寫代碼庫將Ruby VM服務(wù)移植到JVM,性能提高了10倍,如今性能達到 10-20k請求/秒/主機。

二、編程模型:按服務(wù)類型對系統(tǒng)進行結(jié)構(gòu),建立一個統(tǒng)一的客戶端服務(wù)器庫并與負載均衡、故障轉(zhuǎn)移策略等綁定,從而讓工程師們能更加專注于應(yīng)用和服務(wù)界面。

三、采用SOA面向服務(wù)架構(gòu),使并行開發(fā)成為可能。

四、推文的分布式存儲。即使將整塊單一應(yīng)用分解成不同的“服務(wù)”,存儲依然是個巨大的瓶頸。過去Twitter采用的單一MySQL主數(shù)據(jù)庫只能線性 寫入推文,Twitter決定在推文的存儲上采用全新的分區(qū)策略,用Gizzard框架創(chuàng)建容錯的分片分布式數(shù)據(jù)庫存儲推文,但這樣一來就沒有辦法使用 MySQL的唯一ID生成功能。Twitter用 Snowflake解決了這個問題。

五、監(jiān)測與統(tǒng)計。將單一應(yīng)用轉(zhuǎn)化為復(fù)雜的SOA應(yīng)用后,需要購買匹配的工具才能夠駕馭。Twitter的服務(wù)推出速度很快,同時還需要實現(xiàn)數(shù)據(jù)化的決策支持,Twitter的Runtime系統(tǒng)團隊為工程師開發(fā)了兩個工具Viz和 Zipkin。

原文鏈接:http://www.pmtoo.com/plus/view.php?aid=3443

責任編輯:陳四芳 來源: 產(chǎn)品中國
相關(guān)推薦

2015-11-16 11:31:35

Kubernetes網(wǎng)絡(luò)性能新版本特性

2017-11-12 20:25:40

FacebookAndroid程序員

2009-05-11 14:19:55

Oracle性能優(yōu)化數(shù)據(jù)庫

2009-08-14 10:14:23

H.264編碼器數(shù)字視頻編碼標準PowerSmart

2025-04-28 10:16:35

VSCode插件開發(fā)

2018-01-30 08:47:46

存儲查詢性能

2021-05-31 07:37:48

Windows10操作系統(tǒng)微軟

2022-07-13 15:41:13

代碼檢查審查員開發(fā)

2011-05-27 06:58:13

LifeSize碳排放

2024-04-30 10:04:14

目標檢測AI

2022-02-16 18:21:33

程序員跳槽架構(gòu)

2013-03-01 09:39:53

HadoopTwitter大數(shù)據(jù)

2023-04-10 09:15:25

Vite 4.3SWC 插件

2020-12-21 12:50:48

RPA數(shù)字化AI

2015-04-27 14:22:39

程序員提升自己價值

2024-12-11 07:59:02

2011-03-30 09:26:20

c++程序員

2011-07-12 13:35:04

程序員

2011-06-02 11:26:24

程序員

2023-11-09 08:46:24

點贊
收藏

51CTO技術(shù)棧公眾號