制造業是一個古老而悠久的行業,它的起源最早可追溯到石器時代。從新石器時代簡單的工具,到今天復雜的智能工廠,制造業歷經千年發展,蛻變成了由技術驅動的創新行業,充滿各種自動化流程、始終互連的設備和數據豐富的流程。
“離散型”制造業面臨數據挑戰
在制造業中,通常有著“流程型”和“離散型”兩種區分。“流程型”是指被加工對象不間斷地通過生產設備,通過一系列的加工裝置使原材料進行化學或物理變化,最終得到產品。典型的流程生產制造業有醫藥、化工、石油化工、電力、鋼鐵制造、能源、水泥等領域。“離散型”制造,則是指材料的生產過程通常被分解為多項加工任務。典型的離散制造行業主要包括機械制造、電子電器、航空制造、汽車制造等行業。
在整個離散制造業的現場有著太多的生產、物料、工藝以及人員數據。以前,離散制造業往往只能通過人工上報、手動填單等方式來進行數據收集。對于管理層而言,這些數據往往是不透明的、不準確的,或是滯后延遲的。離散制造企業本身從業務到管理,都亟需通過數字化進行優化和提升。
如何解決“離散型”制造業的數據挑戰?
工業數字化軟件供應商數益工聯,致力于打造基于“數據流+價值流”的離散制造業數字化軟件。數益工聯團隊以IE+IT為核心能力,實現產品和技術的雙輪驅動,已在十多個行業落成全球領先的數字標桿工廠公司。公司至今已獲得華創資本、高瓴創投、元生資本等知名機構的風險投資,累計融資額數億元,在上海、蘇州、廣州三地設有子公司,打造跨區域全國服務平臺。
數益工聯數字工廠系統(DFS,Digital Factory System)應用新一代的物聯網技術與豐富的現場交互手段,獲取工廠現場最實時、最真實、最有效的數據,不僅包含設備狀態、設備異常數據、設備生產數據等設備 IOT 數據,還包含人員的交互使用數據,如計劃報工、工藝、倉儲物流、質檢等核心生產管理業務的數據等。對管理層而言,通過數益工聯數字工廠系統,可以直觀看到清晰、直接的報表,從中發現數據的價值,繼而深入分析并采取行動,優化制造現場。
數益工聯數字化工廠架構面臨的挑戰
數益工聯數字化工廠架構圖
從架構上看,數益工聯數字化工廠主要分為四層:
第一層為物聯層,包括硬件和軟件兩部分。硬件主要為數益工聯自研的智能終端,軟件包括邊緣應用和物聯平臺。其中應用主要具備設備參數的采集、人臉識別等功能,以上應用均運行于智能終端。物聯平臺則主要承擔設備管理、配置和升級的相關工作。
第二層為應用層,包括 IOT 數據服務、核心服務、低代碼平臺。IOT 數據服務是接受物聯上報數據,計算設備開機率,異常等設備相關的服務,同時也是其他業務的數據源頭;核心服務包括了計劃報工、質量等數字化工廠服務;低代碼平臺主要包括了報表的可視化平臺、流程編排等功能。
第三層為大數據層,分成了大數據和算法兩個部分。大數據應用包括了成本控制、APS、工藝大數據;算法包括了人臉識別、時序分析等算法。
第四層為基礎架構層,作為基礎設施提供其他業務使用。主要包括了存儲、數據庫、中間件和云原生等部分。
數字工廠的數據源頭主要包括兩部分:
第一部分是 IOT 事件,包括了設備的開關機,物聯采集、異常等數據,這部分數據通過 mqtt 上傳到 IOT 服務進行處理,同時會推送到隊列中,方便后續的計算和存儲;
另一部分是業務產生的數據,包括了計劃報工、上下班等產生業務數據,主要通過 http 進行上傳和展示。業務數據會直接存放到數據庫中,同時將數據推送到隊列中。
數據存儲主要采用了 TiDB 和 Starrocks 兩個數據庫,除了時序相關的數據,業務數據都存放在了 TiDB 中。
隨著數益工聯業務規模的不斷增長,數據量變得愈發龐大,對于數據庫的穩定性也提出了更高的要求:
1、多數業務數據需要支持秒級延時,因此需要數據庫具有很高的并發能力;隨著業務的增長,數據量也會越來越大,需要數據庫具有良好的拓展性;
2、隨著數據量的增大,報表制作成本和難度變大,無法保證實時性。
為解決業務系統的性能瓶頸,提高數據庫的性能問題,數益工聯選擇了 TiDB 這一新型分布式數據庫實現重構。
數益工聯研發團隊在實踐過程發現,TiDB 許多優勢正好可以滿足數益工聯的需求:
TiDB 兼容性強,在實踐的過程中幾乎沒有遇到過不兼容的問題,除了少數默認編碼的問題。支持云原生部署,可以通過 Kubernetes operator 來快速部署TiDB集群,具有完善的配套監控功能。能夠實現自動化水平擴容,支持高可用,運維無需手動接入,極大地降低了運維成本。支持 AP,TiDB 支持 TiFlash,降低部署復雜度,TiFlash 在億級別數據的查詢中,通常能達到 5 倍的加速。
TiDB如何助力數益工聯挖掘價值數據?
那么,數益研發團隊是如何使用 TiDB 實現對于工業數據的價值挖掘的?以工廠運轉效率的重要指標設備開機率為例,對于工廠而言,設備的開機率與生產效率息息相關,能否實時獲取開機率,機器是否實現了高效且合理的運轉非常重要。數益工聯團隊通過 TiDB 實現了以下功能:
開關機記錄:一條開機記錄表示記錄單個設備的一次開機時間和關機時間。這種記錄表,由于數據量過大,現在主要放在ES中。開機率:表示在一段時間內的開機時間的占比,延時需要精確到秒級,這種數據現在轉換成時序的數據存放在 Starrocks,同時創建物化視圖,加速時間跨度大的查詢。
但隨著時間增長,團隊也遇到了以下問題:一是開機記錄和開機率數據不同源,導致數據容易不一致;二是Starrocks 存儲量大,占用了大量的計算和存儲資源。
因此,數益工聯數據團隊對于開機率進行了第三次改造:Starrocks 不再保存開機率的時序數據。時序數據量比較大,容易出現異常,導致數據不一致。數益工聯一方面將開機記錄存放在 TiDB 中;另一方面通過開機記錄來計算出開機率。
原先 ES 同步寫入容易引發業務寫入超時的問題,這次改造解決了 ES 數據寫入延時的問題,同時,也減少了 Starrocks 的存儲資源的占用。這次改造使得在在100 臺設備的應用場景中,一年能減少百 GB 級別的Starrocks 存儲;充分利用了 TiDB 的 HTAP 能力,通過 TiDB 的 HTAP 直接對開機記錄進行聚合查詢,降低了業務復雜度,給業務開發提供了很大的便利性。目前,TiDB 在線上運行表現十分穩定。
改造 TiFlash,實現 TiDB 物化功能
與此同時,數益工聯研發團隊也在進行一些定制化的改造。由于業務需要支持任意時間段查詢開機率的能力,因此需要按天對數據進行預聚合,但TiDB 不支持物化能力,需要借助業務邏輯來實現,加大了業務實現復雜度。隨著業務預聚合的需求越來越多,數益工聯研發團隊決定對 TiFlash 進行改造,實現 TiDB 物化功能:
1、每個基表根據物化語句生成物化表。
2、基表以分區為粒度進行聚合,當數據到達一定時間的策略的時候,會把整個分區進行聚合,放到物化表分區中。
3、查詢引擎自動判斷是否使用基表分區還是物化分區。
4、在和Tiflash團隊的交流中發現,需要解決重復計算的問題,因此數據需要多副本去重計算。
目前,在數益初步的單副本測試中,雖然還存在一些問題需要修復,但能看到 TiFlash 的物化功能展現了很大的潛力,相信將在未來多業務場景下發揮重要作用。
數據庫在制造業中扮演著至關重要的角色,它們為工廠提供了強大的信息管理能力,幫助工廠更好地挖掘數據的價值。TiDB 可以幫助制造業處理海量數據,提供高效的查詢性能,我們也期待幫助更多制造業用戶完成數字化轉型,從而提升企業的競爭力與效率。