个人软件架构方法论

咱们公司内部职级晋升中,当目标职级比较资深或者专家后,有一项考察内容是:有本身的方法论。数据库

什么是方法论

方法论不少人听过,但是不少人也在问什么是方法论?缓存

方法论是咱们对于不少事情进行思考沉淀后,具备总结性的指导思想。性能优化

好比不少名言警句就能够是方法论。架构

  • 近朱者赤,近墨者黑
  • 勤能补拙

软件架构方法论

少便是多

一次有人问我,你有没有总结过你的方法论? 我说个人方法论是:少便是多。并发

以前对系统接口进行性能和稳定性的优化,第一期优化的效果还能够,他们问我都用了哪些技术手段,用了哪些新东西。 我说我删了5k行代码,他没说你的方法论就是“删代码”。高并发

最开始接到这个系统的时候,努力去整明白他里面作的事情是很难的。 等一部分代码逻辑明白后,发现里面作了不少无用功,多是以前的系统设计的太烂了,彻底没有考虑到后续扩展的方向,也多是产品的需求改了又改,大部分代码都只能为了适应业务迭代而修修补补,结果形成了一大堆无效而冗余的代码存在。性能

因而首先是梳理系统响应接口的主要目的,梳理上下文逻辑,梳理数据流逻辑,删除冗余代码,让代码编写的更易读,更整洁,更优雅。 对代码逻辑进行抽离,和封装,复用。单元测试

不少人看待代码分离,都只是简单对分层,分模块。 我写代码主要的分离除了上面两点,还有一个是计算和存储分离,这个点后面讲。测试

总之这个可用性和性能优化,仅仅经过“删代码”就达到了目标,为将来的进一步优化带来了不少空间。大数据

咱们内部有个代码统计系统,每次发版打tag都会进行一次统计,别人每次都是绿色的加号,+500,代码增长了500行。 个人每次都是红色的减号,-1500,我又删了1500行代码。

面向大数据系统设计

上面说了,我分代码逻辑还有一个是计算和存储分离。

不少人写代码,除了写面条代码外,虽然说能够分红不少子方法,子模块,代码行数控制到80行,但是依然难读。 由于这样作只是简单的文字分页而已,并非一个软件开发的思想。

我写代码通常会考虑这个功能是读功能仍是,写功能,进行抽离,这样的话读功能在数据量上来以后咱们能够作不少咱们可扩展的能力,好比拆库拆表,好比引入缓存,好比多存储介质存储等,彻底不用关系业务逻辑问题。

计算和存储分离是数据库的执行方式,底层在磁盘上的B树负责存储,上层的SQL Parser负责计算,咱们系统也能够具备这样的逻辑,这样咱们能够零成本的切换存储,而不应上层代码逻辑,达到更好的单元测试。

因此这里的方法论是:面向大数据系统设计。

在互联网系统中,数据的增加,业务的发展,用户的增长,是远远快于系统迭代的,只有咱们将咱们的单机系统代码设计的具备面向大数据高并发场景的时候,系统才具备可扩展,易扩展的能力,才能承载更多的数据压力,也变得更稳定。

相关文章
相关标签/搜索