切换数据挖掘系统后台有感---我也谈一次“架构”

看到“架构”这两个字,其实我很郁闷,这两个字被很多人用烂了,在此我用“系统控制”来代替,以下可能包含某某大架构师说过得话请海涵

经过两个人5个月的时间(其中包括过年和我因结婚一个月没上班),我将公司后台数据挖掘系统(除核心算法之外)全部重构,上线之后没出过大问题,有感而发...

 

系统控制最重要的两点

  • 充分的了解系统需求,需求都不了解,一边呆着去。
  • 控制系统各单元的原子性---保证只做一件单一的事情!
    • 类(包括类中函数)<->工程子模块<->独立的工程<->系统子模块<->系统,任何一个地方都要保证原子性,都要保证解耦合;我曾经跟同事说过一句话:我们的工作就是不停的抽象再抽象,今天我补充一句,“然后我们再来封装“;我从类到系统用的双向箭头,从类到系统实际就是我们的封装的过程,从系统到类,到类中函数就是抽象的过程;
      • 封装---从类到系统,这是编码人员最需要考虑的工作,请保证别耦合!
      • 抽象---从系统到类,这是架构师最需要考虑的工作,请保证粒度!
    • 人人都是系统控制师
      • ”控制系统因人而异“---修订”架构因人而异“
        • 架构师需要考虑两种粒度:
        • 从类(包括类中函数)到系统的粒度,这是毫无疑问的
        • 在你团队的程序员面前以及你项目的紧要程度,你需要考虑到类级别还是工程级别?
      • 任何一个程序员至少要考虑的两件事:
        • 将你的子模块抽象成类、类中函数
        • 将你的类封装成子模块
    • 把握原子性的粒度,一句没错的废话
      • 我无话可说,这完全靠经验和魄力控制
    • 保证了原子性,你的系统可以经受更强烈的需求变化,你可以将你的系统变化控制到一个可以控制的最小范围

我的系统结构,以后有机会将公开解释各名字含义

  • 第一块,lib
    • 可开源的lib(NTL)
    • 公司级的几乎所有工程都要用到的lib,与公司系统结构有关(MTP)
    • 不同产品都需要用到的产品级的lib,公司特有(trainman)
    • 算法lib,部分可开源,由于各公司有各公司的需求(labs)
  • 第二块,工程工具
    • 代码生成器,大量工程对以上lib的封装有千篇一律的代码
    • 框架,不用代码生成器了,挂载个module就可以用
  • 第三块,系统子模块
    • 由框架或者代码生成器生成的代码加上算法lib生成的各种系统子模块
  • 第四块,产品
    • 将系统子模块串起来

 

顺便BS一下CSDN的这个编辑器,排版超难

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值