查看: 2153| 回复: 2
跳转到指定楼层
上一主题 下一主题
收起左侧

[经验总结] 从0到1: 如何让system自己design (2)

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x

上一篇: https://www.1point3acres.com/bbs/thread-1129505-1-1.html

接上文,我们可以用这两句话定义一个计算机系统:
  • it computes data
  • it stores data

这两句话里的compute和store当然可以替换成更具体的动词,同样data也太过抽象,在思考真实场景时我们把它换成系统中真实在被compute和store的东西就好。回到web crawler的例子
  • compute input URL into (output URLs + output webpages)
  • store (output URLs) + (output webpages)

到现在我们也不要急着去想系统黑箱里究竟发生了什么。我们应该做的是来具象化我们站在系统外面能看到些什么。
这里我要提一个重要的点:时间
我发现很少有套路会特别把“时间”这个点提出来,但是时间在一般系统理论中都是非常重要的因素。不考虑时间,我们没有办法描述系统状态的改变。我们人活在三维世界里,经历生老病死却是在第四维。而对于SD,如果我们不牢记时间也是系统的一部分,不管是throughput还是data retention甚至各种TTL都如同无从谈起。
说回来,站在系统外面,我们开始从静态描述转为动态,让时间参与进来。现在compute和store都有了时间这个描述的维度。
  • compute:size of data unit * compute time (latency) * count ==> throughput
  • storage: size of data unit * storage time (retention/TTL) * count

这就是一般套路里定义Scale的一步,但是实质上它是在动态的描述系统,加上了时间这个维度。不管是这一步做estimation还是后面deep dive的时候,我们都不能忘记系统是活在时间里的,任何external interaction/transaction和internal computation/storage都要考虑时间,concurrency issue和async这些,其实也都是在把静态的数据分摊到时间维度时data flow的问题。
----
下一步,我们还是在系统外面,像小学生造句一样,给上面两句话多加点形容词副词。
(不要着急用5W1H,那是再接下来的design和deep dive才需要做的事。实在不行就想想看见别人家小孩要尬夸一下,这里不要想具体细节,只要描述“聪明”“懂事”就行)
这里我分享一下我最常用的,我相信也是最适合中国宝宝的四个字:多!快!好!省!
多:scalable,extensible
快:high throughput,low latency
好:这个是重点
省:easy to maintain,less cost
多快好省其实已经把DDIA里面Reliability,scalability和maintainability都包括了。
多和快无需赘述,performance和scalability,每个系统都需要,而上文里对于动态系统变化的考虑就是相对应的目标。
“省”可能不是太明显,提到一嘴绝对是加分项。(比如怎么样避免redundancy,reduce complexity,是不是可以autoscaling等等)
而这个“好”是绝对的重点。就像哈姆雷特,每个系统之所以不同,就是这个“好”的标准不一样。需要强consistency?需要high availability?需要security?这个直接决定后续tradeoff的讨论。在学习各种SD的问题时,最需要抓住的core value就是这个好字。在面试里更要点出这个系统和其他系统相比最需要突出的“好”处是什么。
自此,抽象的部分也差不多做完了。大体上对应的就是通用套路里的Functional/Nonfunctional requirements和back of envelope estimation/scale definition。
----
总结一下:
Step 1: 拿到一个SD问题,我们来回答两句话,概括一下静态的系统:
  • it computes data
  • it stores data

Step 2: 增加时间的维度,来描述系统状态的改变
  • it computes (some amount of) data (of some size) (in some time)
  • it stores (some amount of) dat (of some size) (for some time)

Step 3:我们的目标是多,快,好,省!
----
如果有帮助请加大米,后续可能还会写一些关于high level和deep dive的思路。欢迎大家反馈。

评分

参与人数 6大米 +7 收起 理由
chuxiaoyou + 1 楼主/层主请继续!
Jerry7 + 2 给你点个赞!
秋明车山神 + 1 给你点个赞!
一片云的猫 + 1 赞一个
Jaywolf + 1 给你点个赞!

查看全部评分


上一篇:从0到1: 如何让system自己design
下一篇:有没有人跟我一样觉得jordan has no life讲的很垃圾
🔗
Jerry7 2025-7-27 03:42:13 | 只看该作者
全局:
敲碗下一篇
回复

使用道具 举报

🔗
Jerry7 2025-7-27 06:26:34 | 只看该作者
全局:
能不能總結完 我覺得看了又提升了一個層級
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表