年末不少移動產品都會推出本身的年度帳單,每一年都會引發大衆媒體的關注。今年有幸參與了宜信財富APP年度帳單的開發,本文將帶你們探索宜信財富年度帳單背後的技術架構和研發邏輯,但願能夠給你們帶來一些思路上的啓發。前端
宜信財富年度帳單前端架構所採用的技術棧包括:java
本次年度帳單涉及客戶維度、銷售維度、客戶標籤等數據,其中客戶維度包括活動參與、文章、視頻瀏覽等數據。這部分數據的整合來源於數據中臺的主題數據。如下是數據中臺的架構圖:redis
在數據中臺的架構上,咱們創建了「以客戶爲中心」的標籤體系。該套標籤體系按照人口屬性、價值指標、地理指標、心理指標等幾大類對數據進行分層管理,標籤的加工方式主要來源於DW和DM層數據的輕量彙總或者衍生加工,以及部分模型生成的產品預測等標籤。這套標籤體系支持360度客戶畫像以及分析關鍵接觸點,提供基於跨渠道全流客戶體驗優化和關鍵觸點優化。算法
本次帳單的數據主要來源於業務操做、用戶管理等源系統數據,這些數據被結構化地存儲在數據庫集羣中,且都已接入數據中臺,並按照定時任務或者實時數據落入對應主題域。帳單數據經過其相應主題數據加工而成,前端經過接口API訪問數據。spring
帳單需求裏的「銷售評價消息實時推送」和「帳單傳播短信發送」都是經過智能運營系統支持的,該系統是集運營活動建立、執行、管理、反饋、迭代爲一體的自動化平臺,可以經過用戶屬性、標籤、計劃、操做等數據篩選客羣,實現目標的精準觸達,提高關鍵指標和運營效率。數據庫
下面是智能運營系統建立運營計劃流程圖:canvas
用戶數據來源於宜信財富平臺自己數據,包含:基礎信息、瀏覽信息、參與活動等多項數據,如何保證數據準確、高效地傳達到前端是後端開發所必須保障的。資產平臺採用了spring+jersery+oracle+redis+jetCache的技術架構,爲了提高用戶體驗度,加快響應時間,數據存儲上該項目採用了緩存、非關係數據庫和傳統關係數據庫靈活結合的方式,更好地提供數據支撐。後端
在對接年度帳單需求時,咱們也着重考慮了接口響應時間。年度帳單用戶數據包括用戶活動數據及操做數據兩張表,其中操做數據是一個重量級表格,爲了減小數據庫的IO操做,採用了兩種方式來減小IO時間:緩存
Stream 不是集合元素,它不是數據結構並不保存數據,它是有關算法和計算的,更像一個高級版本的 Iterator。數據結構
此外Stream還提供了並行技術,在不關注集合內部數據順序的時候,能夠採用並行Stream拆解任務來加速處理過程。例如在作統計,須要將子產品進行彙總,或其餘操做時。
若是將複雜的代碼邏輯直接用SQL來實現,代碼會很是冗長,執行效率也不高。代碼的邏輯是使用並行流Stream,根據類型對相關數據進行分類彙總,而且根據本次需求的業務場景將某一子類劃分到另外一個類別下。
使用Stream並行流代替SQL邏輯能夠加速執行效率,減小響應時間。感興趣的同窗若是想了解Stream的更多特性,能夠參考技術文檔。Stream的應用可以讓代碼邏輯更加清晰,提升速度。
此項目是由多個團隊共同協做完成,本文對年度帳單需求作了一次技術層面的梳理,因爲時間比較匆忙,內容不太詳細,但願能夠給你們帶來一些開發思路,也但願用戶能夠真切感覺到咱們的用心。
來源:宜信財富管理技術團隊
做者:米志華、孫李強、李力、趙全超