智慧油客:從初識、再識OceanBase,到全棧上線

今天,我們邀請了智慧油客的研發總監黃普友,為我們講述智慧油客與 OceanBase 初識、熟悉和結緣的故事。


智慧油客自2016年誕生以來,秉持新零售的思維,成功從過去二十年間以“以銷售產品為中心”的傳統思維模式,轉向“以運營客戶為中心”,并且依托智能大數據,驅動業務精準運營,致力于推動能源零售行業實現全面的產業升級。智慧油客全棧 SaaS 服務體系目前已幫助數萬加油站完成產業升級,為加油站提供了全新一代的自動化智慧油站運營服務,集進銷存業務運營、會員客戶管理、自屬移動互聯網平臺營銷、聚合支付、財務管控、大數據和人工智能分析等技術為一體。目前已覆蓋全國 30 個省級行政區,服務 1 萬多座油站、3000 多萬車主,每天訂單量超過 100 萬單。

初識 OceanBase

2021 年中旬,機緣巧合之下,智慧油客接觸到國產分布式數據庫產品 OceanBase,經過那次溝通交流,我對 OceanBase 有了簡單的了解和認識,原來當年阿里的去 IOE、每次雙十一大促的數據庫功臣叫 OceanBase,其經歷了 11 年的自主研發,是螞蟻全棧都在使用的一款企業級原生分布式數據庫。

這次交流后,我對 OceanBase 一些特性比較感興趣,如高可用、高性能、可擴展、低成本、云原生、高度兼容 SQL 標準和主流關系型數據庫生態等特點,對于企業比較吸引人,同時它也是全球首家通過 TPC-C 和 TPC-H 測試的分布式數據庫。

隨后我去查看了 TPC 的官方網站:TPC-C 連續兩年蟬聯第一,超越 Oracle 性能 20 多倍,這個結果對于一款純國產數據庫來說,頗有一些揚眉吐氣的感覺,霸榜多年的 Oracle 被中國的產品完勝超越。

在當時的時間點,智慧油客正處于業務快速發展階段,全線業務快速迭代,同時數據是智慧油客的立命之本,切換數據庫對于我們還是需要謹慎和評估,因此當時未投入成本去驗證產品。

后話:如果當時選擇 OceanBase,可能就沒有后面的一些小插曲。

再識 OceanBase

2022 年,剛剛過完忙碌的春節,OceanBase 團隊再次約見。

調研分布式數據庫

在這次交流前,針對之前介紹的分布式數據庫專門去做了一些調研。畢竟分布式數據庫的出現和發展沒有幾年,技術是否成熟,產品是否過硬,有多少客戶案例,客戶實際體驗如何,這些都是問號。帶著這些問題,我們對分布式數據庫市場進行了一些技術預研。

首個分布式關系型數據庫誕生于 2012 年,Google 發布 Spanner,打造的全球分布式數據庫,承載 Google 自身的全球業務,代碼閉源,近發布論文說明其架構原理,Shared Nothing 無共享模式是純粹分布式的體現、ACID 是關系型數據庫的基礎,MVCC 是并發訪問的保障。自此開創了分布式關系型數據庫的元年,這樣算來分布式關系數據庫的發展也近十年的歷史。

再看 OceanBase,Shared Nothing、ACID、MVCC 等等,分布式一致性協議為 Paxos,不由得想起 Google 的 Chubby 作者 Mike Burrows 的那句話:“There is only one consensus protocol, and that's Paxos”(世界上只有一種一致性算法,那就是 Paxos)。從數據庫架構上來看,滿足了關系型數據庫的各類特性,同時也具有分布式的擴展性、一致性的特點。

OceanBase 官網也有很多產品資料和手冊,頗有 Oracle 官方手冊的規范性,面向 DBA 的、面向開發的等資料一應俱全。案例介紹、解決方案、培訓中心等各個板塊也都有清晰的分類,之前的疑問基本打消了一半。

