云栖干货回顾 | 行业顶级NoSQL成员坐阵,NoSQL数据库专场重点解析!
NoSQL數據庫作為數據庫市場最重要的組成之一,它的一舉一動都影響著成千上萬的企業。本專場邀請了行業頂級的NoSQL核心成員與大家共同展望NoSQL數據庫的未來,阿里巴巴、MongoDB、Redisson、斗魚等公司的技術大咖與大家共同分享了阿里云NoSQL數據庫的企業級特性及行業解決方案。
Redis & MongoDB云數據庫技術剖析
阿里云智能事業群數據庫產品事業部技術總監,MongoDB中國用戶組杭州用戶會主席楊成虎(葉翔)為大家深度剖析了Redis和MongoDB云數據庫的技術。
Redis企業級數據庫服務
 Redis作為企業級數據庫需要關注四個方面:
? 分布式:需要滿足企業快速成長和降低成本的需要,實現彈性擴容,以及從主從模式變為集群模式。?
 ? 兼容性:兼容性是永恒的話題,即使無法做到100%一致,但需要無限接近。?
 ? 安全審計:安全在云環境中越來越重要,Redis開源版的安全審計能力比較薄弱,阿里云Redis對于這一點進行了加強。?
 ? 數據同步:需要能夠支持混合云部署,使得第三方云廠商、IDC與阿里云實現互通,以及數據遷移和轉換,滿足客戶上云或者下云的靈活決策。
Redis原生的Cluster架構采用了Gossip協議實現路由表的同步,但這種架構在社區以及企業中并沒有快速流行起來。雖然其有無中心架構、組件依賴少等優點,但也存在很多問題,如運維困難,路由存在不確定性,需要依賴Smart Client,并且不支持Multi-Key以及從主從模式遷移到集群模式,進而造成升級困難。
 
為了解決上述問題,阿里云Redis數據庫沒有采用Gossip協議,而是引入了新的兩個組件:Proxy和Config Server。阿里云Redis采用了配置中心對于路由表信息進行管理,可以通過Config Server進行智能化調度,Proxy則能夠兼容非Smart Client,支持Multi-Key,并能夠實現流量管理以及讀寫分離等。Proxy和Config Server雖然帶來了架構的復雜性,但管理大規模復雜架構正是云廠商所擅長的。此外,這兩個新組件所造成的額外成本也會被削平。通過這樣的云服務架構使得用戶能夠將Redis從主從架構無縫遷移到集群版本。
 
隨著Redis Cluster云服務架構的延伸,出現了一個新概念——Redis云數據庫企業分布式矩陣。這個矩陣能從縱向和橫向進行擴展,縱向能夠隨著Shard的添加進行分片,從而實現彈性擴展;橫向則能夠實現讀寫分離,并且做了Group分組隔離。全局來看,還支持Memcache和Redis雙協議,并且能實現集群、主備之間的平滑切換。
阿里云Redis的Proxy引入了Connection Session的概念,能夠對于Connection實現更細粒度的管理,并且通過連接池實現了長連接復用,不僅能夠兼容多種協議,并通過C語言高性能代碼也提升了短連接的性能。阿里云Redis的Proxy還具有熱升級能力,能保證在服務不間斷的情況下升級版本。
阿里云Redis在整個數據鏈路上進行了逐層加密處理,支持了SSL、白名單、權限管理以及關鍵命令的禁用和審計等,增強了Redis的安全審計能力。Redis還提供了一些免費的開源工具,如同步工具RedisShake以及數據校驗工具RedisFullCheck等。
而Redis作為內存型的緩存服務也存在很多挑戰,比如容量受限,成本較高以及持久化能力弱等。基于以上問題,阿里云提供了混合存儲的Redis版本,其目的在于為用戶提供持久化、可安全存儲的Redis服務。其實現依賴于底層的RocksDB,通過不斷同步冷熱Key,使得內存處于可控范圍之內。
 
