數據庫

波尔多液用量配制方法:平安科技數據庫總經理汪洋:開源數據庫在平安的應用實踐

本文轉自 | 平安科技數據庫產品團隊

2019年5月9日,平安科技數據庫產品及存儲產品部總經理在第十屆數據庫技術大會DTCC上分享了《開源數據庫在平安的應用實踐》,本文根據演講內容整理,圍繞以下幾個方面進行分享:

1.平安為什么要使用開源數據庫?

2.使用開源數據庫,需要投入哪些成本?

3.如何選擇合適的開源數據庫?

4.引入和應用開源數據庫的策略是什么?

5.平安的開源數據庫架構如何?

6.三個開源數據庫在平安的具體應用案例

汪洋 平安科技數據庫產品及存儲產品部總經理

很高興在DTCC十年的節點上,又回到北京,站在這個臺上跟大家分享,我一直對DTCC是有感情的,因為我本身是北京人,但是離開北京已經20多年了,每年借著DTCC可以回家看看。

我叫汪洋,來自平安科技,在平安科技負責兩個團隊,存儲產品團隊和數據庫產品團隊,這兩個產品團隊全都跟數據有關。平安科技是平安集團的全資子公司,它有三個職能,一個集團的高科技內核,二是創新孵化器,這兩年也開始將技術和服務對外輸出。

我在平安科技做了8年,今天我講的是平安在開源數據庫方面的應用實踐,對于很多金融公司來講,受到一行兩會的監管,在采用開源數據庫的時候,基本保持觀望的態度;而任何一家組織架構的轉型,包括引入一些新的技術,都是有風險的,尤其是對于金融公司,大家都知道,平安集團就是一家綜合金融公司,它覆蓋了金融產品的方方面面。

那么為什么平安在這種情況下開始引入架構的轉型,開始引入一些開源數據庫,并且在內部推廣?希望我今天的分享能給金融同業或其他公司帶來一些借鑒。

一、平安為什么要使用開源數據庫?

1.微服務架構的崛起

在2013-2014年的時候,很多像平安這樣的傳統公司都在探索怎么樣進行互聯網轉型,那時Gartner提出雙模式發展,雙模式發展就是為了適應傳統企業向互聯網轉型的需要,一方面企業對于傳統的應用系統仍然需要三高,即高可用高可靠高性能;另一方面要快速響應,在自己的領域內能夠向互聯網轉型,這就要求敏捷開發,敏捷交付。這個時候過去的單體架構帶來很多問題:

  • 開發周期很長,上線時間長,推向市場時間變很長
  • 變更風險大,因為單體架構,牽一發而動全身
  • 很難進行擴容,特別是根據不同的組件進行擴容

而微服務架構的崛起,能夠把一個單體架構拆成各個???,針對??榻欣┤?,因為每個??橛脅煌母涸靨匭?,??櫓涫撬膳己系?,微服務架構的崛起就帶來它底層的持久化存儲的需要。

2.混合持久化解決不同數據存儲需求

微服務架構帶來了多態性的存儲。為什么會有多態性,因為我們的數據不再向以前一樣:以前的我們追求高一致性,都是企業化數據;但是在很多互聯網場景下我們做秒殺時并不需要那么高的一致性,它的數據格式也是不一樣的,因此也出現了不同的存儲引擎,隨著微服務的發展,可根據他自己的特性、數據格式、采取不同的數據庫。

3.One for all時代已經過去

現在不是One for all,而是Best fit

每個業務場景都有特定的數據庫。

所以我說技術沒有對錯,沒有最好,只有適合業務場景的技術。

4.傳統商業數據庫架構過于沉重

以Oracle為例,大約二十年前我學習的時候只有幾本書,現在的書可能一個房間都裝不下,安裝Oracle軟件也是,都很大,但是裝MySQL,都是輕量的,只有幾十或幾百兆,部署也相對簡單,這有利于快速試錯,快速把市場需求轉換為產品原型,快速推向市場。總之技術都是服務于業務。

還有我們是被開發人員倒逼,他們為了滿足業務需求使用開源數據庫,如果運維方面跟不上的話,運維會成為背鍋俠,因為最終生產出問題是落在了運維身上。

