異構API資料處理實踐

2021-08-19 20:25:35 字數 2503 閱讀 8410

首先用下圖闡述業務場景。

基礎服務為各個業務服務(服務a/b/c) 提供api,同時基礎服務資料又**於第三方服務商。

各個服務商之間api的資料結構不同,本文不涉及不同服務商之間的安全通訊方式。

例舉我所遇到的兩個因素

以傳送簡訊為例,若只有乙個服務商,若服務商因某些因素中斷服務,將導致依賴於簡訊的業務受到嚴重影響。

若對接了多個服務商,當其中乙個無法使用,自動切換到可用的服務商即可。

因各種因素導致商務合作終止,從而切換服務商

先舉兩個例子加以說明:

資料處理的目的是可以通過配置,將不同服務商的異構資料統一解析,簡化**,增強拓展性。

這裡以企業工商資料做演示。下面假設三種工商資訊的資料結構,均使用json格式展示:

業務系統中以自身的資料結構為準,假設欄位名稱是正常翻譯:

假設欄位名稱是不規則簡寫:

假設欄位名稱是中文首字母簡寫:

先採用簡單的方式處理,首先新建乙個domain表示企業工商資訊:

public

class

organization

將a服務商的資料轉換為標準資料

假設jsonobject是阿里的fastjson

// jsonobject data = 

organization org = new organization();

org.setorganizationname(data.getstring("entname"));

org.settaxpayernumber(data.getstring("taxnumber"));

將b服務商的資料轉換為標準資料

// jsonobject data = 

organization org = new organization();

org.setorganizationname(data.getstring("qymc"));

org.settaxpayernumber(data.getstring("nsrsbh"));

上面看上去非常簡單,但實際上api欄位非常繁多,首先會導致大量的累贅**,其次是有n個服務商就會有n種冗餘**。

使用註解在domain上標記各個服務商的對應字段

定義用於資料自動轉換的註解

@target(elementtype.field)

@retention(retentionpolicy.runtime)

public @inte***ce

string servicea() default

""; // a服務商字段

string serviceb() default

""; // b服務商字段

}

使用註解標記domain的屬性

public

class

organization

使用反射統一解析資料

/**

* 統一解析資料

* *@param source 資料來源

*@param targetclass 目標類

*@param serviceprovider 服務提供商

*@return 目標類instance

*@throws exception

*/public

static object parse(jsonobject source, class targetclass, string serviceprovider) throws exception }}

return instance;

}

資料處理測試

jsonobject dataa = json.parseobject("");

jsonobject datab = json.parseobject("");

organization orga = (organization) parse(dataa, organization.class, "a");

organization orgb = (organization) parse(datab, organization.class, "b");

本文僅提取了異構資料處理中的乙個「點」做分析,為資料解析提供一種解決的思路。

資料處理 流資料處理利器

流處理 stream processing 是一種計算機程式設計正規化,其允許給定乙個資料序列 流處理資料來源 一系列資料操作 函式 被應用到流中的每個元素。同時流處理工具可以顯著提高程式設計師的開發效率,允許他們編寫有效 乾淨和簡潔的 流資料處理在我們的日常工作中非常常見,舉個例子,我們在業務開發...

爬蟲 資料處理 pandas資料處理

使用duplicated 函式檢測重複的行,返回元素為布林型別的series物件,每個元素對應一行,如果該行不是第一次出現,則元素為true keep引數 指定保留哪一重複的行資料 dataframe替換操作 使用df.std 函式可以求得dataframe物件每一列的標準差 資料清洗清洗重複值 清...

資料處理 pandas資料處理優化方法小結

資料處理時使用最多的就是pandas庫,pandas在資料處理方面很強大,整合了資料處理和資料視覺化。pandas的視覺化使用的是matplotlib。回到主題 計算資料的某個欄位的所有值,對其欄位所有值進行運算 處理的字段資料為時間戳,需要計算該時間戳距離現在的時間,單位為天。一般方法 使用現在的...