張 楠
(上海航空工業(集團)有限公司,上海 200000)
隨著制造型企業的業務不斷拓展及生產制造工藝的升級。承載企業各業務運轉的企業業務管理系統也逐漸增多。為避免出現信息孤島,方便管理決策,基于高內聚和低耦合的軟件開發思想,各個系統之間的信息交互大多利用接口的方式加以實現。而隨著發布的接口和對已發布接口調用情況大量增長,如果沒有對接口進行系統性管理,當遇到接口遷移及接口升版的時候就需要收集接口調用的情況,及時通知調用系統做出相應變更,這樣接口遷移升版的成本就會大大提高。當接口調用異常或者接口調試時,如果沒有接口日志存在,定位問題位置也變得很困難。當需要實時開放某個接口對某系統調用權限時,如果沒有相應的權限管理,也無法通過配置的方式實時響應。因此建立一套能夠管理接口信息、接口權限及接口調用記錄的接口管理系統是非常有必要的。
接口管理的主要目的是提高接口的開發人員、運維人員和方案人員的工作效率,使他們都專注于自己擅長做的事情。開發人員只需要開發接口的實現邏輯,不需要關心接口的權限;運維人員只需要在管理界面配置各個接口對于各個系統的訪問權限,不需要再聯系開發人員修改代碼,也不需要重啟整個服務;方案人員通過接口的信息管理和調用記錄管理可以清晰直觀的了解到接口運行的現狀,能夠對接口優化遷移造成的影響有更準確的評估。
REST 是一種新的互聯網應用架構。REST 充分利用HTTP 的優勢,以資源為核心,將資源的CRUD 操作(create 添加數據、read 讀取數據、update 修改數據、delete 刪除數據)映射為HTTP 的GET、PUT、POST、DELTE 等方法。由于REST 式的Web 服務提供了統一的接口和資源定位,簡化了Web 服務接口的設計和實現,降低了web 服務的復雜度,它最大的優勢就是無需引入笨重的SOAP 協議,無需建立龐大的XML 消息,可以很好地支持緩存,具有無狀態性,保持請求調用彼此獨立[1]。因此,可以利用REST 架構發布接口,通過AOP(即面向切面編程)在系統底層添加權限攔截及日志記錄,再利用Spring 多數據源技術連通各個數據源,實現對接口信息、數據、權限、日志的統一管控,達到方便開發人員開發、方便運維人運維、方便方案人員統覽全局的效果。形成了企業內部的接口網,為后續新系統的開發,舊系統的改造都提供了極大的便利和支持。
接口是基于系統之間高內聚,低耦合的開發思想用于系統間信息交互的工具,接口調用最核心的問題就是數據安全問題。因此,我設計的統一的接口管控系統必須要有一套完善的安全機制保證接口數據傳輸的安全性。
外部系統調用開發人員發布的接口時,系統會自動校驗以下權限保證接口數據的安全。整個調用檢驗過程如圖1 所示,外部系統需要經過系統合法性校驗,系統IP校驗,接口訪問權限校驗三重校驗才能訪問到指定接口。
圖1 接口調用過程圖
(1)系統合法性校驗,系統合法性校驗主要是校驗外部系統是否在接口系統中注冊,且在有效期范圍內,并且驗證此次調用使用的用戶名和密碼是否合法, 防止接口被非法系統匿名調用。
(2)系統IP 校驗,系統IP 校驗主要是校驗外部系統是否為指定服務器IP 地址段訪問,防止非法系統盜取注冊系統的用戶名密碼后非法調用接口數據。
(3)接口訪問權限校驗,接口訪問權限校驗主要是校驗外部系統是否具有訪問某具體接口的權限,如圖2所示,每個外部系統可以在接口管理系統中注冊多個用戶,每個用戶可以訪問多個發布的接口地址,這樣就可以實現每個接口可以授權給多個不同的外部系統,每個外部系統也可以訪問多個不同的接口。
圖2 調用系統與接口關系圖
接口管理主要功能包括接口信息管理、接口權限管理和接口日志管理三個部分。如圖3 所示。
圖3 功能模塊示意圖
(1)接口信息管理包括接口基本信息管理、接口調用系統管理和接口說明文檔管理,這樣就可以讓管理人員對整個接口系統的所有接口的信息有一個整體了解。其中,
接口基本信息的管理,即接口的地址、開發者、發布狀態等信息的管理。
接口調用系統管理即注冊在接口系統的外部調用系統的信息管理,主要包括調用系統的IP 地址段、調用系統的描述、調用系統的注冊有效時間等信息。
接口說明文檔管理即接口的邏輯說明文檔,調用Demo 文檔的管理。
(2)接口日志管理包括請求記錄日志管理、請求異常日志管理、請求耗時日志,這是接口系統在底層切面上對每次接口http 調用請求做了的日志輸出,開發人員在開發接口邏輯的時候就不需要在關心日志的輸出問題了。日志記錄的入參、出參、報錯信息和耗時在接口調試或者日常運維中是個很有用的工具,方便接口調試,快速定位問題。此外,通過基于收集到的日志數據,還可以用于接口運行情況的展示監控,管理人員可以很直觀的了解到接口運行的狀況是否良好。
(3)接口權限管理包括登錄授權、IP 授權、接口訪問授權,這個在上文已經做了詳細描述,這里就不再贅述了。
制造型企業的業務系統種類繁多,為了避免信息孤島,使用接口打通各個系統間的信息流是必需的[2]。企業內部接口的數量龐大,如果把接口的管理分散在各個系統或以文檔的形式對接口進行管理,沒有形成一個整體統一的接口管理,那么無論是新的系統調用、接口發布,還是舊的接口升級,都會因為缺乏整體上的管控而產生大量接口聯調工作,甚至因為信息收集不全,信息收集的疏漏導致接口傳輸不通,數據傳輸錯誤等問題。這是接口管理的一個很大的痛點。因此,對于這類比較容易被忽視的接口信息在企業內部做統一管控是一個必然。本研究只是對企業統一接口管理理念的一次探索嘗試,雖然對于數據的傳輸安全,接口執行的效率等方面的考慮還不是很完善,但是在實際應用中對于開發、運維、實施等工作的效率提升是顯而易見的。