如何快速提高你的架构能力!

608 阅读4分钟

image.png

什么是系统架构设计?

就是以合理、科学的方式,对系统进行分层,并实现具备良好鲁棒性的系统

应该具备怎样的能力?

1,良好的鲁棒性
2,能够支持集群扩展
3,有良好的可靠性,且易维护的
4,能有效的进行迭代和兼容性

如果进行快速提高?

对于没有经历的人来说,这个往往会无从下手,这里笔者介绍一种简单易用的方法
按照下方笔者提供的架构设计框架,进行内容的填充

1,用科学的方法论搭建框架,就好比人体的骨骼;
2,填充搭建好的框架,填充的人有多壮,取决于此;
这样能够实现2个功能:
1,培养人的潜意识,增加架构设计的概念
2,按照科学的框架去实现,去思考,不敢说有多好,但是,一定不会有较大的纰漏,并能有效的避免角落情况

那么科学的方法论的框架是怎样的?

这个就是本篇文章的主旨
作者教你如何用科学的方法论来实现这个框架

科学的框架

他应该具备以下几点

  • 需求?
  • 架构设计
  • 系统接口
  • 数据结构
  • 容量评估?
  • 高级设计
  • 详细设计
  • 可能存在的瓶颈和解决的方法?

每当进行一个系统设计的时候,应该从该框架出发,认真考虑其中的每个环节
这样,你所设计出来的系统才不会偏,才是符合预期的!

  • 需求

需求是什么?这个很重要!
1,明确目标,搞清楚自己要做什么?
2,搞清楚自己能做什么?
3,最重要的是要了解非功能需求,这往往会触发角落情况

  • 架构设计

这个就是我们常见的架构图,表明清楚每个模块的功能和调用方式
良好的分层和抽象,能够帮助你的代码实现更加简洁科学、系统更具有良好的鲁棒性

  • 系统接口

明确系统中应该涉及到的接口
只有明确系统中应该由哪些接口组成,你才能明白自己应该干什么

例如:淘宝双十一的下单系统
buysth(userid, sthid, timestamp)
paysth(payid, userid, paystatus, timestamp)
getuser(userid, username, createtime)

  • 数据结构

1,考虑该场景下,数据模型应该是哪些,应该包含哪些?
2,选择合适的存储介质,是Mysql,还是NOSql或者分布式存储等
3,那么如果进行选择呢,这个就需要你深入了解组件的性质和使用场景,这个就需要后续的积累

  • 容量评估

1,你的系统的访问量多少?
2,每次访问量所带来的网络带宽消耗应该为多少?
3,数据量为多少?每个行数据占用的空间为多少?
4,如果涉及音视频存储,那么你的分布式存储介质又该为多少?
5,给服务器带来的压力为多少?多少CPU和内存消耗?

  • 数据分片

在大型分布式场景中,往往会牵扯数据分片的问题
例如:微博,或者tweeter 那你是基于什么条件来进行分片呢?
userId:是最容易想到的方式,也是实现较为简单的方式,但是这种方式的弊端也极为明显,那就是热门用户的服务器会爆,冷门用户的服务器,资产得不到充分的利用
weiboId:通过hash一致性,将数据均匀的分布在各个服务器上,就能避免上述所说的问题
所以,方向至关重要,只有在正确的方向上,才能越走越远,系统也是如此

  • 高级设计

主要可以用来描述该应用场景的特殊情况

  • 详细设计

主要针对一些tradeoff的补充和细节的描述

  • 存在的瓶颈和对应的解决方案?

由于历史包袱或者某些客观因素,导致,我们在做选择的时候不得不进行妥协
所以,这个时候,我们就需要把这些情况阐述清楚,最好能附带相应的优化方案,那就更完美了

如果,您有幸看到了这里,希望,我的文章能给您带来帮助或启发
未来道路且长,让我们一起砥砺前行