前言
總結下如何設計項目方案。本文從通用、擴展兩個角度去考慮項目該怎麼設計,有哪些經常使用的手段。水平有限,望你們留言指正。mysql
必要前提
- 充分了解業務細節:需求分析或者prd階段,要充分掌握需求的細節。細節可能會決定:數據從哪獲取(多處數據源如何統一接入),如何流轉(流程插拔),存儲選型(那種存儲方便擴展:好比nosql存儲異構數據)。
- 考慮不一樣業務線的差別:業務線的差別可能會致使:數據源不一樣、指標口徑不一樣、規則差別。
- 給將來留擴展空間:這個主要考慮業務的發展趨勢,這個能夠多和業務同窗瞭解,或者看友商作法,
系統要爲這些將來的變化提早留好口子。
- 不要過分設計:這個無需多說了,設計過分增長了過多的複雜度,後面的變化也是難以捕捉的,不要作無用功。
經常使用手段
- Nosql的強大之處就在於存儲的靈活性,好比Hbase或者Mongo能夠靈活存儲業務數據,不care字段增減的變化。
- 結構化的數據作非結構化功能。舉個例子:mysql當成nosql使用,定義一個寬表,各類類型若干,定義一段文本,好比json,json裏面維護業務字段與mysql字段的關係。
- 數據打平:面對業務的差別,好比指標,不一樣業務指標口徑大多不一樣,要想架構通用,數據須要打平。數據打平能夠在存儲層、內存層、展示層。
- 存儲層:按照業務差別的公式,計算完成後存儲,這樣查詢是就能保證數據同構,確保不一樣業務通用。
- 內存層:說白了就是業務公式前置到內存層。而後經過計算公式計算結果,而後展示到上層。
- 展示層:同2的思想。
- 業務的差別徹底可使用規則引擎解決,經過配置化來解決業務差別。