專訪丁奇:阿里云即將開源AliSQL,超大并發、針對秒殺優化

Zeusab 8年前發布 | 14K 次閱讀 MySQL 開源 阿里云 數據庫服務器

8月9日,阿里云宣布啟動AliSQL開源項目,預計在9月份邀請部分用戶內測。預計在10月份,開發者可在 阿里云Code平臺 和GitHub網站上可以下載AliSQL,感興趣的讀者可以關注。

來自阿里云的丁奇曾表示,“在通用基準測試場景下,AliSQL版本比MySQL官方版本有著 70% 的性能提升。在秒殺場景下,性能提升 100倍”。這樣的性能提升數據是如何得出的?即將開源的AliSQL又將為開發者帶來哪些功能?對于不同行業,AliSQL做了哪些工作呢?

近日,InfoQ就相關問題采訪了丁奇。

受訪嘉賓介紹

丁奇,阿里云關系數據庫服務內核開發和運維團隊負責人,活躍的MySQL社區貢獻者。專注于數據存儲系統、MySQL源碼研究和改進、MySQL性能優化和功能改進。

InfoQ:AliSQL是基于MySQL官方版本的一個分支,能否簡單介紹下AliSQL的歷史?AliSQL版本在強度和廣度上都經歷了哪些考驗?

丁奇:大概在2009年,阿里巴巴集團開始大規模的使用MySQL數據庫來持久化業務數據。隨著集團業務的高速發展,官方的MySQL版本遇到了不小的挑戰,包括性能、部署、功能、成本等方面。

伴隨著業務的驅動和對源代碼的熟悉,集團開始嘗試在MySQL官方的開源版本上進行修改,這就形成了AliSQL的雛形。

電商業務的高速發展,對MySQL的性能提出了更高的要求。出于節省成本,AliSQL持續進行了性能優化,同時,多核CPU和SSD等新硬件的采用,也反過來促進AliSQL能夠盡可能利用硬件的紅利。

雙11大促不斷刷新記錄,數據庫的穩定性也變得越來越重要,AliSQL開始定制基于限流、線程池、秒殺等功能的patch,提升AliSQL的穩定性。

針對小微金融業務對數據保護的高要求,AliSQL定制了適合金融業務的數據保護方案,例如金融云上使用的雙通道日志高可靠方案。

從阿里云RDS上線服務開始,阿里云數據庫團隊就遇到了前所未有的挑戰,不同的行業用戶,不同的使用習慣和要求,AliSQL也迎來了發展最為迅速的時刻,影響力也越來越大。

所以,AliSQL的版本,是伴隨著業務的發展,一起成長起來的,經歷過雙11大促這樣大壓力的考驗,同時也經歷了阿里云各行各業用戶差異化的需求。可以說是身經百戰。

InfoQ:阿里云是開源組織 WebScaleSQL 的第五位成員,與非死book、Google、推ter和LinkedIn團隊共同研發WebScaleSQL,同時,阿里巴巴還擁有OceanBase 自研數據庫。能否請介紹下AliSQL、WebScaleSQL、OceanBase三者的關系和各自的特點?

丁奇:OceanBase是Alibaba集團自研的分布式數據庫,經歷了集團業務的洗禮,具有通用性,高擴展能力。

WebScaleSQL是由這五家公司發起的基于MySQL官方的一個分支,旨在解決大家在互聯網業務上遇到的問題,是五個成員公司將各自足夠通用的功能提交到一起的集合,每家公司的研發同學都可以提交代碼。實際上每個公司自己生產環境使用的是自己維護的一個分支,因為每個公司都有自己定制化的需求。

AliSQL同樣基于MySQL官方版本,汲取了官方和社區的技術紅利,具有很高的性能和穩定性,并適應不同行業的特點進行了定制。AliSQL的改進方向主要集中在安全性、穩定性、性能、新功能等方面。

AliSQL是經過幾年的生產環境、幾萬個用戶實例的實際業務錘煉的。

AliSQL的一些定制化功能都是為了解決DBA維護、業務使用中碰到的實際問題。比如5.5以上的版本由于有metadata lock,DBA對表加字段等操作可能導致阻塞查詢,進而導致整庫不可服務。我們新增 alter ..wait N .. 方法,保證了操作的安全性。再比如通過提供 set rds_reset_connection這樣的語句,解決了長連接占用資源和短連接性能問題的矛盾。

InfoQ:AliSQL在相關報道中提到,“在通用基準測試場景下,AliSQL 版本比 MySQL 官方版本有著 70% 的性能提升。在秒殺場景下,性能提升 100 倍。”能否詳細講解該數據是如何得出的?

丁奇:通用基準的測試,我們是采用sysbench進行的測試,也是公開的標準測試方法,AliSQL在吞吐能力上,比MySQL官方大概70%的性能提升。

秒殺場景是一個比較特殊的場景,AliSQL有專門的定制patch針對這種場景的優化,如果沒有限流和排隊,大并發的請求下,系統很容易產生雪崩效應,導致吞吐量急劇下降,而非線性關系。所以,秒殺場景下,在不可預知的業務請求量的時候,類似減庫存這樣的場景,性能下跌非常厲害,而AliSQL的秒殺解決方案能夠保證這類場景維持高性能。