小插曲:智慧油客經過多年的快速發展,數據量級已經達到了單實例 MySQL 的上限,因此去年 10 月份,我們對 MySQL 云實例進行了升級,采用計算存儲分離的 MySQL,對數據庫存儲擴容,同時采用一主三從架構,以應對數據的爆發式增長。

春節的返鄉潮,連續多日出現加油高峰,瞬時流量突發性增長,此時數據庫卻成為我們的拖累,執行計劃未走索引,SQL 命中低,硬解析升高,負載急劇上升,延遲飆高,甚至出現了數據庫宕機罷工,嚴重影響了客戶加油體驗,我們的研發團隊,在這個春節加班加點保障服務 SLA,在大年初一終于扛過這一波業務高峰。

后來,通過 OceanBase 解決方案架構師對產品的詳細介紹,同時結合我們業務規劃和之前遇到的痛點為我們的數據庫摸脈問診,讓我們對 OceanBase 有了一些信心,當時我們比較堅持的即使切換數據庫也不會選擇 MySQL 內核數據庫,而 OceanBase 完全自主研發,不基于任何數據庫內核,內核引擎同時支持 MySQL 和 Oracle,這在數據庫產品中也是獨一無二。

最終,我們決定詳細測試和驗證 OceanBase 數據庫,看是否能夠給我們帶來額外驚喜。

全業務驗證 OceanBase

我們組織了專項團隊進行 OceanBase 驗證測試,包括全鏈路、全業務的功能驗證,性能壓測。

首先,通過 OceanBase 生態產品 OMS 進行數據遷移,將我們的真實生產數據遷移到 OceanBase,OMS 產品支持結構遷移、全量遷移、增量遷移、全量校驗等功能,一站式解決了數據庫遷移和驗證等問題。我們遷移了線上 5TB 的數據,到了 OceanBase 整個存儲僅 1.1TB,近 20% 的壓縮率確實給我們一個不小的驚喜,直接存儲成本下降 80%,對于一個重數據成本的公司,成本下降顯著。

OMS數據遷移產品

  • 兼容性

OceanBase 自主研發,未基于任何數據庫內核,這一點反倒讓我們擔心其兼容性,因為語法兼容度越高,業務代碼的改造成本越小,我們的業務快速迭代,如果因為切換數據庫而投入過多人力,得不償失。

根據 OceanBase 團隊的介紹,OceanBase 支持 MySQL 5.7 絕大部分語法,同時官網也有詳細的 MySQL 兼容項對比。我們的生產庫采用 5.6 版本,對后續測試我們還是比較樂觀。

經過我們測試團隊全量的集成測試,發現了幾個不兼容項,比如table的大小寫問題,插入時間戳的默認值的問題,函數兼容性等問題,對于一個新的數據庫產品,我們本著嚴格篩選的原則,將這些問題一一反饋 OceanBase 專家,沒想到 OceanBase 做到了 MySQL語法兼容的同時,很多參數、變量也都沿用了 MySQL 的傳統,對于學習成本和維護成本也都沒有太多壁壘,最終僅通過參數和變量的調整均得到了解決。

  • 性能壓測

智慧油客的業務中,智慧支付是客戶體感最強烈的環節,服務與賦能加油站企業,首先是能讓車主順暢加油快捷支付,其次才是為車主和油站提供附加服務和運營管理能力。因此針對訂單、支付、油價查詢等高頻場景進行了針對性的壓測,對高并發高流量場景進行驗證。

測試集群采用 OceanBase 公有云 14C70G 規格,OceanBase支持多租戶資源隔離,在該集群上開了三個租戶,其中壓測的租戶規格僅 8C48G 資源。

首先開啟 30 個并發小試牛刀,這個并發下對數據庫完全沒有壓力,TPS、QPS 各項平穩,壓測場景中測試數據集中,存在熱點行,但此時依靠準內存數據庫級的高性能寫入,RT 延遲依然較低。

