浅谈如何做业务项目通用性、扩展性设计

前言

总结下如何设计项目方案。本文从通用、扩展两个角度去考虑项目该怎么设计,有哪些常用的手段。水平有限,望大家留言指正。

必要前提

  • 充分的业务分析
  1. 充分了解业务细节:需求分析或者prd阶段,要充分掌握需求的细节。细节可能会决定:数据从哪获取(多处数据源如何统一接入),如何流转(流程插拔),存储选型(那种存储方便扩展:比如nosql存储异构数据)。
  2. 考虑不同业务线的差异:业务线的差异可能会导致:数据源不同、指标口径不同、规则差异。
  • 未来3-5年的规划
  1. 给未来留扩展空间:这个主要考虑业务的发展趋势,这个可以多和业务同学了解,或者看友商做法,

    系统要为这些未来的变化提前留好口子。

  2. 不要过度设计:这个无需多说了,设计过度增加了过多的复杂度,后面的变化也是难以捕捉的,不要做无用功。

常用手段

  1. Nosql的强大之处就在于存储的灵活性,比如Hbase或者Mongo可以灵活存储业务数据,不care字段增减的变化。
  2. 结构化的数据做非结构化功能。举个例子:mysql当成nosql使用,定义一个宽表,各种类型若干,定义一段文本,比如json,json里面维护业务字段与mysql字段的关系。
  • 数据打平:面对业务的差异,比如指标,不同业务指标口径大多不同,要想架构通用,数据需要打平。数据打平可以在存储层、内存层、展现层。
  1. 存储层:按照业务差异的公式,计算完成后存储,这样查询是就能保证数据同构,确保不同业务通用。
  2. 内存层:说白了就是业务公式前置到内存层。然后通过计算公式计算结果,然后展现到上层。
  3. 展现层:同2的思想。
  • 规则引擎:可以说是屏蔽业务差异之银弹
  1. 业务的差异完全可以使用规则引擎解决,通过配置化来解决业务差异。

原文地址:https://www.cnblogs.com/xiaogangfan/p/9291100.html

时间: 2024-11-08 17:38:54

浅谈如何做业务项目通用性、扩展性设计的相关文章

浅谈IM软件业务知识——非对称加密,银行U盾的原理

概述 首先了解一下相关概念:RSA算法:1977年由Ron Rivest.Adi Shamirh和LenAdleman发明的,RSA就是取自他们三个人的名字.算法基于一个数论:将两个大素数相乘非常容易,但要对这个乘积的结果进行 因式分解却非常困难,因此可以把乘积公开作为公钥,该算法能够抵抗目前已知的所有密码攻击.RSA算法是一种非对称算法,算法需要一对密钥,使用其中一个 加密,需要使用另外一个才能解密.我们在进行RSA加密通讯时,就把公钥放在客户端,私钥留在服务器. RSA非对称加密算法,可以验

浅谈如何做一名优秀的WEB前端工程师

浅谈如何做一名优秀的WEB前端工程师 随着近两三年来RIA(Rich Internet Applications的缩写,中文含义为:丰富的因特网应用程序)的流行和普及,前端开发这个行业也开始备受关注. 前端开发的入门门槛其实很低,与服务器端语言先慢后快的学习曲线相比,前端开发的学习曲线是先快后慢.Web前端开发核心技术主要包括HTML.CSS.JavaScript等.HTML仅仅是简单的标记语言!CSS 只是无类型的样式修饰语言.当然可以勉强算作弱类型语言.Javascript 的基础部分相对来

浅谈IM软件业务知识—会话session的概念,附一张IM软件的层次图

session一般出现在计算机领域,IM软件中的session,老的IM有两层:首先是逻辑层的session来管理会话的参与者,消息列表,会话类型等等:还有协议层的session,主要是代表客户端跟服务器的一个事物通道. 老的IM软件 客户端跟Server交互的每一类操作都是基于会话.比如客户端登录,需要建立一个登录的会话:客户端发消息,需要建立一个会话.下面举例: 客户端向Server发了一条消息,这条消息的发送就建立在会话之上.客户端需要下面几个步骤. 1. 创建一个session ID=1