InfoQ:電商行業的環境特點是怎樣的?AliSQL在電商行業環境下的優勢有哪些?或者說,為了更好地符合電商行業的需求,AliSQL做了哪些性能與功能的優化工作?

丁奇:電商行業的環境,其實提供了一個非常綜合的場景,在擴展性、穩定性、性能等方面對數據庫都提出了非常高的要求,AliSQL就是順應著這樣的要求進行的定制版本。

比如應對大量應用集群的線程池功能,秒殺場景的排隊功能,以及sql的限流功能。

比如大寫入量備庫延遲,AliSQL提供的基于表的并行復制功能。

又比如結構化數據的壓縮功能等。

InfoQ:電商秒殺場景有什么特點,為數據庫帶來的挑戰有哪些?AliSQL針對該場景優化了哪些性能與功能?已經應用過的實際場景有哪些?實際效果如何?

丁奇:電商的秒殺場景,其實就是減庫存,對數據庫而言,就是對一條記錄的更新,因為事務的特點,單條記錄的更新必須串行完成,但秒殺的特點,就是在某個時刻,大量的并發進行減庫存,這就造成了大量的線程因獲取不到鎖而處在死鎖檢測狀態,消耗了大量的CPU資源,最終導致系統無法響應,而引起雪崩效應。

AliSQL針對這樣的場景,提供了排隊和限流的功能,經過了雙11零點時刻高并發請求的考驗,保持了系統的穩定性和持續吞吐能力。

電商業務高峰有兩個對數據庫挑戰比較大的場景:

1.超大并發

MySQL能夠支持的并發活躍連接數是有上限的,理想情況下是大約(CPU核心數乘以2)個活躍連接數,當活躍連接數遠超這個值時,性能會急劇下降,導致整個業務不可用。AliSQL有水位控制,超過一定閾值的活躍連接數,當我們判斷到當前壓力超過數據庫的處理能力時,會主動放棄后到的請求,這樣保證數據庫還能保持很高的能夠正常響應的吞吐量。

2.秒殺場景

在秒殺場景里面有一個減庫存的問題。大量用戶同時搶購同一個商品的時候,需要同時更新商品庫存,這時候InnoDB的行鎖加上死鎖檢測機制會導致數據庫CPU短時間內被占滿,導致整庫幾乎無法響應。

在AliSQL我們有針專門針對秒殺的方案,保證在大量線程同時減庫存時仍能保持很高的TPS。除了阿里自己的秒殺業務,這個功能同樣適用于搶紅包這樣的業務,已經在2015、2016年春節經過大量的業務驗證。

InfoQ:在個性化方面,AliSQL針對云計算和金融行業做了哪些優化工作?應用過的實際場景有哪些?實際效果如何?AliSQL在物聯網大數據壓縮、金融數據安全等場景又提供了哪些個性化功能?

丁奇:在云計算的環境下,用戶的使用場景和方式都千差萬別,為了適應不同的環境,AliSQL定制了很多個性化的功能,比如,為了保障在線業務的平穩,針對用戶的分析型的SQL,AliSQL提供了資源使用限流、全表掃描buffer pool不緩存的特性,用戶可以通過設置環境變量或者使用hint來方便的使用這些功能,又比如為了加快大表的掃描,提供了邏輯預讀的功能,

這些特性,用戶在不同的場景下可以自由選擇。

除了這些,AliSQL在公有云上針對不同行業定制了很多功能。比如:

  1. 游戲行業

    我們在proxy這一層進行了AliSQL的橋接認證,提供防閃斷功能。

  2. 物聯網行業

    AliSQL集成了TokuDB引擎,提供高壓縮比和大吞吐寫能力。

  3. 金融行業

    AliSQL定制了多通道的半同步策略,以及一主兩備的三機房零數據丟失的數據保護級別。

InfoQ:針對不同的應用場景,AliSQL增加了哪些監控指標?

丁奇:AliSQL增加了很多監控指標,以幫助用戶或者DBA更了解自己的數據庫,比如,AliSQL針對四個不同的維度的統計:

  1. SQL維度。增加每個SQL執行的開銷統計,除了響應時間,鎖等待等,還包括邏輯讀,物理讀,臨時空間使用等

  2. 對象維度。增加了每個表的DML次數,索引的使用情況,幫助用戶理解業務和索引使用效率。

  3. 事務維度。增加了每個事務持續的時間,和操作的對象。幫助用戶定位問題

  4. 線程維度。增加了線程的內存使用統計

InfoQ:阿里巴巴一直在推進開源工作,您認為做好開源工作,公司應該從哪些方面出發?目前,AliSQL的開源計劃是怎樣的?將為開發者具體怎樣的幫助?

丁奇:我覺得,公司首先是支持開源的,基于開源的協議,有著回饋社區的初衷,并懷著促進社區發展的良好愿景。

AliSQL開源會保持著一個好的節奏,持續的高質量回饋社區。具體在9月中旬放出binary, 10月份會放出源代碼的第一個穩定版本。

開發者可以自由下載使用,并在平臺上進行反饋或者提出建議,后續AliSQL也會定期組織論壇,邀請開發者參與進行討論。

我們希望AliSQL能夠形成一個活躍的社區,開發者能夠從中受益,也能夠提出需求和改進建議,促進分支持續發展。

 

來自:http://www.infoq.com/cn/news/2016/09/AliSQL-ali-cloud-AliSQL

 

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