MongoDB企業級數據庫服務
MongoDB作為企業級數據庫需要關注四個方面,即安全審計、備份恢復、數據同步以及彈性伸縮。MongoDB的安全審計與Redis基本一致,進一步增加了TDE加密。MongoDB增加了物理備份,使得備份和恢復效率都有了大幅度提升,并且通過增量備份能力使得數據能夠恢復到任意時間點。此外,在備份的基礎之上,阿里云MongoDB還提供了備份驗證能力。
 
阿里云MongoDB還提供了診斷分析能力,并提供了MongoShake工具對數據進行同步。阿里云MongoDB基于RocksDB引擎實現了共享存儲解決方案,可以實現存儲彈性伸縮,秒級添加只讀節點,并解決了oplog全局鎖問題。當然,這樣的方案也面對著幾點挑戰,如與WiredTiger的兼容性問題;Compaction帶來的性能抖動;以及共享存儲延遲穩定性。
基于MongoDB的數據中臺技術實現
MongoDB大中國區首席架構師唐建法為大家介紹了基于MongoDB的數據中臺技術實現。
如果企業業務需要對接不同的客戶數據,而這些數據的結構、類型各不相同,可能需要花費數周甚至數月。很多已有的解決方案就是實現數據統一平臺,將所有數據通過ETL抽取到數據平臺上,這種方式的共性是“T+1”的方式批量采集匯總,做成數據集,以交互方式提供下載。但這種方式存在著平臺數據滯后、響應速度慢、交互方式粗糙等問題。
數據中臺從技術的角度進行定義就是“數據統一平臺+數據即服務能力”。數據來源于業務,需要按照“T+0”方式采集,提供及時的數據。數據需要以API的服務化方式交付出去,而非打包。這使得數據中臺能夠對企業賴以生存的操作型系統提供支持,相比于分析型業務,操作型業務更加核心,更加能夠提高企業競爭力,這也是數據中臺火爆的原因。
數據中臺的定義就是包含企業實時全域數據的,主要面向操作型業務應用為主的數據服務技術平臺。其概念起源自國內,存在眾多流派,眾說紛紜。咨詢公司說數據中臺是一種組織架構的轉變,方案提供商則說數據中臺是像Hadoop一樣的技術平臺產品,不同的組織有不同的出發點。
中國97%小微企業與數據中臺基本不相關。腰部占3%的120萬家大中型企業,可能有很多的開發人員但沒有數據專家,另外還有少部分頭部企業。對于腰部的大中企業而言,系統可能不多,而數據團隊基本沒有,無法快速構建完善的數據中臺,但是數據孤島的痛點、數據打通以及快速開發的需求卻是真實存在的。這些企業可以選用技術型架構,具體需要考慮的能力包括數據匯聚、數據治理以及建模、數據API服務,以及最關鍵的存儲、海量、多模和高性能。
RDBMS、MPP、Hadoop、NoSQL以及NewSQL數據技術各有長短板,在構建中臺時也可以做一些參考,企業需要根據自身實際情況進行考量。
 
之前,MongoDB用于大數據離線分析并不是很好的選擇,更多地是將其用于業務場景。而數據中臺面向的就是業務應用場景,因此MongoDB成為了一個不錯的選擇,其具有較強的橫向自動擴展能力,支持多模多態,并且API友好。此外,基于MongoDB實現建模所需要的工作遠少于傳統方式,能夠降低成本。
此外,MongoDB還具有數據采集、可視化建模、無代碼化API、數據可視化等數據中臺構建所必須的能力。
如下圖所示的是較為完整的MongoDB數據中臺解決方案參考架構,從下到上依次是采集、存儲處理以及數據服務三層。
 
