TiDB 在鳳凰網新聞內容業務的創新實踐

2021-09-11 13:13:13 字數 3124 閱讀 5841

在**行業,新聞內容就是核心的業務資料,我們需要乙個穩定的、具有高可用的、易水平擴充套件的資料儲存系統,來存放公司核心資料,在最早,我們採用比較流行的 mysql 來儲存各個業務模組的內容,通過主從切換的方式進行高可用,但隨著資料量的增加,mysql 單機容量成為了瓶頸,傳統的基於 mysql 分片方案在實現及運維都需要比較昂貴的成本,同時 mysql 主流主從切換方案由於機制問題,在判斷「主庫真死」,「新主庫選舉」及「新路由資訊廣播」上都存在一些不足,整體時間消耗比較大,並不能達到公司核心業務的高可用要求。於是,我們不得不尋找新的解決方案。

前期方案選擇

在選擇評估初期,我們主要有以下幾個考慮點:

1、支援業務彈性的水平擴容與縮容;

2、滿足業務故障自恢復的高可用;

3、支援 mysql 便捷穩定的遷移,不影響線上業務;

4、支援 sql,盡量少的改動**;

在尋找的道路中,我們驚喜的發現了 tidb — 中國人研發主導的開源分布式資料庫。

資料庫容量及擴充套件

記得有這樣一句話:「單機 mysql 能解決的問題,不要使用 tidb !」,我們原有的資料儲存存放於多個 mysql 資料庫中。誠然,對於資料量小的庫來說,一些常見的點查、範圍查 mysql 的效能要比 tidb 的效能好,如果不考慮擴張的問題,短期內使用主從 mysql 比使用 tidb 更滿足我們的線上需求,但是,即使如此,我們也不得不考慮成本問題。將多套線上的主從 mysql 遷移到 tidb,更能充分利用伺服器資源,減少資源的浪費。而對於很多業務來說,擴張問題是不可能迴避的,對資料日益增長的資料庫來說,單錶響應時間會越來越長,而分庫分表的成本過高,**需要改動和測試,即使業務上能接受這一次的操作,那下次擴容呢?tidb 通過底層自動進行分片幫我們解決了這個問題,同時業務量的增加或減少可以通過新增減少節點來處理,**上基本無改動,這也是我們所期望的。

高可用

對於原有的主從 mysql,並沒有配置高可用,我們也對 mha 等第三方工具做過調研,在發生主從切換後,在新路由資訊分發這塊也依賴修改網路配置或者資料庫中介軟體(dbproxy),有一定的時間成本,雖然業界有很多中介軟體方案,但也很多問題和技術成本,所以這個方向並不是我們首選,之前的方式是一旦 mysql 主資料庫宕機,我們通過內部的監控系統獲知,再進行更改 keepalived + haproxy 配置,即使人為響應非常及時,其影響的時間也早已超過業務的容忍。而選擇天然的多節點 tidb 自然就避免了這一點,配合網路 haproxy 完全實現了 db 層面的高可用。前一段時間,我們內部監控系統公升級,其中一台機器沒有對 tikv 新增監控,而該 tikv 節點由於硬體原因服務宕了幾天,我們業務上也未感知,當然這是我們的失誤,但是也側面反應了 tidb 自身的高可用機制。

osc 問題

遷移 tidb

節點遷移

tidb 的線上節點遷移。我們線上的部分 tidb 是使用 binary 部署的,且版本過老(2016 年的版本),無法進行及時的自動化公升級,因此當我們涉及到機房遷移的時候,會擔心是否會影響服務。好在遷移涉及的是無狀態的 tidb 節點和儲存元資料的 pd 節點,在對 pd 節點一上一下逐步增加減少驗證無誤後,啟動新機房中的 tidb 節點,經 haproxy 層灰度上線幾台後,下掉原有的 tidb 節點,完成遷移。

官方強力支援

當然,雖然官方提供的遷移方案很友好,但在學習了解、實際操作階段也免不了磕磕絆絆,之前很長一段時間內我們並沒有與 pingcap 公司取得聯絡,但當我們出現遷移問題的時候,我們選擇求助官方,他們非常迅速的響應了我們,解決了線上遷移因 etcd 導致的 pd 節點去除故障,而且還安排了架構師來我們公司進行技術交流,錦上添花不如雪中送炭,當時我們在與官方人員溝通時,深深體會到了這一點。

