引言:近日,極客邦科技InfoQ編輯萬佳就“軟體國產化”相關話題採訪了DataPipeline CTO 陳肅,本文由編輯萬佳根據採訪內容整理而成。
長期以來,中國資訊產業“缺芯少魂”,“芯”指晶片,“魂”指作業系統。2018 年,中興事件後,國產晶片一時成為萬眾矚目的焦點,並引發一片網路熱議。有網友評論,“這次被美國卡住的芯,一萬年也要搞出來”。
殊不知,即使造出來國產芯,還沒搞定國產作業系統。即使弄出國產作業系統,資料庫上依然受制於人。即使有了國產芯、國產作業系統,我們依然沒有解決最大問題——缺乏國產軟體的生態。這個生態聯絡緊密,“環環相扣”,底層是晶片、中間是作業系統、資料庫、中介軟體等,上層是大量的應用和服務。
為了建立一個健康的國產軟體生態,不僅要有國產晶片、國產作業系統和國產資料庫,而且還需要大量第三方應用和服務去適配它們。這樣,國產軟體生態才能“茁壯成長”。
涉足軟體國產化
一般來說,國產軟體可以分為三類:基礎軟體、通用軟體和垂直行業應用軟體。其中,基礎軟體包含作業系統、資料庫和中介軟體,並且它是 IT 行業發展的中流砥柱。但是,在作業系統和資料庫方面,這一直是我們的“軟肋”。
“狹義上的軟體國產化主要指作業系統和中介軟體的國產化。”DataPipeline CTO 陳肅說。
在其他領域,像手機 App、企業應用軟體和企業服務軟體等雖然也屬於國產化軟體,但是它們過去一直在穩步發展。
近幾年,很多人是從比較火的國產資料庫 / 資料倉儲開始瞭解軟體國產化的。其中,代表性的國產資料庫有 TiDB、GaussDB 和 SequoiaDB 等。
國內雲端計算的應用和普及,有望成為國產資料庫發展的重要機遇。比如,國內雲廠商針對雲環境應用的特點,推出開源資料庫的深度定製化版本和自研的資料庫 / 資料倉儲版本。
眾所周知,在 2019 年全球 OLTP 資料庫權威測試 TPC-C 中,阿里雲的 OceanBase 資料庫“一舉奪冠”,不僅打破 Oracle 維持 9 年的世界紀錄,而且讓更多人認識到國產資料庫的發展水平。
據悉,DataPipeline 是一個批流一體資料融合平臺,它主要為企業提供資料採集、API 資料接入、視覺化運維管理和後設資料管理等功能。其核心功能之一是完成異構資料庫的抽取、轉換、寫入。
陳肅表示,對 DataPipeline 而言,軟體國產化意味著不僅要適配國產資料庫和資料倉儲,而且要適配國產作業系統和硬體環境。DataPipeline 主要基於容器化部署,在國產作業系統、ARM 硬體環境上有時會遇到一些相容性和效能問題,因此要根據具體環境進行適配和調優。
與之相似,融雲則是另一家開展“軟體國產化”的企業,它的工作也是去適配國產作業系統、國產資料庫等。對融雲而言,軟體國產化不僅僅是適配,而且要保證在不同的國產作業系統中,它對網路和資料庫層面的最佳化同樣生效,並確保效能層面與標準產品效能對齊。
無論是 DataPipeline,還是融雲,它們之所以涉足軟體國產化,原因很簡單:客戶有需求。
以 DataPipeline 為例,2016 年,這家公司在客戶側感知到國產化需求的增加,開始根據收到的客戶需求數量進行優先順序排序和研發。以市場為導向,如果只有個別使用者有需求,企業可能會當做定製化需求去適配。一旦它變成普遍需求,就需要進行產品化開發,
“作為一家創業公司,我們的優勢之一是能快速對市場需求做出響應。”
同樣,在 3 年前,融雲開始走上國產化適配的道路。
融雲 CTO 楊攀向 InfoQ 記者透露,“我們做國產化,是因為客戶群體中有大量面向企事業單位、政府等機構的服務商。客戶需求最終驅動融雲啟動國產化工作。”
適配怎麼做
對融雲和 DataPipeline 而言,它們面臨的第一個問題是確定適配目標。“定目標”,這看上去很簡單,實則不易。
以國產作業系統為例,企業要先確定自己的應用或服務適配哪一個國產作業系統。而根據公開不完全統計,市面上,國產作業系統有十幾個,包括深度 Linux(Deepin)、優麒麟 (UbuntuKylin)、中標麒麟 (NeoKylin)、中興新支點作業系統、銀河麒麟等。
這麼多作業系統,確定初期的適配目標非常重要,因為它關乎成敗。
楊攀說,“在適配的作業系統具體版本上選擇很難,因為有各種版本,讓人眼花繚亂,比如通用版、高階版和安全版等。並且,除官網簡單說明外,各個版本間的具體區別很難獲取到詳細資訊。”
如果是適配某個行業資料庫,企業較難從公開渠道獲取到資料庫最新發布版本和各版本差異。最後即使透過與售前人員聯絡獲得資料庫安裝檔案,但在實際適配過程中依然有坑,“實際適配中,某些特性無法很好的支援,而產品技術人員也無法給出明確解釋,最終只能由適配人員從程式碼層面著手解決。”
透過市場調查,融雲瞭解到:在 CPU 晶片體系架構上,主要分為 X86、ARM64、MIPS64;在國產作業系統上,市場佔有率較高的有中標麒麟、銀河麒麟等。在資料庫方面,除了考慮市場佔有率和品牌外,他們還考慮了特定行業的需求,“最終確定達夢、金倉、神通、南通”。
根據自身產品使用的語言、架構及中介軟體、適配評估的難度、週期和可行性方面,“我們確定的策略首先是 X86 + 中標麒麟 / 銀河麒麟 + 達夢 & 金倉 & 神通 & 南通,其次是適配 MIPS64,最後是 ARM64 體系。”楊攀說。
目前,融雲的適配工作有 10 餘人參與,包括服務端研發、PC 端研發和 DevOps 以及部署實施等人員。在實際適配時,團隊人員主要分為三類:研發人員負責資料庫的適配,DevOps 人員負責中介軟體在作業系統上的適配,整合測試人員負責適配後的整體測試。
適配工作不斷推進,“坑”也越來越多。以資料庫的適配為例,融雲遇到的挑戰是對標準 SQL 語法的理解一致性的問題。
據楊攀介紹,適配 SQL 時,不僅對 utf8-mb4 字符集的支援標準不統一,而且報錯時,隱式和顯式通知也各不相同。為解決該問題,他們投入大量測試資源,對用到 utf-mb4 的業務邏輯,最終透過業務層進行轉碼來適配。
在適配過程中,“軟體坑點”只是困難之一,最大的困難或許是適配複雜性。
“產品依賴的一些元件需要進行 OS 層面的適配。例如,用 C 開發的基礎元件,包括 Nginx、Redis 和 OpenResty 等,它們在編譯過程中需要依賴指定的 glibc 庫版本。因此,需要升級 glibc 庫操作才可以正常執行。“他說。
並且,國產作業系統版本較多,架構不一致,也會大大提升複雜度。同時,架構不一致也會帶來一系列問題,例如基礎元件依賴的 OS 內建底層開發環境 glibc 庫的版本不一致,需要升級、重新編譯或在部署產品過程中處理掉程式的所有相關依賴項,在多個作業系統上進行反覆測試,最終達到適配。
此外,除融雲自研服務外,依賴的中介軟體,比如 Nginx、Redis、ActiveMQ 等。對不同的系統核心和基礎元件版本,它們在執行時的表現有差異。這需要透過融雲完整的單元測試用例和效能測試框架去覆蓋功能及效能測試,從而發現潛在問題,“這部分工作也是整個適配過程中複雜度較高的工作內容”。
不過,在楊攀看來,資料庫和作業系統的適配工作所面臨的挑戰和複雜度是不一樣的。
作業系統的適配,由於涉及眾多元件,主要工作是在不影響效能的前提下,觀察整個融雲的服務端所有元件及服務在指定作業系統上能否更好的配合起來,良好執行。它更多的工作是進行調優以及驗證。
資料庫的適配,更多是對 SQL 語法的改寫和驗證。“不僅功能性的驗證工作佔比相對多一些,而且程式碼層面的工作量相對更多,且更加繁瑣”。
對 DataPipeline 而言,作業系統和硬體環境的適配更多是靠靈活的部署策略。比如,某些環境容器化執行不穩定,DataPipeline 則提供非容器化的叢集部署方式。
陳肅表示,工作量最大且最複雜的是將國產資料庫作為資料來源和資料目的地進行適配。對於資料來源,DataPipeline 通常需要提供基於日誌的實時採集和基於 JDBC 的批次查詢兩種同步方式。
但是,不同國產資料庫日誌記錄的原理各不相同,而且對第三方解析的友好支援程度也不同,因此需要投入比較多的精力去解決該問題,並應對一些特殊資料型別的處理。而在資料目的地端,他們面臨的主要挑戰是如何實現靈活高效能的寫入。這通常需要根據資料庫特性,提供實時和批次載入兩種方式。
雖然有諸多困難,但是在他看來,國產資料庫 / 資料倉儲有著自己的優勢。
優勢一是架構的先進性。
國產資料庫雖然起步較晚,但可以參考成熟產品並結合新理論進行架構方面的創新。國產資料庫在水平擴充套件和分散式容錯等方面比較優秀,這是受益於架構先進性。
另外,這波國產化浪潮正好趕上人工智慧的風口。在傳統資料庫運維中,最頭疼的是引數調優和故障恢復。以華為 GaussDB 為代表的一些國產資料庫,將智慧化運維作為重要產品特性加以研發和應用,“這代表了未來方向”。
第二個優勢是本地化服務。相比國外大廠,國內公司在靈活度、服務成本等方面都有一定優勢。
另外,國產資料庫可根據國家政策對產品和服務進行調整的限制少、週期短,更容易滿足國家“安全可控資訊科技”方面的法規要求。
在適配 Oracle 等傳統資料庫時,遇到問題時,DataPipeline 主要靠官方技術文件來解決。比如,如何提高寫入速度,只能透過不斷實驗進行調優。但是在適配國產資料庫時,
“
我們會和產品方建立比較密切的聯絡,有技術討論群,可以找到對方架構師甚至 CTO 討論問題。”陳肅說。
在 2019 年,有一次,客戶反饋某個國產資料庫目的地報了寫入異常,檢視錯誤提示,得知問題是出於引數數量超過限定值。因為該資料庫是高度相容 MySQL,同樣的資料寫入 MySQL 卻沒有問題。
“我們於是把這個 bug 放到技術討論群裡進行反饋,10 分鐘就得到答覆,而 bug 也在第二週的例行發行版中得到修復。同時,確認該 bug 產生的原因後,我們立即在產品中做了限制,幫客戶繞過這個問題。”他說,
“這樣的響應速度和交流便捷性,是我們在做傳統資料庫適配時無法想象的。這也是國產軟體的優勢之一。”
眾所周知,在所有行業中,金融行業是對資料庫一致性和可靠性的要求是最高的。
傳統上,這個領域是 Oracle、IBM 等公司的“天下”。
在陳肅看來,截至目前,絕大多數銀行的交易系統依然是基於 Oracle 和 DB2。
對銀行而言,核心交易系統的升級和替換是一件需要慎重考慮的事情。
一方面,即使國產資料庫本身足夠優秀和穩定,也需要大量測試來保證遷移的平滑和遷移後的穩定;另一方面,大部分現有應用可能包含一些特定資料庫的方言,遷移到國產資料庫時,由於支援的方言不同,需要經歷一個適配過程。
因此,這兩點決定國產資料庫的存量替換工作在銀行核心系統上還有一個相對漫長的過程。
對於國產資料庫 / 資料倉儲的使用,金融行業更多是從分析系統入手。有些國產資料庫,比如 TiDB,它是支援 OLTP 和 OLAP 二合一的。在實際應用中,金融企業一般從資料倉儲應用入手,逐步在邊緣業務系統或新業務系統使用,最終進入核心系統。
與之相比,網際網路公司負擔較輕,“我們確實看到一些網際網路公司在比較激進地使用國產資料庫替代原有資料庫,尤其是在大規模的分散式叢集應用場景下“。
崛起的國產化軟體
無論是 DataPipeline,還是融雲,它們只是無數適配企業的一個縮影。在其背後,我們看到的是國產化軟體正在崛起。
眾所周知,過去四十年,中國在白色家電、消費電子、通訊技術、高速鐵路、生物醫藥等領域取得極大進步,甚至在某些領域處於世界領先。但是,在作業系統、資料庫等軟體系統偏底層的領域,始終主要依賴國外產品。隨著中國經濟體量的進一步增大,圍繞這些核心元件的產品 + 服務的市場規模不斷擴大。按照經濟規律,資本和社會資源就會逐漸流向這個領域,推動其發展和落地。
其次,國家層面對“安全可控資訊科技”不斷深化的要求,催生出存量替換市場。據悉,早在 2014 和 2015 年,國家針對金融行業提出安全可控資訊科技推進指南。作業系統、資料庫等核心元件是其中的重要組成。並且,隨著中美貿易戰的爆發,這項措施的必要性更加凸顯,這也促使“國產化”在更多部門和行業內加速推進。
此外,還有優秀的人才培養和人才迴流。過去幾年,國內頭部公司培養和招募了國內外大量的優秀人才,其中包括從事作業系統、資料庫以及各類分散式中介軟體的研發人員。並且,隨著 IBM、Oracle 在內的國外巨頭縮減國內研發中心,一些有豐富經驗的工程師相繼加入國內公司從事研發工作。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556703/viewspace-2681686/,如需轉載,請註明出處,否則將追究法律責任。