基于MongoDB構建數據中臺具有這樣幾個核心優勢,即無縫橫向擴展能力、多類型結構數據模型、邏輯模型即存儲模型、異構實時數據庫同步能力、無代碼快速API發布能力以及簡單、輕量和快速。
圖數據庫GDB的設計與實踐
阿里巴巴資深技術專家朱國云(宗岱)為大家分享了阿里巴巴圖數據庫GDB的設計與實踐。
什么是圖數據庫
圖數據庫是針對于圖結構設計的數據庫,而非圖片數據庫。什么是圖結構呢?這是以社交網絡模型為例介紹,該模型中存在人與人、人與論壇、人與帖子、帖子與論壇之間的關系,人、論壇、帖子就屬于圖中的點(即Vertex),點之間的關系就稱之為邊(即Edge),在點和邊上會有一些屬性(即Property)。
如今,一些優秀的社交應用會將多維數據存儲到統一的圖空間中來,進行存儲、查詢和分析,為用戶帶來更好的體驗。近年來,數據量越來越大的同時,數據維度也逐漸增多,圖數據庫就是在這種背景下誕生的。
圖數據庫作為近年來數據庫領域中發展最快的一類,與關系型數據庫存在哪些差別呢?通常情況下,關系型數據庫中需要通過建七八張表才能做到的模型,圖數據庫能夠更加直觀、自然地表現出來。此外,圖數據庫做關聯查詢的速度更快,還能夠提供更多探索發現的能力。
前面提到的是屬性圖模型,在圖數據領域還有一種RDF模型。兩者的主要區別在于RDF的點和邊上不可以有屬性。
 
圖數據庫發展速度很快,因此種類也是特別多,主要可以分成四類,即知識圖/RDF、分析圖、圖數據庫、多模型圖數據庫。這些圖數據庫系統使用的主流查詢語言大致有三類,即Neo4j主推的最早使用類SQL查詢語言的Cypher、用于RDF上的描述語言SPARQL和目前支持最廣泛的基于屬性圖的查詢語言Gremlin。
什么是圖數據庫GDB
GDB是一種圖數據庫,其主要處理高度連接數據的存儲和查詢,其支持了屬性圖模型和開源的TinkerPop Gremlin查詢語言。與其他數據庫不同的是:GDB是云原生數據庫,從一開始就建設在阿里云基礎設施之上,因此能夠做到彈性、實時和高可靠。
GDB脫胎于Tair Service中的TairGraph 子系統,后來其孵化出來,并放到阿里云上來專注地解決高度連接數據場景中的問題。基于Tair 10年的技術基礎,GDB實現了高度優化的自研引擎,能夠實現實時更新和秒級查詢,并且完整地支持ACID事務,并通過多副本保障高可靠。此外,還做到了服務高可用,能夠實現節點故障迅速轉移;易運維,提供了開箱即用的能力;可視化,更利于分析數據的內在關系。
在架構層面,GDB為客戶提供的是獨享專屬實例,這意味著資源獨立,無須擔心搶占問題。HA方面采用了最經典主備架構,并提供只讀節點來提升實時查詢能力。GDB支持了Gremlin開源的TinkerPop SDK,為了實現每秒百萬級點邊過濾,GDB定制了專屬的圖友好數據庫引擎,并在查詢優化和并行執行等方面做了大量優化,還支持了事務和自動索引。在數據通道部分,GDB還提供了多種數據源的高效導入支持。
 
