王丁
隨著互聯網應用的飛速發展和各行業信息化的普及,數據呈爆發式增長,傳統面向對象編程思想和數據處理方式在分析如此海量的數據時出現性能和可擴展性的瓶頸,所以必須研究新的有效的大數據分析平臺開發架構,尤其是從底層編程思想著手進行優化,來應對大數據時代所帶來的全新挑戰。
目前業界對于大數據的概念還沒有統一定義,IBM公司將其特征概括為大規模、多樣性和快 速化三方面,其中大規模表示數據量非常大,TB 級以上;多樣性表示數據不像傳統關系數據庫那樣的結構化數據,而是有較多無法用二維表邏輯來表達的非結構化數據;快速化表示數據產生速度和要求的分析速度都要快,并且對大數據分析后的結果可快速用于用戶的決策依據上,實現大數據所蘊含價值的真正落地體現。
大數據平臺大規模、多樣性和快速化的三個特征,導致在編程實踐中會面臨數據關系極其復雜、源碼改動非常頻繁、代碼間沖突眾多等問題,這將耗費大量時間和精力在代碼編寫和完善上,如果沒有良好的編程思想對底層結構進行優化,大數據項目到后期往往會陷入BUG頻出,難以維護的境地。運用泛接口思想在大數據平臺進行編程實踐,將大數據算法的復雜流程劃分為相對獨立的若干個步驟,并封裝成獨立的類或接口,只需通過實例化實現這些接口的類,便可以方便的進行大數據項目的開發和后期維護修改。
在面向對象程序設計中,接口指實體把自己提供給外界的一種抽象化物,用以由內部操作分離出外部溝通方法,使其能被修改內部而不影響外界其他實體與其交互的方式。面向接口編程是比面向對象編程體更先進的一種獨立編程思想,是面向對象編程體系中的思想精髓之一。一個系統由若干個組成部分按照一定的層次組成,并且各個組成部分之間存在著一定的依賴關系,面向接口編程要求各個層次不直接向其上層提供服務,即不直接實例化在上層結構中,而是通過定義一組接口,僅向上層顯示其接口,接口中只定義了該層次所具有的功能,上層對下層僅僅是接口依賴,而不依賴具體實例。這樣在編程實踐中就具備了很大的靈活性,當下層需要改變時,只要接口及接口功能不變,則上層不用做任何修改,甚至可以在不改動上層代碼的情況下將下層整個替換掉,這就大大節約了開發時間,有效提高了工作效率。
泛接口思想則是對面向接口開發的集中體現和進一步升華。泛接口思想不同于一般意義上的接口偏重于具體實現,而是上升到底層架構設計層面的一種思想。泛接口的核心是解耦和自由互通,是在面向接口開發的基礎上,為應對大數據平臺超大規模數據和前所未有的結構復雜性而產生的一種新的編程思想。泛接口在具體代碼編寫層面與面向接口開發具有一致性,重點是通過全新底層架構設計思想,避開龐雜的、無序的數據關聯處理,同時建立一套新的內部交互機制,化繁為簡,由一個復雜的大型問題轉化為多個較簡單的小型解決方案,最終從根本上解決大數據平臺開發的復雜度難題。
泛接口思想的核心是解耦和自由互通,在整個編程實踐的各個層面均可以利用泛接口思想實現開發結構優化。體現在代碼實現層面是解耦對象之間的依賴關系,提升系統的維護性與擴展性;在數據庫層面是通過建立新的映射關系來解耦表與表的多對多關系,否則表信息與表關系嚴重糅合在一起,造成大量數據冗余;體現在ORM上是用注解配置文件來解耦對象與數據庫表的對應關系,實現內部運行效率大幅提升;體現在MVC上是建立新的路由機制來解耦URL與Action之間的運轉關系等。在整個編程實踐中,只要應用場景中兩個“對象”之間的復雜關系影響到結構設計和開發工作量,我們就可以采用某種手段將一方靈活的轉換為另一方,從而實現場景中兩個“對象”之間直接關系互不依賴,同時這種解耦和自由互通在各個層次都有應用,因此將其進行抽象,形成了一整套泛接口思想。

泛接口是進行復雜編程實踐的一套新的方法論,當面臨互相依賴的兩個“對象”的時候通過某種手段進行互相解耦或連通,這里的“對象”不僅僅是類,還可以是整個模塊或系統中其它任何組合。在具體應用中,泛接口要結合具體業務場景落地為具體實現手段,以達到兩個“對象”的自由互通。例如:新的路由機制實現了URL對象與Action對象的互通;通過配置文件和相應算法結合實現了類對象與表對象的互通,這里路由機制和配置文件就是泛接口思想落地后的具體方法。通過對各個層面具體解決方案的抽象歸納,形成的泛接口思想,可以有效指導我們在應對編程實踐中的復雜度難題,尤其適合當前大數據平臺的超大規模編程中的復雜邏輯轉換。
泛接口思想在大數據平臺開發中的應用,首先要定位整個平臺設計中哪里有耦合,針對具體問題具體處理。在大數據基礎處理中,通常需要將多種文件的元數據格式進行相互轉換,面臨的問題主要是源格式與目標格式復雜的對應關系,為了解耦這種復雜對應關系,基于泛接口思想,我們可以引入中間格式,使各種格式都依賴于中間格式,降低繁多的對應關系。

通過這種方式可以將復雜的依賴關系由N的冪次方級別降低到N的線性級別,大大降低了大數據平臺的開發難度。但此時耦合依然存在,需要進一步解耦,源與目標都依賴于中間格式,由于大數據平臺結構要求需要將中間格式存放在數據庫中,那么一旦遇到表信息的更改或者數據庫遷移問題,整個系統會遇到較大問題,必須重新修改。為了解除這種依賴,基于泛接口思想可以引入映射關系,通過映射文件描述各種格式和中間格式的映射關系,然后實現每種格式的轉換算法,通過調用映射處理模塊獲取不同格式與中間格式的元數據對應關系,傳遞進具體算法中進行格式轉換處理。通過這樣的處理方式,整個核心依賴關系被完全轉移到了映射文件中,如果添加新的格式,只需要在映射文件中添加相應的映射關系,并編寫該格式對應的轉換算法,完全不影響已完成的代碼運行。具體應用時還可以將映射關系加載到緩存中,降低IO操作,提高程序的靈活性與擴展性。這樣就形成了一個完整的泛接口在大數據平臺開發中的結構優化設計。

利用泛接口思想進行大數據平臺開發的結構優化設計,采用分而治之的原則,實現了復雜依賴關系的解耦和互通,提高了程序的靈活性,可以更加方便的進行海量數據交互效應分析和統計實驗,更好地實現大數據的價值發掘。用泛接口思想對大數據平臺的結構優化,是面向接口開發的進一步升華,對其它類型平臺的開發結構優化也有較好的借鑒意義。
作者單位:人天通信集團有限公司