本文介绍了计算机体系领域常用的12个经验法则,主要来自施教授著作的计算机系统研究基础,并结合网上的资料等一些总结,希望对大家有所帮助。
1.摩尔定律(Moore's law)
- 当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。
2.阿姆达尔定律(Amdahl's law)
- 阿姆达尔定律给出了任务在固定负载的情况下,随着系统资源的提升,执行速度的理论上限。
端对端原则(the end-to-end principle)
- 端到端原则是一种分布式系统中各模块间功能定位的设计原理,指从代价和性能的角度分析,在网络的最核心的部分应该只做数据的传输而不能去做一些其他的应用,而数据是否正确传输则应该放到应用层去检查和判断,从而保证互联网核心的简单性、可维护性和可扩展性。
- https://blog.csdn.net/do_best_/article/details/79755904
二八定律(The 80/20 Rule)
- 在任何一组东西中,最重要的只占其中一小部分,约20%,其余80%尽管是多数,却是次要的,因此又称二八定律。
优化常用部分(Optimization for Common)
- 你应该花费更多的精力优化系统常用的组件中
分布式计算的八大谬误(The eight fallacies of distributed computing)
网络是可靠的(The network is reliable)
- 需要考虑以下几点
- retry
- acknowledge important messages
- identify/ignore duplicates
- reorder messages
- verify message integrity
无延迟( Latency is zero)
- 延迟指数据从一个地方传递到另一个地方需要多长时间
- 带宽则是决定了同时可以传输多少数据
带宽是无限的(Bandwidth is infinite)
- 带宽无限的谬论主要有两方面原因:
- 随着带宽的增长,我们传输的数据也在增加;
- 丢包问题
网络是安全的(The Network is Secure)
- 作为一个架构师你不必要是一个安全专家,但是你需要了解它,知道怎么去解决它。
拓扑是不变的(Topology doesn’t change)
- 可能这个谬论的得来是只有在实验环境中Topology 才不会变,给我们的启示:
- 不要依赖特定的路由或节点
- 需要同时提供位置透明性或发现服务
- 只有一个管理员(There is one administrator)
传输无成本(Transport cost is zero)
- 会消费时间、计算资源、金钱
网络是同构的(The network is homogeneous)
- 网络是同构的,这是最后一个谬论。我们需要注意不用去依赖一些自营的协议,这样后续在集成的时候会遇到大麻烦。
- https://www.jianshu.com/p/56e9f83fdd06
CAP定理(CAP theorem)
- CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。
- 一致性(Consistency) (所有节点在同一时间具有相同的数据)
- 可用性(Availability) (保证每个请求不管成功或者失败都有响应)
- 分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)
- https://blog.csdn.net/jerrydai90/article/details/56481023
零.壹.无穷规则(Zero-One-Infinity Rule)
- 一个程序永远需要考虑零输入,单输入和无穷输入的情况。(让我们设计时要充分思考程序的边界)
- https://www.moon-soft.com/doc/42547.htm
五分钟法则(Five-Minute Rule)
- 如果一条记录频繁被访问,就应该放到内存里,否则的话就应该待在硬盘上按需要再访问。这个临界点就是五分钟。
- http://blog.haohtml.com/archives/3997
KISS原则(KISS principle )
- 即使解决方案看起来很愚蠢,简单的解决方案也比复杂的解决方案好。
- https://blog.csdn.net/weixin_40539125/article/details/105010526
间接解耦模块(Decouple modules with indirection)
- 设计中间模块为系统解耦
利特尔法则(Little's law)
- 在一个稳定的系统(L)中,长期的平均顾客人数,等于长期的有效抵达率(λ),乘以顾客在这个系统中平均的等待时间(W);用一个代数式来表达:L = λ * W
- 例子:我们要计算大学里平均有多少人N, 知道升学率即每年入学人数为 λ ,每个人在大学里的平均逗留时间为T(一般是4年), 那么我们自己计算的时候都是直接用每年入学人数乘以4年,也就是N = T。 也就是说,一个系统内的平均个体数量=平均个体到达率 x 平均个体逗留时间。
- https://www.zhihu.com/question/31271590
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。