前言
总结下如何设计项目方案。本文从通用、扩展两个角度去考虑项目该怎么设计,有哪些经常使用的手段。水平有限,望你们留言指正。mysql
必要前提
- 充分了解业务细节:需求分析或者prd阶段,要充分掌握需求的细节。细节可能会决定:数据从哪获取(多处数据源如何统一接入),如何流转(流程插拔),存储选型(那种存储方便扩展:好比nosql存储异构数据)。
- 考虑不一样业务线的差别:业务线的差别可能会致使:数据源不一样、指标口径不一样、规则差别。
- 给将来留扩展空间:这个主要考虑业务的发展趋势,这个能够多和业务同窗了解,或者看友商作法,
系统要为这些将来的变化提早留好口子。
- 不要过分设计:这个无需多说了,设计过分增长了过多的复杂度,后面的变化也是难以捕捉的,不要作无用功。
经常使用手段
- Nosql的强大之处就在于存储的灵活性,好比Hbase或者Mongo能够灵活存储业务数据,不care字段增减的变化。
- 结构化的数据作非结构化功能。举个例子:mysql当成nosql使用,定义一个宽表,各类类型若干,定义一段文本,好比json,json里面维护业务字段与mysql字段的关系。
- 数据打平:面对业务的差别,好比指标,不一样业务指标口径大多不一样,要想架构通用,数据须要打平。数据打平能够在存储层、内存层、展示层。
- 存储层:按照业务差别的公式,计算完成后存储,这样查询是就能保证数据同构,确保不一样业务通用。
- 内存层:说白了就是业务公式前置到内存层。而后经过计算公式计算结果,而后展示到上层。
- 展示层:同2的思想。
- 业务的差别彻底可使用规则引擎解决,经过配置化来解决业务差别。