代理---ai資料獲取與處理
阿新 • • 發佈:2019-02-06
一、代理產生的需求分析
當有客戶需要定製ai、bi產品的大屏、報警時,需要呼叫ai、bi等資料的api,但是直接呼叫ai、bi的api是不能夠獲取資料的,因為,呼叫介面的時候,需要通過驗證才可以,否則呼叫介面就是返回的是401狀態(未授權的狀態),所以,就需要定製一款產品,可以直接呼叫代理所提供的api獲取ai的資料。在代理產生之前都是通過定製ai產品,對外提供開放的api提供資料,這樣的做法操作起來比較繁瑣,而且效率較低,所以,我們就使用了代理的方式獲取ai資料。
二、代理系統原理
根據ai、bi等產品的特性,在每一次呼叫dv的api時,請求的url的請求頭中都會攜帶一些登陸驗證的資訊,對接使用者中心的產品和沒有對接使用者中心的產品,登陸認證的方式是不同。
1、對接使用者中心
對接使用者中心時,登陸時訪問的介面為:/account/sessionId.do 請求方法:get
在訪問其他介面之前,都會先呼叫這個介面獲取使用者的登陸資訊,然後,再呼叫其它介面之前,每次請求的url的頭資訊中都會攜帶登陸介面所返回的認證資訊,這樣就可以正常訪問ai、bi等產品的其他介面了。
2、無對接使用者中心
當是部署單獨的產品時,登陸時訪問的介面為:/tpm/account/login 請求方法:post
剩下的具體的操作過程是和 對接使用者中心 的步驟是一樣的,區別是,兩個登陸介面所返回的值是不同的。
3、代理的優化處理
具備了基本的核心功能,後續就需要有許多優化的處理,這個工作目前已知的需要優化的部分 完成情況為:
3.1 請求引數的處理(已完成)
3.2 常量欄位處理(已完成)
3.3 請求流程的簡化(正在進行...)
3.4 資料請求介面化(正在進行...)
3.5 多執行緒請求資料功能的實現(需要對接Ai5.0)
三、代理的模組化分析
1. 開發環境配置
1.1 IDE及周邊設定
software requirements:
JDK (Oracle Hotspot JDK version >= 1.8.0_45)
Intellij IDEA
Git
Maven (version >= 3.2.0)
lombok (version >= 0.11.8)
1.2 程式碼風格
MetaMx Java Code.xml (在idea中設定程式碼風格)
2. 專案和程式碼說明
2.1 專案結構
|----pivot-ai (ai代理模組)
|----pivot-bi (bi代理模組)
|----pivot-dm (data manager, 模型管理模組)
|----pivot-util (data util, 工具類集合)
|----pivot-install (安裝包專案)
```
類似proxy-ai和proxy-bi模組可根據需求新增或刪除
技術棧
目前我們使用 SpringBoot + MyBatis + MySQL
2.2 程式碼提交規範與jira使用
1. 請確保對原始碼的每一行修改(包括配置)都有對應的jira issue;
2. 提交修改時comment內容如下格式: `git commit -m "JIRA-NUM: your commit comment goes here"`;其中`JIRA-NUM`為對應的jira號;
3. commit提交到遠端程式碼倉庫後,即時更新jira issue,添加註釋;註釋內容為:
* 如果建立了遠端分支,請寫明分支名稱;
* 請在註釋中寫明修改的內容;如有必要,儘量闡明bug原因或者新功能的內容或者修改對系統的重大影響等;
4. 功能開發完成,或者bug修改結束,需要通知測試同事測試;
5. 測試通過,在gitlab頁面,建立pull request,並提交給相關同事稽核,稽核通過後由稽核同事負責merge;
6. 開發過程中請更新對應的jira狀態;
7. bug修改的分支名,以`fix/`作為字首;新功能分支名以`feature/`作為字首;定製分支名以`release/`作為字首;
打包命令:
mvn clean package
執行打包命令後,會在proxy-install/target路徑下生成.tar.gz和.zip兩個安裝包
3. 執行專案
1. 解壓medivh-proxy.tar.gz或medivh-proxy.zip包
2. 執行根路徑下的startup.sh指令碼啟動專案
4. 執行根路徑下的shutdown.sh指令碼終止專案