《.NET 设计规范》第 6 章:扩展性设计

第 6 章:扩展性设计 6.1 扩展机制 考虑用不包含任何虚成员或受保护的成员的非密封类来为框架提供扩展性.这种方法所提供的扩展性广受用户欢迎,而且它的开销也不高. 考虑将受保护的成员用于高级的定制方案. 要在对安全性.文档及兼容性进行分析时,把非密封类中受保护的成员当做公有成员那样来对待. 考虑使用回调函数来允许用户向框架提供自定义的代码供框架执行. 考虑使用事件来允许用户对框架的行为进行定制,这样就不需要用户对面向对象设计有深入的了解. 要优先使用事件,而不是简单的回调函数,其原因在于广大开

浅谈如何搭建一个项目,初学者对于架构程序的理解

经过坚持不懈的努力,终于学到了软件建模的部分,对于java的理解,也有了更深入的理解,首先,软件建模就是把软件的概念抽象出来,然后,建立成一个单独存取属性的类,比如说,你想做一个网站,大家都知道网站有很多题头,就像首页.内容.摘要.新闻,这些字段,就是网页抽象出的属性,而我们把他们抽象出来,封装成一个类,来对它进行控制,这个控制在java中叫做javabean,javabean就是建立一个都是属性(id,name,age,address)这样一个有getter和setter,实现序列化,有默认构

浅谈产品经理和项目经理

之前在网上关于产品经理和项目经理有一句很精辟的解释: 产品经理--靠想.产品经理是做正确的事,其所领导的产品是否符合市场的需求,是否能给公司带来利润的. 项目经理--靠做.项目经理是把事情做正确,把事情作得完美,在时间,成本和资源约束的条件下完成目标. 暂且不去评论这个说法正确与否,要了解产品经理与项目经理的异同,我们首先来聊聊什么是项目管理和产品管理. 1. 什么是产品和产品管理? 产品是指能够提供给市场,被人们使用和消费,并能满足人们某种需求的任何东西,包括有形的物品.无形的服务.组织.观念

数据库扩展性设计:使用二进制解决一条记录关联多个状态的问题

程序开发中,经常遇到一条记录有多个状态位,比如一条商品,他属于热门,新品,特卖.我们的数据库如何设计呢? 一般有几种方法 (1)建立关联表 关联表字段:关系Id,商品Id,属性Id 查询:使用关联表的方式,查询某属性的商品. 程序:写入时,写商品表和关联表: (2)将多个属性存在一个字段中,用|分割 状态存储在一个字段中,比如某条商品属于热卖,新品和特卖,则字段存储的值:01|02|03 SQL查询:使用like 程序处理:(1)取值需要先将01,02,03分割,再处理.(2)写入需要先将01,

浅谈 OneAPM 在 express 项目中的实践

[编者按]OneAPM 运营团队,近日在 github 上发现了一篇文章,特别奉献给大家.本文作者王宇先生从2015年年初就开始使用我们的产品,也是OneAPM 的忠实用户. OneAPM 是一个优秀的性能监控平台.为什么我们要使用性能监控呢? 并不是为了炫耀我有多么酷的玩具,仅仅因为我们希望在问题发生的第一时间就能知道. 在第一时间发现问题,把问题解决于无形之中,总比出了大麻烦通宵达旦加班舒服得多. 然而有的人喜欢说:「有些问题留着也不会有什么影响.」但我觉得服务端的事情, 凡是冒烟的地方,终

浅谈IM软件业务知识——非对称加密,RSA算法,数字签名,公钥,私钥

概述 首先了解一下相关概念:RSA算法:1977年由Ron Rivest.Adi Shamirh和LenAdleman发明的.RSA就是取自他们三个人的名字. 算法基于一个数论:将两个大素数相乘很easy,但要对这个乘积的结果进行 因式分解却很困难,因此可以把乘积公开作为公钥.该算法可以抵抗眼下已知的全部password攻击. RSA算法是一种非对称算法,算法须要一对密钥.使用当中一个 加密.须要使用另外一个才干解密.我们在进行RSA加密通讯时.就把公钥放在client,私钥留在server.