從Redis轉投Cassandra,Instagram節約了75%的成本

jopen 11年前發布 | 13K 次閱讀 Redis Cassandra

Rick Branson:   Instagram架構師。

Matt Pfeil:  DataStax聯合創始人。

Matt: 你好,我叫Matt Pfeil。在我身邊的是Instagram的架構師Rick Branson。Rick今天過得怎樣?

Rick: 還好啦,你呢?

Matt:我挺好的,現在能跟你對話就更好了。

Rick: 一直都想跟你會一會呢。

Matt: 我也是。有些人可能不知道,我跟Rick在DataStax共事了很長一段時間,后來他去了Instagram。Rick,在Instagram你們用的是Cassandra,能不能跟聽眾們談談你們是怎么用的?

Rick: 當然可以,Cassandra我們已經用了7到8個月。我們前期的開發集中在存儲與安全和網站完整性相關的審計數據。這是個什么概念呢?這意味著打擊垃圾郵件、檢測濫用用戶以及其他類似的東西。Cassandra很吸引人的一點就在這里。這些功能是我們原來已經用 Redis實現了的,但數據增長就是太快了,讓這些數據長駐內存在生產環境中是不現實的。擁有極高的寫速率和較低的讀速率,這就是Cassandra為什么這么流行的原因,所以最后的結果是,面對同樣的問題,傻瓜也會選Cassandra。我們開始時用了3個節點集群,后來增加到12個。這就是我們的后端基礎程序的變換的過程。

我們最近決定移植另一部分更重要的東西。我們花了點時間讓團隊里的每一個人都熟悉Cassandra的最新版本,讀文檔,然后練著看怎樣讓它跑得更好。我們選擇用Cassandra來做我們應用中叫做“inboxes”的部分(就是動態回復那塊)。這大致上就是用戶賬號關聯的全部動態的反饋,亦即你會看到大家喜歡你的照片、粉你、有朋友加入了、有人評論了你,等等。我們決定將這部分移到Cassandra的原因是,之前用Redis也有類似情況,而我們的內存就快不夠用了。

我們覺得Cassandra的可靠性跟可用性讓我們用起來很順手。這是一個非常不同的工作負載:我們在SSD上跑Cassandra 1.2,我們可以獲得有包括VnodesLeveled Compaction等全部新特性的最新版本。Cassandra是個很成功的項目,我們只花了幾天就移植完畢了。

關于我們這些集群的一些細節:12個節點的集群/用了(亞馬遜的)EC2 hi1.4xlarge/存儲了大概1.2TB的數據。峰值時我們在這個集群每秒大概做20,000個寫操作和15,000個讀操作。Cassandra 處理這些操作的方式讓我們印象深刻。同時我們也減少了我們的足跡,所以這對我們來說真是極好的體驗。第一個實現為我們這次移植積累了不少的經驗。現在每次人們打開Instagram,他們都是在跟這12個節點的集群要數據,這是極其振奮人心的一點。

Matt: 好牛呀。我聽你說到了一個很有趣的東西,你說你們是從Redis移到Cassandra的,這明顯得在內存里進行。是什么在推動你們做這個移植的呢?

Rick: 比方說前面說的針對后端的第一次移植,我們是從一個Redis 主/從復制設置中移出,因為這東西實在是太貴了。我們從將什么東西都放到內存里(通常會很大),變成將全部東西放到硬盤上。當你不需要頻繁的讀時,這樣會運行得很好。采用Cassandra后我們在這一塊花的錢是之前的四分之一。不僅花費減少了,這同樣將我們的人手解放出來了,因為這樣能更好擴展,需要的話我們可以隨時增加節點。特別需要指出的一點是,如果你要將一個之前不共享的設置改成共享,這是件很痛苦的事。用Cassandra你可以免費獲得這樣的功能,在它里面你不必經歷共享數據的痛苦過程。

另外一次移植,我們叫做“Inbox”實例,反饋信息是已經共享了的。它原來是在32個節點集群上,16個主庫和16個冗余備份(失敗的備份),我們當然得經歷共享所有這些東西的過程。我們發現我們的機器眼看著就要沒有空間了,它們其實并沒消耗太多的CPU(Redis有很高的CPU利用率),但很明顯的是當你內存快沒了。。。你就真的沒有內存了。

這里用Cassandra集群更具成本效益和更易操作,你不需要那種在內存級別的性能。耐久性是一個很重要的因素,這點Redis沒有實現好,這點我將會在Cassandra Summit 2013上深入的講講。

Matt: 我覺得你是在吊起大家的胃口,吸引大家到時都去聽這個演講。

Rick: 這還不是跟你學的。

Matt: 呃,很高興我教了你一課。底下的人如果他們自己沒用過Cassandra,但很感興趣的話,你有什么建議?

Rick: 再打下廣告,在Cassandra Summit 2013上我將會深入的講講我們采用的策略及其他類似主題。

我建議大家深入這個系統,一篇不落的讀完 Cassandra 文檔,特別是 DataStax網站上的內容。我看過的相關文檔中最好的一點是它們會包含很多關于內部實現的額外信息,實實在的搞懂這些東西是很重要的。不管你用什么數據庫或數據存儲,為了用得更好更地道,你都得深挖它的文檔。太快或錯誤地采用某個方案,或者前期不做功課,這時人們經常拐不過彎來。特別是用了數據存儲的,確保它是你的系統中最穩定最可靠的部分至關重要。

Matt: 這話中聽。謝謝Rick今天抽時間來,像你所說,大家記得今年6月11號到12號在舊金山 Fort Mason阿Rick會做關于Instagram怎樣用Cassandra的演講。界時我也會跟他有個名為Deciding Dollars:It's Actually Actuarial的訪談。再次謝謝你抽空來,Rick。

Rick: 客氣啥,另外大家可以在IRC channel 刮到我架。

Matt: 你講得沒錯。如果你也沒有響推特粉阿Rick,IRC頻道上你可以刮到各種有用的東西架。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!