- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
作者: Grey 。
原文地址:
博客园:架构设计(九):估算 。
CSDN:架构设计(九):估算 。
估算在系统设计中非常重要,这决定了你的设计是否可以满足要求,要实现比较靠谱的估算,就需要对如下几个概念熟练掌握 。
第一个概念:二的幂 。
尽管在处理分布式系统时,数据量可能是巨大的,但计算都可以归结为基础知识。为了获得正确的计算结果,关键是要知道使用2的幂的数据量单位。一个字节是一个8位的序列。一个ASCII字符使用一个字节的内存(8位)。可参考如下表格 。
次幂 | 近似值 | 名称 |
---|---|---|
10 | 1000 | 1KB |
20 | 100万 | 1MB |
30 | 10亿 | 1GB |
40 | 1万亿 | 1TB |
50 | 1千万亿 | 1PB |
第二个概念:关于延时指标的常见场景 。
注:以下指标说明来自 J. Dean.Google Pro Tip: Use Back-Of-The-Envelope-Calculations To Choose The Best Design ,虽然是基于2010年的状况,但是目前这些指标还是有一定的参考价值.
操作 | 参考时间量级 |
---|---|
L1高速缓存 | 0.5 ns |
分支错误预测 | 5 ns |
L2高速缓存 | 7 ns |
互斥器锁定/解锁 | 100 ns |
主内存 | 100 ns |
用Zippy压缩1K字节 | 10,000 ns |
通过1 Gbps网络发送2K字节 | 20,000 ns |
从内存中连续读取1MB | 250,000 ns |
在同一数据中心内的数据往返 | 500,000 ns |
磁盘搜索 | 10,000,000 ns |
从网络中连续读取1MB | 10,000,000 ns |
从磁盘顺序读取1MB | 30,000,000 ns |
上述场景也有一个可视化的工具可以查看,见 Latency Numbers Every Programmer Should Know 目前展示到了 2020 年.
通过分析上述数字,可以得到以下结论.
内存很快,但磁盘很慢.
如果可能的话,要避免磁盘寻道.
简单的压缩算法是快速的.
如果可能的话,在通过互联网发送数据之前要进行压缩.
数据中心通常在不同地区,在它们之间发送数据需要时间 。
第三个需要了解的概念是:系统可用时间百分比 。
高可用性是指一个系统在一个理想的长时间内持续运行的能力。高可用性是以百分比来衡量的,100%意味着一个服务没有停机时间。大多数服务在99%和100%之间。服务水平协议(SLA)是服务提供者的一个常用术语。这是你(服务提供商)和你的客户之间的协议,这个协议正式定义了你的服务将提供的正常运行时间水平,正常运行时间传统上是以九为单位衡量。九位数越多,越好。如表2-3所示,九位数与预期的系统停机时间相关.
可用性 | 平均每天停机时间 | 平均每年停机时间 |
---|---|---|
99% | 14.40分钟 | 3.65天 |
99.9% | 1.44分钟 | 8.77小时 |
99.99% | 8.64秒 | 52.6分钟 |
99.999% | 864毫秒 | 5.26分钟 |
99.9999% | 86.4毫秒 | 31.56秒 |
云供应商 亚马逊 、 谷歌 和 微软 将其SLA设定为99.9%或以上.
System Design Interview 。
最后此篇关于架构设计(九):估算的文章就讲到这里了,如果你想了解更多关于架构设计(九):估算的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
架构设计(九):估算 作者: Grey 。 原文地址: 博客园:架构设计(九):估算 。 CSDN:架构设计(九):估算 。 估算在系统设计中非常重要,这决定了你的设计是否可以满足要求,
我有以下 JavaScript 代码,它使用 sql.js库与远程 SQL 数据库通信。 var xhr = new XMLHttpRequest(); xhr.open('GET', 'https:
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 4年前关闭。 Improve this questi
我正在使用启用了 ARC 的 Cocos2d 2.0。我的游戏是一个随机生成的游戏,所以我需要在游戏中间的场景中加载/卸载纹理(spritesheet-batchnode)。我正在尝试从文件中删除 s
我有一个不完整的数据框,incomplete_df,如下所示。我想用相应 id 的平均 amount 来估算缺失的 amount。如果该特定 id 的平均值本身就是 NaN(参见 id=4),我想使用
我正在研究 NOAA AVHRR 31 年的每日海面温度 (SST) 数据。数据采用 NetCDF 格式,维度为 28(经)x 40(纬度)x 11686(天)。我应该计算每月的气候平均值(例如 31
我想为给定现有值的变量估算缺失值。 在 var2 ,我们注意到有很多NA s。 如果任何 2 个 ID 相同,则它们的值 var2是相同的。 如果 id 没有 var2 的值,就像 id==2 的情况
我想了解(大概)读取 Android SD 卡上存储的大文件(50MB 到 100MB)需要多长时间。我在 Google Nexus One 上的 Android 2.3.3 上使用以下代码。这会给我
估计 json 对象(如果 JSon 大小可用)将在 MongoDB 中占用多少存储内存的最佳方法是什么?有某种相关公式吗? 最佳答案 有 Object.bsonsize() 方法 mongo She
我有缺失值的数据框 (DF1),我想从不同的数据框 (DF2) 中估算这些缺失值,同时保留索引而不对它们进行排序(非常重要)。我正试图找到最有效的方法来做到这一点。 DF1: index id t
我正在尝试估算将返回大量结果的应用引擎查询的结果总量。 为了做到这一点,我为每个实体分配了一个介于 0 和 1 之间的随机 float 。然后我执行了我想用以下 3 个设置估计总结果的查询: * I
我正在尝试制作一个简单的 js 机器人,它检查每个区 block 的 eth(或链的主要 token )并将其发送到另一个钱包。 我有一个工作机器人: const { ethers } = requi
我最近一直在考虑将 Azure 作为许多具有 MSSql 数据库后端的小型 asp.net 网站的托管平台。我目前使用非 Microsoft 主机,每月收取固定费用。 我看过的 Azure 演示和网络
我是 C++ 新手。我正在尝试使用计算机系统的随机数生成器根据 Ernesto Cesaro 定理统计确定 Pi 的值。但是我现在所做的可以输入一个种子数并生成100个伪随机数,然后估计pi的值。生成
在我看来,我并不完全理解 FLOPS 的概念。在 CUDA SAMPLES 中,有 Matrix Multiplication Example (0_Simple/matrixMul)。在此示例中,每
我是一名优秀的程序员,十分优秀!