GDB的場景和案例
如今,GDB在社交網絡、金融欺詐檢測、實時推薦引擎、知識圖譜以及網絡/IT運營等場景中得到廣泛應用,而且這些場景往往交織在一起。使用GDB能夠將之前偏離線的場景做到實時或者準實時。
總結而言,在數據維度越來越多、數據相互關聯越來越緊密的今天,GDB提供了一種有效的圖存儲方式,能夠將多維數據很好地連接起來,并通過圖查詢、圖算法把數據隱藏的價值實時地、智能地挖掘出來。
從Java走向云原生,Redisson不停地探索
Redisson聯合創始人顧睿為大家分享了Redisson從Java走向云原生的探索之路。
Redisson是架設在Redis基礎上的一個Java駐內存數據網格。Redisson以Java接口方式而非命令的形式提供給大家,使用非常簡單。其優勢在于上手容易,只要能夠使用Java基本就能夠使用Redisson。此外,Redisson在設計時規避了多線程的問題,采用了線程安全的設計,同時引入了線程池和連接池的管理,在同步和異步的場景中都能選到適合的方式。
除了使用簡單外,Redisson在功能上也提供了多種選擇,能夠支持31種分布式集合、14種分布式對象、8種分布式鎖和分布式同步器以及5種分布式服務。
Redisson的架構主要分為兩大塊,包含Redisson客戶端的連接管理、協議解析在內的基本功能和包括分布式結構、分布式中間件以及第三方功能支持在內的高級功能。
從Redisson架構角度來看,似乎和Redis的理念相沖突。Redis設計理念強調簡單,而Redisson設計卻比較復雜;Redis提供了9種數據結構,界限清晰,而Redisson提供了約60種,界限比較模糊;Redis以命令形式面向用戶,而Redisson卻以Java API形式面向用戶。看似分道揚鑣,實則殊途同歸,都是為了將復雜隱藏起來,將簡單的使用方式提供給用戶。
只支持Java是Redisson的優點,也是缺點。Java是Redisson的一個牢籠,這對于應用程序開發者而言是優勢,而對于程序庫開發者而言就是劣勢。因此,Redisson一直在思考如何走出困境,擁抱其他的生態。
2016年,Redisson首先嘗試了使用Vert.x框架,Vert.x的特點是集群運行環境、多語言交互性和基于成熟技術,并且Vert.x對開發者的限制比較少。因此,Redisson做了相關的實驗,實現了Redisson在其他語言中的運行。但是這種方案學習成本非常大,而實際收益卻不高。
2018年,Redisson注意到ORACLE Labs推出的GraalVM,GraalVM的底層是Java運行層,包括GraalVM和SubstrateVM,可以讓其他語言都能夠編譯融合并放入JVM中執行,同時保證相互溝通的橋梁。SubstrateVM是最吸引Redisson的點,它可以理解為用Java編寫的嵌入式虛擬機,使得真正的跨平臺和跨語言成為可能。
 
于是,Redisson開始了“逃跑之路”,實現了redisson-native。對于Java、Java+Warm UP以及Native三種方式的性能進行對比,能夠看出redisson-native的性能具有明顯的優勢。
 
因此,這說明借助SubstrateVM逃離Java是非常好的解決方案,無需考慮JNI等相關問題,大部分操作只需要Java即可完成,學習成本較低,并且無需安裝獨立的JVM,生成文件也較小,云原生情況下性能較高,并且C調用非常簡單。延伸開去,可以將Redisson帶入到原生的二進制狀態并進行二次封裝,實現遍地開花。
基于企業級HBase的大數據存儲與處理
阿里云智能事業群數據庫產品事業部技術總監,Apache HBase PMC沈春輝(天梧)為大家分享了基于企業級HBase的大數據存儲與處理。
進入大數據時代,數據量越來越多,數據種類也越來越豐富。數據量多這一點容易理解,而數據種類豐富則可以從三個維度來看:從靜態維度,如今能夠用數字化設備越來越多;從動態維度,設備、服務的運行狀態越來越多;此外,還有數據再加工又產生了新數據,使得數據變得無窮無盡。面對這么多數量和種類的數據,如果沒有價值就都是廢墟。回顧這十年,大家對數據價值層面的認知越來越強烈,數據也越來越多地應用到生活中的各個場景。
隨著對數據的應用,系統會面臨很多挑戰。大數據提出了“4V”,具體對于開發者而言,數據體量非常大意味著系統需要高擴展性;數據種類非常豐富意味著系統需要具有高靈活性,能夠很好承載隨時隨地產生的新數據種類;數據時效性意味著系統具有高實時性,具有數據在線化能力;數據價值則意味著需要能夠商業化,系統需要降低數據的存儲和計算成本。
十多年前,Google首先遇到大數據問題,因此發表了Big Table論文。而HBase則是基于該論文設計的高可靠、高性能、可伸縮的開源大數據NoSQL系統。HBase放棄了對于關系型數據庫事務的支持,重點構建擴展性能力、靈活性能力、實時響應能力以及對大體量數據存儲低成本的能力。
 
