天天看點

看雲栖說雲栖—— 開源、SQL or NoSQL

查理·芒格:你必須知道重要學科的重要理論,并經常使用它們——要全部都用上,而不是隻用幾種。

本文内容提取自2019杭州雲栖大會《開源資料庫專場》、《NoSQL資料庫專場》、《ElasticSearch開發者生态專場》。這次繼續聊資料庫,且還是聚焦于線上業務資料處理,但不像前幾天在《雙十一的倆功臣》中分享的阿裡雲自研資料庫,這次幾乎全是開源資料庫。

前兩天看到一篇CSDN翻譯的文章《雲與開源誰吃誰》,看到下面這張圖:開源正在被雲吃掉,而雲正在被多雲吃掉。

看雲栖說雲栖—— 開源、SQL or NoSQL

(圖檔來自于網絡)

開源其實是很古老的事物,在開源聖經《大教堂和集市》于1997年問世之前,GNU/Linux就已經流行很多年了。我認為一項東西越是古老,就越有可能仍然有用。随着RedHat、GitHub的相繼被收購,開源作為一種商業模式有可能正在走向末路,但開源作為一項軟體開發組織形式一定還會在在雲服務商的資助下,在多雲的博弈下繼續存在很多年。

在《開源資料庫專場》,阿裡雲資料庫團隊宣布在2020年DRDS将開源,DRDS是阿裡雲自研的一個資料庫分片引擎,可以将海量的資料處理任務分散到多個資料庫上進行處理,在阿裡巴巴去IOE的過程中扮演了非常重要的角色。現在,DRDS即将開源了。

DRDS在阿裡去IOE中的戰友是MySQL,阿裡雲MySQL8.0有下面這些特色:

  • TDE加密&SM4國密算法、支援使用國内的國密算法對資料表檔案進行透明加密。
  • New Thread Pool、新線程池,對提高并發數有好處。
  • AliSQL Cluster、提供99.99%的高可用,支援3可用區部署,提供金融級資料保護能力。
  • Sequence Engine、順序數生成更靠譜,更靈活可靠的生成各種主鍵。
  • 熱點賬戶&庫存秒殺、提升單行事務處理能力,應對積分、紅包、庫存等熱點。
  • 隐式主鍵、保證所有的表都有主鍵,自動為不含定義的表加主鍵,可以提升複制性能。
  • Performance Insight、提供更多性能名額監控資訊。
  • SQL Outline、透明的Hint固化SQL執行計劃。
  • 大檔案異步删除、可以平穩的删除上百GB或上TB的大檔案。
  • 語句級并發控制、動态控制某個SQL的執行頻率,限制單個差SQL對整個資料庫資源的搶占。
  • Recycle Bin、延遲删除對象,遇到誤操作,可以快速找回。
  • Semisync Optimize、優化主從同步的性能,提供更好的HA保護。

在《Elasticsearch開發者生态專場》,阿裡雲釋出了Elasticsearch2.0,主要特性如下:

  • 增強版ES、索引建構性能提升95.8%、支援秒級彈性擴容、存儲成本降低50%以上。
  • Logstach as Service、開箱即用的Logstach雲托管服務、支援OSS、LogService(阿裡雲自己的日志服務)的input插件。
  • 阿裡NLP分詞器、阿裡達摩院傾力打造、預設詞庫超過700MB、支援熱詞庫更新。
  • 智能運維、智能診斷Elasticsearch執行個體健康狀況、定期生成診斷報告,降低運維成本。

在應用場景分享和圓桌論壇環節,衆安保險、Elastic Code、阿裡雲安全團隊分别介紹了ElasticSearch在保單搜尋、代碼搜尋、安全風控領域的應用。

在《NoSQL資料庫專場》,介紹了Redis、MongoDB、HBase、Cassandra、GDB這幾種NoSQL資料庫。

這其中隻有GDB不是開源資料庫,GDB是阿裡雲自研的,主要面向線上業務的圖資料庫服務。阿裡雲GDB支援主流的Gremlin圖資料查詢語言,支援ACID事務、提供自動索引、無需定義Schema、主要用于社交網絡、金融欺詐檢測、實時推薦引擎、知識圖譜、網絡/IT營運等場景。

這其中被應用的最廣泛的應該是Redis,阿裡雲上的Redis有什麼不同:

  • 中心化的叢集架構,在不影響可用性的前提下提高相容性,支援讀寫分離、便于深度優化定制。
  • 支援熱更新、在使用者無感覺的情況下對Redis Proxy代理進行更新。
  • Redis資料遷移方案、通過開源項目RedisShake/RedisFullCheck支援跨雲熱遷移與校驗Redis資料、上的去,也下的來,鬥魚的混合雲架構中大量使用了RedisShake/RedisFullCheck。
  • Redis混合存儲、提供混合存儲執行個體,結合RocksDB實作資料即時落盤,突破記憶體限制。

針對MongoDB,阿裡雲提供安全審計、備份恢複、診斷分析、MongoShake複制、企業級存儲引擎的支援。

HBase一般和大資料相關,但在這裡,HBase是作為一項NoSQL技術被讨論的,在阿裡雲内部HBase有一萬+的節點、峰值請求3億+、存儲了200PB+的資料、服務了内部9000+的使用者。為了降低HBase的存儲成本,阿裡雲HBase支援自動存儲分層,可将冷資料自動遷移到OSS。在性能方面,通過對日志存儲等技術細節的優化,阿裡雲托管的HBase要比自建在ECS上的HBase性能有幾倍的提升。

最後一個要介紹的是Cassandra,阿裡雲應該是國内最早開通Cassandra服務的雲服務商。Cassandra是結合了Google BigTable和亞馬遜DynamoDB的一個NoSQL資料庫實作,但這裡的NoSQL是Not Only SQL的意思,Cassandra 使用名為CQL的類SQL語言,可以讓會MySQL的開發和運維人員在一台之内學會Cassandra。Cassandra的一些成功案例包括:

  • 使用者畫像&曆史訂單、億級别使用者資料、100+使用者屬性、6000萬+日更新資料,99%的延遲控制在5ms以内。
  • Feed流、1000+節點、500+TB資料、平均延遲20ms。
  • 小對象存儲、Read/Write QPS 100K+、對象平均大小50KB、平均延遲7ms。
  • 推薦平台、結合Kafka、MongoDB、Spark、Redis建構的商品推薦平台,通過Kafka對日志進行采集,結合MongoDB中的商品資訊,通過Spark實時處理引擎将畫像資料推送入Cassandra,通過Spark離線計算引擎每30分運作一次推薦,結果存入Redis。

在阿裡雲上的Cassandra有這些不同:

  • 自動化運維
  • 相容DynamoDB(AWS的客戶看過來)
  • 備份恢複(待支援)
  • 全鍊路優化性能提升100%+
  • 自研公網通路:多種網絡環境VPC、公網,Server自動切換路由鍊路,開源用戶端無需改動
  • 自研分級安全插件:在原有super user上,多一級system user,保護雲上核心資源不被篡改。
  • 對接到阿裡雲産品生态 —— DTS、CMS、CDP、雲Kafka、X-Pack Spark等。