高并發壓測,6000 并發訪問驗證突發峰值流量時的響應,對于突發訪問數據依然采用較為集中的測試數據,因此也是考驗對于熱點行的高并發情況,對于一個 8C 的小資源租戶,讀寫延遲增加也在意料之中,但數據庫整體穩定,可以應對突發流量。

600 并發壓測,TPS、QPS 平穩,SQL 硬解析后很快走 Plan Cache,整體 RT 平穩,寫 RT 在 1ms 以下,讀 RT 也在 1ms 左右,整體性能和穩定性都非常滿意。

  • 測試小結

整個測試歷時兩周,全面分析評測,在顯著節約成本的同時,無論是兼容性還是性能均超出預期,同時分布式數據庫的高可用能力也能為我們的服務保駕護航。

結緣 OceanBase

測試結果讓我們對 OceanBase 充滿信心,準備全面切換數據庫服務。如何平穩切換數據庫,如何在切換過程中保證服務的可用性成為我們的難題,OceanBase 的遷移平臺為我們提供了遷移的保障。具體遷移步驟和數據清洗等細節,OceanBase 提供了數據庫遷移規劃和咨詢服務,經過一周的討論研究,同時結合 OceanBase 專家的建議,最終梳理并確定了全業務遷移方案。

一站式服務

智慧油客的近兩年業務規模飛速發展,2020 年初服務 5000 家油站,2021 年初服務 8000 家油站,到 2021 年底已經超越 10000 家,年增長 40% 以上。

快速增長對我們的技術架構提出了挑戰,持續擴容應用節點數量,最終壓力都匯聚到了數據庫,高并發、高流量對于傳統數據庫,終究會達到連接上限和性能極限,即便開了再多的從庫,傳統數據庫的單節點寫無法滿足高并發寫入場景。

分庫分表解決方案可以解決多節點寫入問題,但中間件的性能瓶頸,數據均衡等問題,以及業務改造成本、運維成本都是制約業務發展的因素。與其采用一個中間態的產品,不如直接進化到分布式內核的數據庫產品,通過 OceanBase 公有云服務提供的一站式部署、擴容、監控運維管理、開發工具、數據遷移、備份恢復等端到端數據庫服務化解決方案,同時兼顧了運維成本與服務保障。

OB Cloud 產品架構

大幅度降本

線上全業務遷移,包括我們的業務庫、報表庫等三個實例集群,經過分析清洗,通過 OMS 遷移工具,可以邊界的選擇 Schema 進行遷移,最終遷移原來三個實例共 5TB 數據,OceanBase 存儲僅僅 869GB,比測試階段的主庫壓縮率高出更多,直接節省存儲 83%。

總存儲壓縮對比

租戶存儲監控

? ??

企業上云可以節省運維和資源成本,而云產品的選擇也是一門學問,面對眾多同類云服務,充分調研產品特性,與云產品的團隊深入溝通,充分測試云產品是否適合企業架構,前期的投入最終均會回報到后續運營成本上。OceanBase 對 MySQL 的高兼容性降低改造成本,存儲壓縮特性大幅度降低存儲成本,數據庫的直接賬單成本節約 40% 以上。

未來,智慧油客將持續進行服務升級改造,快速迭代打磨產品,OceanBase 數據庫作為智慧油客的數據底座,通過多租戶的資源動態調配、分布式的彈性擴容,上層業務架構更加靈活,面對突發流量、營銷活動等場景也多了一份從容。

實踐 Tips

在 MySQL 中通過參數 lower_case_table_names 來控制表名的存儲和比較規則,即 Table 大小寫敏感等規則,在 OceanBase 上的語義與 MySQL 完全一致。

MySQL 官方文檔對 explicit_defaults_for_timestamp 的說明

