首先用下圖闡述業務場景。
基礎服務為各個業務服務(服務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。回到主題 計算資料的某個欄位的所有值,對其欄位所有值進行運算 處理的字段資料為時間戳,需要計算該時間戳距離現在的時間,單位為天。一般方法 使用現在的...