現現在已經進入大數據時代,各類系統、應用、活動所產生的數據浩如煙海,數據再也不僅僅是企業存儲的信息,而是成爲能夠從中獲取巨大商業價值的企業戰略資產。這樣背景下,如何存儲海量複雜的數據、從紛繁錯綜的數據中找到真正有價值的數據,是大數據時代企業面臨的難題。算法
8月18日的「UCan下午茶」杭州站,來自UCloud、網易、華爲的五位技術專家,從數據庫高可用容災方案設計和實現、新一代公有云分佈式數據庫、基於Impala平臺打造交互查詢系統等不一樣維度出發,分享了他們在大數據查詢、分析、存儲開發過程當中遇到的「困惑」與解決方案。數據庫
UCloud丁順:數據庫高可用容災方案設計和實現編程
高可用容災是搭建數據庫服務的一個重要考量特性,搭建高可用數據庫服務須要解決諸多問題,保證最終的容災效果。UCloud雲數據庫產品UDB在研發演進過程當中,根據用戶的須要不斷完善和演進,造成了一套完善的高可用架構體系。緩存
UCloud資深存儲研發工程師丁順從高可用數據庫概述、典型的高可用架構分析以及高可用數據庫自動化運維等角度,講述瞭如何設計和運營一套完善的數據庫高可用架構,保證在出現異常時可以及時恢復數據庫服務。服務器
業界典型的高可用架構能夠劃分爲四種:第一種,共享存儲方案;第二種,操做系統實時數據塊複製;第三種,數據庫級別的主從複製;第三,高可用數據庫集羣。每種數據同步方式能夠衍生出不一樣的架構。微信
第一種,共享存儲。共享存儲是指若干DB服務使用同一份存儲,一個主DB,其餘的爲備用DB,若主服務崩潰,則系統啓動備用DB,成爲新的主DB,繼續提供服務。共享存儲方案的優勢是沒有數據同步的問題,缺點是對網絡性能要求比較高。 第二種,操做系統實時數據塊複製。這種方案的典型場景是DRBD。以下圖所示,左邊數據庫寫入數據之後當即同步到右邊的存儲設備當中。若是左邊數據庫崩潰,系統直接將右邊的數據庫存儲設備激活,完成數據庫的容災切換。這個方案一樣有一些問題,如系統只能有一個數據副本提供服務,沒法實現讀寫分離;另外,系統崩潰後須要的容災恢復時間較長。網絡
第三種,數據庫主從複製。這種方案是較經典的數據同步模式,系統採用一個主庫和多個從庫,主庫同步數據庫日誌到各個從庫,從庫各自回放日誌。它的好處是一個主庫能夠鏈接多個從庫,能很方便地實現讀寫分離,同時,由於每一個備庫都在啓動當中,因此備庫當中的數據基本上都是熱數據,容災切換也很是快。 第四種,數據庫高可用集羣。前面三種是經過複製日誌的模式實現高可用,第四種方案是基於一致性算法來作數據同步。數據庫提供一種多節點的一致性同步機制,而後利用該機制構建多節點同步集羣,這是業界近年來比較流行的高可用集羣的方案。 UCloud綜合了原生MySQL兼容、不一樣版本、不一樣應用場景的覆蓋等多種因素,最終選擇採用基於數據庫主從複製的方式實現高可用架構,並在原架構基礎上,使用雙主架構、半同步複製、採用GTID等措施進行系列優化,保證數據一致性的同時,實現日誌的自動尋址。架構
自動化運維是高可用數據庫當中的難點,UDB在平常例行巡檢以外,也會按期作容災演練,查看在不一樣場景下數據是否丟失、是否保持一致性等,同時設置記錄日誌、告警系統等等,以便於第一時間發現問題,並追溯問題的根源,找出最佳解決方案。負載均衡
UCloud劉堅君:新一代公有云分佈式數據庫UCloud Exodus框架
公有云2.0時代,雲數據庫新產品不斷涌現。諸如AWS Aurora、阿里雲PolarDB等,UCloud在採用最新軟硬件和分佈式技術改造傳統數據庫的工做中,也在思考除了分佈式數據庫所要求的更大和更快以外,是否還有其餘更重要的用戶價值?UCloud資深數據庫研發工程師劉堅君,現場講解了UCloud對於新一代公有云分佈式數據庫的思考與設計。
劉堅君首先從1.0時代存在的問題入手,他認爲1.0時代雲數據庫帶來了三方面價值:彈性、故障救援、知識複用。但它一樣面臨三大難以解決的問題:容量和性能、租用成本、運營成本。
到2.0時代,解決上述三個問題的思路是計算和讀寫分離。經過計算和讀寫分離,將傳統數據庫的計算層和存儲層拆開,各自獨立擴展和演進。這樣作的好處是:1.提供更大的容量和讀寫性能;2.按需擴容和付費;3.優化運營成本並下降運營風險。業界已推出的2.0雲數據庫(如Aurora、PolarDB等),均採用計算和存儲分離的架構。
UCloud Exodus的產品和技術理念則更進一步:計算和存儲分離後,存儲層將徹底複用雲平臺的高性能分佈式存儲(如UCloud UDisk、阿里雲盤古等),而Exodus則專一於構建一款數據庫內核,去適配主流公有云和私有云廠商發佈的高性能分佈式存儲產品。Exodus的這種產品架構,稱之爲Shared-ALL-DISK架構。
Shared-ALL-DISK架構的優勢明顯,在提供雲數據庫2.0創新功能的同時,賦予用戶業務自由遷徙的能力,不被某個雲平臺綁架,同時可以鏈接上下游的軟硬件廠商,共建Exodus數據庫生態。
更爲重要的是,Exodus將最終將開源, UCloud會將核心系統的每一行源碼開放,賦予用戶深刻了解和優化Exodus的能力。並建設開源社區,吸取全行業的優化成果,共同改進和完善Exodus。
網易蔣鴻翔:基於Impala平臺打造交互查詢系統
在數據分析當中,由於數據基數龐大、關係模型複雜、響應時間要求高等特性,數據之間的交互查詢就顯得尤其重要。來自網易的大數據技術專家蔣鴻翔現場從交互式查詢特色着手,深刻淺出講解了Impala架構、原理,以及網易對Impala的改進思路和使用場景。
Impala是Cloudera公司主導開發的新型查詢系統,它提供SQL語義,能查詢存儲在Hadoop的HDFS和HBase中的PB級大數據。已有的Hive系統雖然也提供了SQL語義,但因爲Hive底層執行使用的是MapReduce引擎,仍然是一個批處理過程,難以知足查詢的交互性。相比之下,Impala可以很快速的實現數據查詢。下圖是一個Impala的架構圖。
Impala擁有元數據緩存、MPP並行計算、支持LLVM與JIT以及支持HDFS本地讀、算子下推等特性。但它也有一些缺陷,如服務單點、Web信息沒法持久化、資源隔離並不精確、負載均衡須要外部支持等。
網易針對上述不足之處,在原有的Impala查詢系統下,進行了系列改進優化:
基於ZK的Loadbalance。原始的Impala負載均衡須要外部支持,爲此網易基於ZK作了一個Loadbalance方案; 管理服務器。主要爲了解決當某一個節點掛掉時數據丟失的問題,管理服務器會將全部的狀態信息蒐集進來,後續若是作分析均可以經過關聯的服務器查詢; 細粒度權限和代理; Json格式; 兼容Ranger權限管理; 批量元數據刷新; 元數據同步; 元數據過濾; 對接ElasticSearch查詢。 據蔣鴻翔介紹,改造後的交互查詢系統,已經成功應用於網易數據科學中心的一站式大數據平臺自助查詢系統上。同時,數據分析中心的一站式報表系統底層,也搭載在Impala上。相信將來,基於Impala的查詢系統將會應用於更多不一樣的場景。
UCloud王僕:UCloud分佈式KV存儲系統
分佈式KV存儲系統在互聯網公司中扮演着重要角色,各種上層業務對於KV存儲系統的高可用性、可擴展性和數據一致性都有着很高的要求。UCloud存儲部門在迭代升級分佈式Redis架構的同時,也一直致力於研發基於硬盤存儲的大容量分佈式KV系統。來自UCloud的技術專家王僕,着重介紹了UCloud在大容量分佈式KV系統設計方面的經驗,以及應對線上業務高性能、高容量要求的系統架構設計思路。
下圖爲UCloud分佈式KV存儲系統架構,底層爲多個Storage,每個Storage有三個節點,這三個節點須要放在不一樣的物理機上,防止一臺機器宕機後系統不可用;標紅框的屬於Master節點,Master節點經過日誌同步的方式,同步到層節點,整個數據的請求從Proxy進入。
整個系統是有中心節點的系統,路由管理由Master來管理,Master經過每一個機器上的Host管理Storage節點,由Zookeeper肯定誰是主誰是從,所以,一些管理方面的請求都是直接鏈接到Master上的,包括建立、刪除和控制檯方面的功能等。
在測試過程當中也發現了一些性能方面的問題,如採用的部分Raft協議是單Raft,設計之初並無實現並行Raft功能,所以數據同步較慢;其次,請求是經過代理的方式實現,代理的延遲會比直接訪問的延遲更高,後期,會考慮提供一些客戶端的SDK,讓請求能夠跳過代理,減小一次網絡交互。
在KV系統的後續優化上,王僕介紹到,爲了可以將存儲系統應用於更多不一樣的業務場景,將來會考慮更高的通用性,適配多種的存儲引擎;另外,由於Redis比較流行,系統設計之初主要是支持Redis,可是業界還有一些其餘協議,這時候須要特殊的轉化流程,將來但願作成一個支持各類協議的通用結構化存儲系統,適配其餘不一樣協議。
華爲時金魁:實時流計算技術及其應用
隨着Flink/Spark Streaming的大受歡迎,實時流計算開始爲人熟知,進入大衆視野。流計算在物聯網行業、車聯網、智慧城市等行業快速落地,亦創造出愈來愈多的價值。來自華爲的架構師時金魁,現場分享了實時流計算的一些技術方案和落地應用。
在傳統的數據處理流程中,老是先收集數據,而後將數據放到DB中。當人們須要的時候經過DB對數據作query,獲得答案或進行相關的處理。這個流程看起來雖然合理,可是結果卻很是的緊湊,尤爲是對於一些實時搜索應用環境中的某些具體問題,相似於MapReduce方式的離線處理並不能很好地解決問題。這就引出了一種新的數據計算結構—流計算方式。它能夠很好地對大規模流動數據在不斷變化的運動過程當中實時地進行分析,捕捉到可能有用的信息,並把結果發送到下一計算節點。
目前,業界開源的流計算框架不少,最先有Storm、Heron,後來還有Akka,Beam,以及如今的Kafka等等。在諸多的開源框架中,時金魁認爲,Flink是最恰當的流計算框架,Spark Streaming則是最有潛力的流計算框架,但這兩個框架在落地應用中都有各自的優缺點。
華爲根據Flink與Spark框架各自的特色,摒棄其劣勢,設計開發出一款全新的實時流計算服務Cloud Stream Service(簡稱CS)。CS採用Apache Flink的Dataflow模型,實現徹底的實時計算,同時,採用在線SQL編輯平臺編寫Stream SQL,定義數據流入、數據處理、數據流出,用戶無需關心計算集羣, 無需學習編程技能,下降流數據分析門檻。下圖爲華爲的實時流計算服務概覽圖。
據介紹,CS聚焦於互聯網和物聯網場景,適用於實時性要求高、吞吐量大的業務場景。主要應用在互聯網行業中小企業、物聯網、車聯網、金融反欺詐等多種行業應用場景,如互聯網汽車、日誌在線分析、在線機器學習、在線圖計算、在線推薦算法應用等。
總結
雖說開源軟件由於其強大的成本優點而擁有極其強大的力量,數據庫、雲計算廠商仍會嘗試推出性能、穩定性、維護服務等指標上更增強大的產品與之進行差別化競爭,並同時參與開源社區,借力開源軟件來豐富本身的產品線、提高本身的競爭力,並經過更多的高附加值服務來知足部分消費者需求。
總的來看,將來的大數據分析技術、存儲將會變得愈來愈成熟、愈來愈便宜、愈來愈易用,相應的,用戶將會更容易、更方便地從本身的大數據中挖掘出有價值的商業信息。
想要獲取更多技術和活動資訊,可關注 「UCloud技術公告牌」;或搜索微信ID:ucloud_tech進行關注。