tidb 資料庫的穩定性還是非常不錯的,在我們和官方取得聯絡的時候,我們使用的 beta4 版本也已穩定執行了近 220 天。

tidb 目前環境

目前我司有三套 tidb 在使用,均為 oltp 業務。其中前兩套使用 binary 安裝的遠古版本(beta4),第三套才是tidb ga 版本,通過官方 ansible 進行的部署。

在與官方溝通中獲知,兩套遠古版本(beta4)由於距離現有版本太多需要進行遷移公升級,官方也十分願意為我們提供技術支援,在此,就先謝過官方的幫助,顯然,對我們來說後續也少不了麻煩。

一點吐槽

tidb 的出現,幫我們跳過了傳統的 sharding + proxy 的路線,給我們節省了巨大的技術成本,我們對 tidb 非常的鍾愛,但在接觸、使用 tidb 過程中,我們也遇到一些問題。即使官方對於伺服器配置有明確的要求(ssd 以上硬碟),但對我們公司內來說,剛開始很難申請到高效能的機器來進行 tidb 功能性測試,和學習、熟悉 tidb 的搭建、擴容、遷移等操作,於是在剛開始,我們拿幾台低效能的測試機,使用 loader 匯入資料進而進行增量測試的時候,出現了報錯,tidb 的報錯資訊並沒有提醒我這是由於機器效能低引起的,而在官方文件中,也沒有這方面的引導,這導致我們反覆匯入測試多次,問題依然存在,後才考慮可能是機器效能導致的(官方已經在最新的 ansible 安裝指令碼中做了硬體的效能檢測),於是申請了幾台高效能機器進行複測,驗證確實是因為機器效能導致。後在與官方人員溝通時得知,**整個 tidb 架構是面向未來、面向海量資料高併發場景,底層儲存技術(如資料定位 seek)都是針對當前主流的 ssd 進行設計和優化的,不會對傳統的 sata/sas 機械硬碟再進行優化。**至於官方文件和報錯資訊,他們也在持續快速的更新中。

在與官方進行詳細溝通,聽取官方架構師的分享後,我們近期打算再上 2-3 套 tidb 集群對眾多不同業務線主從 mysql 進行整理歸納,這樣不但可以逐步統

一、規範資料庫的使用,而且還可以大大減少機器資源浪費,運維成本,同時借助 tidb 實現我司資料庫的高可用。而在聽取分享的其他部門的小夥伴也已經行動起來,對於我司乙個重點 oltp 新專案,已經確定使用 cloud tidb(在 k8s 上部署 tidb )作為資料庫系統。同時我們了解到,tidb 不僅僅滿足 oltp 業務,它還能滿足很多 olap 業務場景,聽完分享後,大資料組小夥伴也在躍躍欲試中。

未來,我們將加強與 pingcap 官方的溝通交流,進行更深入的研究和開發,持續提公升 tidb 的效能,將它全面應用到鳳凰網業務中。

TiDB 在鳳凰網新聞內容業務的創新實踐

在 行業,新聞內容就是核心的業務資料,我們需要乙個穩定的 具有高可用的 易水平擴充套件的資料儲存系統,來存放公司核心資料,在最早,我們採用比較流行的 mysql 來儲存各個業務模組的內容,通過主從切換的方式進行高可用,但隨著資料量的增加,mysql 單機容量成為了瓶頸,傳統的基於 mysql 分片方...

鳳凰網招聘二分查詢python實現

設有一組關鍵字序列,使用二分 折半 法查詢關鍵字93需要進行多少次比較 a.2 b.3 c.4 d.5 分析 二分查詢基本思想為 在有序序列中,取序列最中間的元素作為比較物件,若給定值與中間記錄的關鍵碼相等,則查詢成功 若給定值小於中間記錄的關鍵碼,則在中間記錄的左半邊繼續查詢 若給定值大於中間記錄...

網龍網路公司獲評鳳凰網「年度影響力教育集團」

8月16日,由鳳凰網財經 鳳凰網港股聯合主辦的 鳳棲梧桐教育行業 上市公司 資本與發展高峰論壇 在京舉行,吸引了來自國內教育培訓行業 教育科技產業中的領軍企業前來參會。此次大會,網www.cppcns.com龍網路公司獲評 年度影響力教育集團 網龍網路公司ceo熊立程式設計客棧博士在會上發表主題演講...