阿里巴巴從2010年開始調研HBase,如今已經走過了近十個年頭。隨著這十年的逐步探索,阿里巴巴也豐富了HBase的使用場景,如消息,訂單,Feed流,監控,大屏,軌跡,設備狀態,AI存儲,推薦,搜索,BI報表等。阿里巴巴自己使用HBase已經達到了非常大的體量和規模,也在產品上有了很多積累和沉淀,形成了如今云HBase+X-Pack的架構。單獨依靠HBase數據庫無法解決業務場景下的復雜問題,因此X-Pack基于云HBase在計算、檢索、多模型上進行了擴展,包含了Spark、Phoenix、Solr以及OpenTSDB等,形成了穩定、易用、低成本的一站式大數據NoSQL平臺。
 
云HBase+X-Pack架構實現了低成本的數據存儲,將HBase運行在OSS上面,并且讓整體接口模型復用HDFS能力。并且同時克服了OSS在面向文件場景下的問題,將原本面向對象的存儲系統當做類似云盤來使用,使得存儲成本降低3到7倍。此外,還基于HBase做到了一體化冷熱分離,并使得業務無感知。
除了低成本存儲之外,阿里云HBase還投入了大量的精力來優化性能。相比開源版本,阿里云HBase在各個性能指標上都有較大的提升。在這背后是不斷的優化,如原本將基于HDFS Pipeline日志三副本轉變向LLC機制,并將串行改為并行;將原本串行獲取鎖的方式變為并行;并且實現了10倍的Java GC優化。
最后一點,HBase屬于大數據領域,必須結合很多組件,因此易用性也是大家最為迫切需要的。阿里云HBase實現了HBase和Spark的數據聯動以及在線和離線的高效融合。此外,阿里內部也提供了一套易用的數據遷移系統,能夠實現平滑在線搬遷。
無論是從穩定性、易用性還是性能和成本上來說,阿里云HBase都有很大的提升。未來,阿里云HBase還會通過共享塊存儲等技術進一步降低成本,也將會推出Serverless能力,并且會通過新硬件來加速計算,降低成本。
斗魚直播從0到1混合云架構演進
斗魚技術總監馬勇為大家分享了斗魚直播的混合云架構演進之路。
斗魚直播成立于2014年,是以游戲賽事為主的直播平臺,平臺簽約國內Top100主播約50位,覆蓋游戲主播Top10中8位,月活達1.5億,2019年Q1付費用戶約600萬。斗魚主要有三條業務特點:頭部主播熱點效應,流量水位波動較大,以及在線互動場景較多。目前的技術現狀是每天業務調用量在千億左右,Redis實例集群達2000以上,單個接口QPS達20萬以上。
斗魚直播從2016年開始保持每年25%以上的月活增長,目前面對的技術困境主要有三點:(1)“炸魚”,頭部流量拖死全站房間;(2)服務器資源利用率低,日常水位大量服務器閑置;(3)Redis維護和容災成本高。
斗魚混合云架構歷程主要分為三個階段,在探索期做了獨立業務上云的嘗試;在成長期通過IDC+云的方式實現了橫向流量擴容;在成熟期完成橫向擴容之后實現對資源的最大化利用。
 
探索期的主要背景是IDC硬件資源呈現為長期緊缺狀態,研發支撐跟不上業務發展,而公有云逐步成熟。因此在這一階段,斗魚嘗試性選取了廣告業務作為上云試點,并且取得了較大收益,系統的吞吐量直線上升,依賴穩定性顯著提升,計算成本也大幅下降。但是這一模式的適用范圍較窄,無法直接復制到其他業務場景,而且這一模式只適用于單一數據中心的情況,于是就進入了成長期。
成長期的背景是需要解決IDC到公有云的數據通道構建問題。針對這一問題,斗魚和阿里云共同構建了RedisShake數據同步工具,支持了Redis全量、增量數據同步、支持云上、云下不同數據中心的同步,還支持秒級數據監控。通過RedisFullCheck實現了數據多維度對比,基本能保證數據通路的數據一致性問題。這一階段的收益在于實現了單一機房到多機房的數據擴展過程。這個階段存在存在兩點有待改進,即資源調度成本比較高和資源缺乏精細化運營。
成熟期的主要優化方向是職責分離和彈性伸縮,優化方案包括四個方面,即流量分級、數據冷熱分離、彈性伸縮和流量調度。其中調度策略包括了手動調度、定時調度、資源消耗調度和Hook調度。
對于混合云架構而言,斗魚也總結了三點經驗:
? 充分合理評估:云上計算網絡與IDC差異較大,需要結合業務實際情況進行測試,避免產生影響。?
 ? 投入產出比:混合云架構對資源冗余存在一定要求或者帶來一定負面影響。?
 ? 延時問題:企業應通過評估業務的重要性決定是否做混合云,雖然從數據中心到云有專線,但也存在一定延時。
