292
技術社區[雲棲]
人類河流文明 - 數據的流動與生態的重要性
背景
人類社會文明源起於河流文化,人類社會發展積澱河流文化,河流文化生命推動社會發展。
河流文化作為一種人類的文化、文明類型,被人們認知已經經曆了很長的曆史時期,人們把其稱為“大河文明”,尼羅河、幼發拉底河、和底格裏斯河流域的兩河文明、印度河文明、黃河文明。
這些大河文明與人類文明息息相關,是人類文明的源泉和發祥地。河流與人類文明的相互作用,造就了河流的文化生命。河流先於人類存在於地球上,供養生命,使地球充滿生機。
河流與人類社會的關係具有悠久的曆史,河流文化生命概念的提出,擴展了社會調控範圍,引起了一係列的變革。
https://en.wikipedia.org/wiki/Amazon_River
https://baike.baidu.com/item/%E4%BA%9A%E9%A9%AC%E5%AD%99%E6%B2%B3/155637
https://baike.baidu.com/item/%E6%B2%B3%E6%B5%81%E6%96%87%E5%8C%96/3895706
水是生命的源泉,人類依水而居
水是生命的源泉,人類依水而居,水的流動性,使得更多的地球生物可以共享使用,生物賴以生存,哺育了各個時期的人類文明。
數據的流動具有同等重要的地位,數據流動起來,可以讓更多的業務從中受惠,哺育更多的業務,發揮數據更大的價值。
那麼如何讓數據流動起來呢?
河流形態 1 - 流式
從源頭說起
水的源頭通常發源自大的山脈和冰川,例如長江源(三江源之一):即長江的源頭、也即通天河的幾個源頭,在青藏高原腹地昆侖山脈和唐古拉山脈之間。
亞馬遜河流發源地安第斯山脈(蓋丘亞語:Andes;奇楚亞語:Antis)屬於科迪勒拉山係,也稱安弟斯山脈或安蒂斯山脈,位於南美洲的西岸,範圍從巴拿馬一直到智利。從北到南全長8900餘千米,是世界上最長的山脈,縱貫南美大陸西部,素有“南美洲脊梁”之稱,山脈有許多海拔6000米以上、山頂終年積雪的高峰,且地區礦產資源豐富。
數據的源頭,和業務相關,例如和人類相關的業務(電商係統、車聯網、金融係統等等),人類的活動就是數據的來源。
人類活動產生的數據,寫入數據庫,形成數據冰川,為河流的形成奠定了基礎。
為了提高響應速度,提高可靠性,通常數據庫都有預寫日誌係統。從預寫日誌可以解讀出數據的變化,形成冰川融化效應,將這些解讀出來的數據,匯入MQ係統,形成數據的流動。
數據在流動過程中,附著了各種圍繞數據而產生的業務生態,例如流計算、全文索引、二級緩存、監控、大數據平台等等。
confluent是一個開源的數據流平台。
https://docs.confluent.io/current/
PostgreSQL 河流的形成
1、PostgreSQL數據庫端,添加擴展插件,插件的功能是提供將WAL解析為某種格式。
2、搬運工(客戶端),連接PG數據庫,通過流複製協議將PG數據庫解析好的WAL,獲取過來。(支持斷點續傳、支持拖表的已有數據、支持快照和續傳)
3、搬運工(客戶端),將從PG數據庫獲取到的數據寫入Kafka隊列。
4、河流生態,從Kafka消費數據。
PS:
通過創建SLOT(記錄WAL的解析位點),PG支持斷電續傳,同時也支持多個搬運工,不同的搬用工獨立工作,可以搬運重複數據,也可以搬運非重複數據。
當搬運工不在需要時,記得在PG數據庫中刪除對應的SLOT(例如 select pg_drop_replication_slot('bottledwater');)。
其他數據庫河流的形成
與PG類似。
應用案例 - 河流生態
1 數據實時匯聚和分析
例如業務有多個OLTP數據庫(例如本文提到的PostgreSQL、MySQL等),通過本文提到的方法,可以將數據實時的寫入到分析型的數據庫(例如RDS PostgreSQL, HybridDB for PostgreSQL)。
分析人員可以在分析庫中看到延遲較低的在線業務產生的數據。
2 流計算
通過本文提到的方法,將數據實時從OLTP數據庫流出,並流入流計算業務數據庫(例如 pipelineDB),實現數據的實時預警、實時流式計算等。
3 實時索引
將流出的數據,實時寫入全文檢索軟件(例如ES),並實時的創建全文索引。
PS:PostgreSQL數據庫本身還提供了FDW或UDF接口,也可以實現實時的對接ES全文檢索。
或者你可以使用PG自身提供的全文檢索功能(tsvector)。
《PostgreSQL 全文檢索加速 快到沒有朋友 - RUM索引接口(潘多拉魔盒)》
4 實時緩存
使用本文提到的方法,我們可以將數據實時的在緩存係統進行回放,實時的更新緩存。
流式河流的形態,用戶可以使用河流中的數據,但是用完就消失了,你無法對它進行重複享用。因此我們再介紹一種形態,蓄式河流。
河流形態 2 - 蓄式
蓄式河流,數據會永久的存在於河流中,供給生態業務共享使用,阿裏雲的OSS對象存儲是一個海量的蓄式河流。
用戶可以將數據(不管什麼類型的數據)寫入OSS,對接數據消費者,例如阿裏雲RDS PostgreSQL, 阿裏雲HybridDB for PostgreSQL,通過FDW對接OSS,對數據進行分析和使用。
PostgreSQL 具備強大的OLTP能力,同時具備透明讀寫OSS的能力,是蓄式河流生態中數據處理非常重要的角色。業務方可以將它作為數據分析、在線事務處理的數據庫。
HybridDB for PostgreSQL ,具備PG功能的同時,還具備了橫向擴展能力,是麵向OLAP設計的一款產品,分析能力卓越。業務方可以將其作為蓄式河流生態中的數據分析角色。
下麵這幅圖描繪了典型的雲端計算(PG,HDB for PG)和河流(OSS)生態結合的例子。
對於MySQL用戶,可以使用阿裏雲的一個開源軟件rds_dbsync,將數據從binlog解出並實時寫入OSS,然後就可以使用雲端計算(PG, HDB for PG)和河流(OSS)結合。
小結
1、流式河流,即取即釋,數據流過,特別適合生態業務對數據進行實時的處理,例如流計算、生成全文檢索、實時預警、緩存業務。
2、蓄式河流,數據會持久的保存在OSS中,特別適合需要反複使用同一份數據,或者需要將數據分享給多個業務方使用的場景。例如雲端計算(PG, HDB for PG)產品。用戶可以使用這種方法,實現OLTP和OLAP的實時打通。
參考
https://docs.confluent.io/current/
https://github.com/confluentinc/bottledwater-pg
https://www.confluent.io/blog/bottled-water-real-time-integration-of-postgresql-and-kafka/
最後更新:2017-07-07 00:02:37