時間戳默認值,explicit_defaults_for_timestamp 變量控制時間戳默認值,在MySQL 5.6、5.7,默認為關閉,而 MySQL 8.0 此參數默認開啟,直接導致的是一個 not null 且有默認值的時間戳字段,如果顯式插入該字段為 NULL,會直接報錯。出于 SQL 的嚴謹性和規范性,建議企業未來開啟此選項,OceanBase 默認開啟,在關閉該變量后,完全兼容 MySQL 5.7。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/62156.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/62156.shtml
英文地址,請注明出處:http://en.pswp.cn/web/62156.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【深度學習】手機SIM卡托缺陷檢測【附鏈接】

一、手機SIM卡托用途 SIM卡托是用于固定和保護SIM卡的部件,通過連接SIM卡與手機主板的方式,允許設備訪問移動網絡,用戶可以通過SIM卡進行通話、發送短信和使用數據服務。 二、手機SIM卡托不良影響 SIM卡接觸不良,造成信號中斷&…

高新技術企業復審需要哪些材料?

高新技術企業復審需要準備以下材料: 《高新技術企業認定復審申請書》;高新技術企業證書;企業營業執照副本、稅務登記證書(復印件);企業職工人數、學歷結構以及研發人員占企業職工的比例證明;五…

消防物證管理系統|DW-S404實現消防物證智能化管理

一、系統概述 智慧消防物證管理系統DW-S404系統旨在借助現代信息技術,達成消防物證管理的高效化、安全化及智能化管理目標。該系統運用物聯網、大數據、云計算等先進技術,實現對消防物證從產生到銷毀的全生命周期跟蹤與監控,從而增強物證管理…

Odoo :一款免費且開源的食品生鮮領域ERP管理系統

文 / 貝思納斯 Odoo金牌合作伙伴 引言 提供業財人資稅的精益化管理,實現研產供銷的融通、食品安全的追蹤與溯源,達成渠道的扁平化以及直面消費者的 D2C 等數字化解決方案,以此提升運營效率與核心競爭力,支撐高質量的變速擴張。…

如何部署vue項目到Github Pages

1.創建vue項目 npm create vitelatest my-vue-app -- --template vue 2.創建github倉庫 3.連接倉庫 在項目根目錄右鍵選擇open git base here,如果沒有安裝git請先安裝git。 初始化倉庫 $ git init $ git add . $ git commit -m "init"將項目與倉庫連…

Dubbo應用篇

文章目錄 一、Dubbo簡介二、SSM項目整合Dubbo1.生產者方配置2.消費者方配置 三、Spring Boot 項目整合Dubbo1.生產者方配置2.消費者方配置 四、應用案例五、Dubbo配置的優先級別1. 方法級配置(Highest Priority)2. 接口級配置3. 消費者/提供者級配置4. 全…

ubuntu的matlab使用心得

1.讀取視頻 v VideoReader(2222.mp4);出問題,報錯: matlab 錯誤使用 VideoReader/initReader (第 734 行) 由于出現意外錯誤而無法讀取文件。原因: Unable to initialize the video properties 出錯 audiovideo.internal.IVideoReader (第 136 行) init…

消息中間件-Kafka1-實現原理

消息中間件-Kafka 一、kafka簡介 1、概念 Kafka是最初由Linkedin公司開發,是一個分布式、支持分區(partition)、多副本的(replica),基于zookeeper協調的分布式消息系統,它的最大的特性就是可以…

如何利用“一鍵生成ppt”減輕工作壓力

隨著數字化的快速發展,PPT設計這一傳統任務也迎來了新的變化。過去,制作一個簡潔、專業的PPT需要花費大量時間與精力。但現在借助科技的力量,一鍵生成PPT的夢想成真了。從智能生成ppt到ai生成ppt的技術不斷進步,令我們能夠體驗到更…

創造未來:The Sandbox 創作者訓練營如何賦能全球創造者

創作者訓練營讓創造者有能力打造下一代數字體驗。通過促進合作和提供尖端工具,The Sandbox 計劃確保今天的元宇宙是由一個個創造者共同打造。 2024 年 5 月,The Sandbox 推出了「創作者訓練營」系列,旨在重新定義數字創作。「創作者訓練營」系…

Docker多架構鏡像構建踩坑記