Cassandra&X-Pack Spark云數據庫技術剖析
阿里云智能高級技術專家曹龍(封神)為大家剖析了Cassandra與X-Pack Spark云數據庫技術。
為什么選擇Cassandra呢?Cassandra是一種完全沒有中心的數據庫,其每個節點都是主節點,如果Kill掉其中任何一個節點都不會影響集群的QPS以及延時。除了Cassandra使用的P2P-QUORUM機制之外,還有HA機制、Raft以及單內存副本+共享存儲等機制,而只有Cassandra能夠做到幾乎沒有感知時間,因此Cassandra的Slogan就是“Always Online”。
 
Cassandra能夠實現平滑擴展,一方面可以增加節點數據量,甚至擴展多個DC。另一方面在云上還可以增加內存等。平滑擴展是Cassandra的重要特性,其他數據庫往往難以做到。Cassandra還可以實現全球多DC,架構師可以根據業務自由適配。
對于學習成本而言,Cassandra提供類似于SQL語句的CQL,會MySQL的DBA或者開發人員基本上一天之內就能學會Cassandra。在安全方面,Cassandra和主流數據庫一樣提供了完善的認證以及鑒權體系。在多語言方面,Cassandra采用了非Thrift方式,采用客戶端和服務端直連方式,并且支持主流的語言,并且具有良好的性能。最后一點,就是運維簡單,Cassandra整體只有一個進程,沒有Proxy、HA以ZK等角色節點。
Cassandra具有很多功能,比較特別的就是其索引支持物化視圖、還支持SASI全文索引,并且集成了Lucene做更強的全文索引,以及支持CDC對接流式系統。
 
Cassandra的功能和生態比較豐富,其可以和其他組件進行搭配,比如Spark、Kafka、ES、Lucene、RocksDB等。
Cassandra在寬表領域排名全球第一,即使在國內缺乏宣傳的情況下排名也是靠前的。Cassandra的發展目前已經經過了十年,其將AWS的DynamoDB和Google的BigTable兩者的長處融合在一起形成的。阿里巴巴也在2019年公測并發布了阿里云Cassandra數據庫服務,并且對原生的Cassandra進行了多方面提升,比如實現了自動化運維、兼容DynamoDB、全鏈路優化性能提升100%等。
總結而言,云數據庫Cassandra版是在線可靠的NoSQL可調一致性的分布式數據庫服務,支持類SQL語法CQL,提供強大的分布式索引能力,提供安全、多活容災、監控、備份恢復等企業級能力,兼容DynamoDB協議。
X-Pack Spark不僅僅支持Cassandra,還能夠支持HBase、Phoenix、RDS和MongoDB。X-Pack Spark不僅具有強大的連接能力和歸檔能力,還能夠通過ElasticNode降低計算和存儲成本。
Cassandra+Spark能夠應用于非常廣泛的業務場景中,比如用戶畫像、Feed、小對象存儲以及推薦平臺等。
總結而言,將Spark與Cassandra的優點結合在一起能夠滿足多種業務場景的需求,能夠實現Always Online、擴展性強、好用、功能和生態豐富以及Spark數據閉環。
 
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的云栖干货回顾 | 行业顶级NoSQL成员坐阵,NoSQL数据库专场重点解析!的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: js 限制鼠标移动范围
- 下一篇: 常见地图服务(WMS、WFS、WCS、T