二、使用開源數據庫,需要投入哪些成本

從整體看,開源數據庫并不是免費的,使用開源數據庫是一個循序漸進過程,在使用開源數據庫時不能犧牲系統穩定性,因此需要許多其他方面的成本投入。

學習成本:學習成本是針對開發和運維人員的,因為數據庫對開發人員從來不是一個黑盒子,當數據庫體量變大時,肯定會遇到各種各樣的問題,所以開發和運維都存在一個學習周期。

遷移成本:雖然世面上很多遷移工具可以節省開發人員的投入,實際上這些工具沒有盡善盡美,特別是在代碼遷移上,雖然轉換過來功能可行,但你會發現代碼幾乎是不可讀的。

所以寧愿把業務邏輯重構,重新看一遍,再用新數據庫語法重新寫一遍,在遷移過程中,數據遷移占小,代碼遷移才是大頭。

維護成本:需要對數據庫有很深的了解,才能在發生問題時快速定位,解決問題,事件響應機制、監控指標等都是維護成本。

時間成本:掌握開源技術也需要一個過程,充分應用現有開發和運維技術,比如我當初為什么會選PostgreSQL,PostgreSQL對現有一直在Oracle系統上的運維和開發團隊來說,學習曲線是相對來說比較短,能夠快速進行遷移。

增加的運營成本及風險:增加運維成本的風險,人員招聘、人員培訓都有一個周期,數據庫團隊、產品、運維機制都需要在生產環境中不斷的錘煉,才能變得不斷完善、成熟。

三、如何選擇合適的開源數據庫?

業務場景的需求:每個數據庫都是服務一個業務場景的需求,平安集團的好處是業務場景非常豐富:產險、壽險、養老險、壹錢包、健康互聯網、智慧城市等,我們可以在業務場景中充分的驗證這些開源數據庫,哪些數據庫適用于哪些業務場景,在場景中不斷的打磨運維和開發團隊。

有適合的替代方案:你在使用的數據庫有沒有合適的替代方案,比如我想從Oracle遷移出來,選擇什么數據庫,在四五年前,我選擇的是PostgreSQL,現在證明當時的決定是對的,你可以看到AWS有很多RDS服務,所有遷移的方案,都是從Oracle遷移到PostgreSQL,也就是說PostgreSQL跟Oracle是相近的,他們間的遷移成本和學習成本都相對是較少的。

我們現有開發人員的技能:過往有過Oracle經驗的開發比較容易遷移到PostgreSQL。

現有數據庫的負載模式:根據每個系統負載類型可以選擇不同的開源數據庫。

開源社區活躍度:如果你選擇一個開源數據庫活躍度不高,你心里沒底,你不知道它能不能發展下去,我們選擇開源數據庫希望盡可能的能用很長時間。

市場份額及行業知名度:數據庫處于出生期、成長期、成熟期、老年期的哪一個區域,需要了解它的生命周期,了解它在國外國內的一些應用情況來增加使用信心。

開發語言:數據庫本身的開發語言,能否匹配到現在團隊成員所具備的技能。運維需要快速定位問題發生在哪一步,研發人員需要對開源數據庫的代碼進行改造,讓他更適配應用場景,所以開發語言也是考慮因素。

數據庫類型:我們在布局整個數據庫組合時,要考慮在哪些數據庫類型上進行布局,有很多數據庫類型,但不是每個數據庫類型都需要,所以需要選擇。

數據庫技術的發展趨勢:希望所選擇的數據庫是未來技術發展的趨勢。

不要使用太多的開源產品:如果數據庫種類太多也會增加運維成本,因為每一個數據庫都需要學習成本,在滿足業務場景的需求下選擇盡可能少的數據庫產品,盡量做到標準化。

四、引入和應用開源數據庫的策略是什么?

現有的系統是已經運行生產的系統,它對運行的可用性有較高的要求,不能因為引入開源數據庫就對系統性能造成影響。應該按照重要性進行分類,平安根據數據庫按重要性分為3類。

不同業務線開放程度不一樣,平安一些傳統的大公司,如壽險、產險、銀行,他們相對來說比較謹慎;但是一些互聯網公司,如陸金所、壹錢包、健康互聯網,他們比較積極進取,愿意進行新技術的嘗試,當然要確保不會對業務造成大的影響,完善后再推廣到傳統公司。