背景 公司為了做信創項目的亮點,需要將現有的一套在X86上運行的應用系統遷移到ARM服務器上運行,整個項目通過后端Java,前端VUEJS開發通過CICD做成Docker鏡像在K8S里面運行。但是當前的CICD產品不支持ARM的鏡像構建,于是只能手工構…

python學opencv|讀取圖像(三)放大和縮小圖像

【1】引言 前序已經學習了常規的圖像讀取操作和圖像保存技巧,相關文章鏈接為: python學opencv|讀取圖像-CSDN博客 python學opencv|讀取圖像(二)保存彩色圖像-CSDN博客 今天我們更近一步,學習放大和縮小圖像的技巧&…

D86【python 接口自動化學習】- pytest基礎用法

day86 pytest配置testpaths 學習日期:20241202 學習目標:pytest基礎用法 -- pytest配置testpaths 學習筆記: pytest配置項 主目錄創建pytest.ini文件 [pytest] testpaths./testRule 然后Terminal里直接命令:pytest&#xff…

基于 Apache Dolphinscheduler3.1.9中的Task 處理流程解析

實現一個調度任務,可能很簡單。但是如何讓工作流下的任務跑得更好、更快、更穩定、更具有擴展性,同時可視化,是值得我們去思考得問題。 Apache DolphinScheduler是一個分布式和可擴展的開源工作流協調平臺,具有強大的DAG可視化界…

藍橋杯2117砍竹子(簡單易懂 包看包會版)

問題描述 這天, 小明在砍竹子, 他面前有 n 棵竹子排成一排, 一開始第 i 棵竹子的 高度為 hi?. 他覺得一棵一棵砍太慢了, 決定使用魔法來砍竹子。魔法可以對連續的一 段相同高度的竹子使用, 假設這一段竹子的高度為 H, 那么 用一次魔法可以 把這一段竹子的高度都變為 ?H2?…

如何進行 JavaScript 性能優化?

要進行 JavaScript 性能優化,我們可以從多個角度進行思考,主要包括減少頁面渲染時間、減少內存占用、優化代碼執行效率等。以下是優化的一些方法,并結合實際項目代碼示例講解。 目錄結構 減少 DOM 操作 緩存 DOM 元素批量更新 DOM 優化 Jav…

CTF-PWN: 全保護下格式化字符串利用 [第一屆“吾杯”網絡安全技能大賽 如果能重來] 賽后學習(不會)

通過網盤分享的文件:如果能重來.zip 鏈接: https://pan.baidu.com/s/1XKIJx32nWVcSpKiWFQGpYA?pwd1111 提取碼: 1111 --來自百度網盤超級會員v2的分享漏洞分析 格式化字符串漏洞,在printf(format); __int64 sub_13D7() {char format[56]; // [rsp10h] [rbp-40h]…

selenium-常見問題解決方案匯總

selenium-常見問題解決方案 selenium版本selenium代理本地瀏覽器頁面Selenium之多窗口句柄的切換 selenium版本 selenium版本為: 3.141.0 注:selenium4x跟selenium3x會有不同的使用方法, selenium代理本地瀏覽器頁面 利用 Selenium 庫實現對 Google C…

Flask使用長連接

Flask使用flask_socketio實現websocket Python中的單例模式 在HTTP通信中,連接復用(Connection Reuse)是一個重要的概念,它允許客戶端和服務器在同一個TCP連接上發送和接收多個HTTP請求/響應,而不是為每個新的請求/響…

雨晨 26100.2454 Windows 11 24H2 專業工作站 極簡純凈版

文件: 雨晨 26100.2454 Windows 11 24H2 專業工作站極簡 install.esd 大小: 1947043502 字節 修改時間: 2024年12月6日, 星期五, 16:38:37 MD5: 339B7FDCA0130D432A0E98957738A9DD SHA1: 2978AE0CEAF02E52EC4135200D4BDBC861E07BE8 CRC32: 8C329C89 簡述: 由YCDIS…