數據庫產品團隊有一百多人,不太現實讓每個人都去掌握多種數據庫,特別在剛開始的時候,我會讓一兩個人去負責某個數據庫產品,以點帶面去對其他開發人員進行培訓。其他的比如制定數據庫架構、運營和開發的指南手冊;對運營、開發以及DBA提供培訓。

另外,持續進行架構優化;積累開發和運營經驗;學習源代碼;建立自己的研發團隊;加入開源社區,這些都是在引入時需要有一定的計劃。

以下是平安各業務使用的不同類型開源數據庫的選型策略。

五、平安的開源數據庫架構如何?

六、三個開源數據庫在平安的應用案例

第一個案例是我們今年在1月8號 產險“財神節”活動使用TiDB,25個節點的集群,有主從兩套架構,包括TiDB、TiKV,總共25個節點,主從之間通過BinLog做到異步同步。

業務高峰期數據,如每秒10000+DML、平均每秒1000單、紅包秒殺TPS3000等。單從TPS來看,數據不是很大,但對于每個業務場景,要看相對值而不是絕對值,因為每一個Transaction的復雜度是不同的,對于產險,一個Transaction中有多達上百個SQL語句。

其實這個產品當時搭建了25個節點,我們的標準規格是NVMe,一時很難找到這么多的NVMe機器,因此采用SSD,也是很好的滿足了產險秒殺活動的需要。

第二個案例是壽險客戶管理系統基于我們自研的DRDS。因為客戶信息數據非常重要,所以我們是把寫的負載仍然放在Oracle,然后是實現讀寫分離,讀是用另外一個數據庫集群、另外一個資源來實現,并且是在這個讀上面來使用單獨的架構,這是35個節點的集群,15個節點是記錄客戶信息的變化,20個節點是記錄保單信息的。通過客戶服務和保單服務,來實現兩個DRDS的集群,當客戶查詢的時候,就是去相應的集群上訪問查詢。

InfluxDB是時序數據庫中的佼佼者,時序數據庫發展前景也是非常不錯的,特別是在IoT時代,不停有大量的數據產生,對這些數據存儲需要能支持高并發的寫入,它具有非常強的優勢;另外根據時間序列對數據進行分析聚合,在實際場景中也得到廣泛的應用。

我們自己的數據庫產品團隊,是將它用在了監控系統上,去采集很多數據,我們現在有更多的監控對象,如cpu、memory、nginx、I/O、各種數據庫等。InfluxDB的寫入性能每秒可達到35w,這在關系型數據庫里面,單機的、在有index的情況下,很難想象能達到每秒35w?;褂脅⒎⒉檠隤ostgreSQL相比的數據,時序數據庫還是有比較明顯的優勢。

七、發展路徑

引入眾多開源數據庫之后,我們在平安云上,通過Cloud Database的方式,對外提供服務。一個方向是我們現在正在做云數據庫容器化的部署,以期達到更高密度的部署、更強的自愈能力、更容易擴展的價值。

另一個方向是更多自研數據庫產品,基于這些數據庫產品開發出自主可控的數據庫,比如基于分布式KV數據庫開發出圖數據庫產品。

最后一個就是剛剛提到的Cloud Database,云提供商是有天然的做AIOps的優勢,因為做AI最重要的就是數據,數據量要大,而且數據樣本要非常豐富,小的公司要做AIOps是不太可能的,所以我們可以基于平安云來收集這些數據庫的運營信息,結合人工智能和機器學習,進行更精細的異常檢測、故障預測,能夠進行更精細化的資源管理,來不斷完善我們的產品。

以上,就是我今天關于平安在開源數據庫方面的應用實踐的一些分享,謝謝大家!

我還沒有學會寫個人說明!

傳統災備的痛大家都懂,阿里云定義企業級云災備

上一篇

微軟停止與華為合作:Windows 暫停供應新訂單

下一篇

你也可能喜歡

平安科技數據庫總經理汪洋:開源數據庫在平安的應用實踐

長按儲存圖像,分享給朋友

ITPUB 每周精要將以郵件的形式發放至您的郵箱


微信掃一掃

微信掃一掃