several advice for better translation

This commit is contained in:
sunt-ing 2020-12-28 14:05:12 +08:00
parent 48566399c2
commit e1309fafba
3 changed files with 9 additions and 9 deletions

14
ch8.md
View File

@ -216,11 +216,11 @@
为什么数据中心网络和互联网使用分组交换?答案是,它们针对**突发流量bursty traffic**进行了优化。一个电路适用于音频或视频通话,在通话期间需要每秒传送相当数量的比特。另一方面,请求网页,发送电子邮件或传输文件没有任何特定的带宽要求——我们只是希望它尽快完成。 为什么数据中心网络和互联网使用分组交换?答案是,它们针对**突发流量bursty traffic**进行了优化。一个电路适用于音频或视频通话,在通话期间需要每秒传送相当数量的比特。另一方面,请求网页,发送电子邮件或传输文件没有任何特定的带宽要求——我们只是希望它尽快完成。
如果你想通过电路传输文件,你将不得不猜测一个带宽分配。如果您猜的太低传输速度会不必要的太慢导致网络容量闲置。如果你猜的太高电路就无法建立因为如果无法保证其带宽分配网络不能建立电路。因此使用用于突发数据传输的电路浪费网络容量并且使传输不必要地缓慢。相比之下TCP动态调整数据传输速率以适应可用的网络容量。 如果想通过电路传输文件,你得预测一个带宽分配。如果你猜的太低传输速度会不必要的太慢导致网络容量闲置。如果你猜的太高电路就无法建立因为如果无法保证其带宽分配网络不能建立电路。因此使用用于突发数据传输的电路浪费网络容量并且使传输不必要地缓慢。相比之下TCP动态调整数据传输速率以适应可用的网络容量。
已经有一些尝试去建立支持电路交换和分组交换的混合网络比如ATM[^iii] InfiniBand有一些相似之处【35】它在链路层实现了端到端的流量控制从而减少了在网络中排队尽管它仍然可能因链路拥塞而受到延迟【36】。通过仔细使用**服务质量quality of service,**QoS数据包的优先级和调度和**准入控制admission control**(限速发送器),可以仿真分组网络上的电路交换,或提供统计上的**有限延迟**【25,32】。 已经有一些尝试去建立支持电路交换和分组交换的混合网络比如ATM[^iii] InfiniBand有一些相似之处【35】它在链路层实现了端到端的流量控制从而减少了在网络中排队尽管它仍然可能因链路拥塞而受到延迟【36】。通过仔细使用**服务质量quality of service,**QoS数据包的优先级和调度和**准入控制admission control**(限速发送器),可以仿真分组网络上的电路交换,或提供统计上的**有限延迟**【25,32】。
[^iii]: **异步传输模式Asynchronous TransferMode, ATM**在20世纪80年代是以太网的竞争对手【32】但在电话网核心交换机之外并没有得到太多的采用。与自动柜员机也称为自动取款机无关尽管共用一个缩写词。或许在一些平行的世界里互联网是基于像ATM这样的东西互联网视频通话可能比我们的更可靠,因为它们不会遭受丢包和延迟的包裹。 [^iii]: **异步传输模式Asynchronous TransferMode, ATM**在20世纪80年代是以太网的竞争对手【32】但在电话网核心交换机之外并没有得到太多的采用。与自动柜员机也称为自动取款机无关尽管共用一个缩写词。或许在一些平行的世界里互联网是基于像ATM这样的东西此它们的互联网视频通话可能比我们的更可靠,因为它们不会遭受丢包和延迟的包裹。
但是,目前在多租户数据中心和公共云或通过互联网[^iv]进行通信时,此类服务质量尚未启用。当前部署的技术不允许我们对网络的延迟或可靠性作出任何保证:我们必须假设网络拥塞,排队和无限的延迟总是会发生。因此,超时时间没有“正确”的值——它需要通过实验来确定。 但是,目前在多租户数据中心和公共云或通过互联网[^iv]进行通信时,此类服务质量尚未启用。当前部署的技术不允许我们对网络的延迟或可靠性作出任何保证:我们必须假设网络拥塞,排队和无限的延迟总是会发生。因此,超时时间没有“正确”的值——它需要通过实验来确定。
@ -271,7 +271,7 @@
[^v]: 虽然时钟被称为实时时钟但它与实时操作系统无关如第298页上的“[响应时间保证](#响应时间保证)”中所述。 [^v]: 虽然时钟被称为实时时钟但它与实时操作系统无关如第298页上的“[响应时间保证](#响应时间保证)”中所述。
时钟通常与NTP同步这意味着来自一台机器的时间戳理想情况下意味着与另一台机器上的时间戳相同。但是如下节所述时钟也具有各种各样的奇特之处。特别是如果本地时钟在NTP服务器之前太远则它可能会被强制重置看上去好像跳回了先前的时间点。这些跳跃以及他们经常忽略闰秒的事实使时钟不能用于测量经过时间【38】。 时钟通常与NTP同步这意味着来自一台机器的时间戳理想情况下与另一台机器上的时间戳相同。但是如下节所述时钟也具有各种各样的奇特之处。特别是如果本地时钟在NTP服务器之前太远则它可能会被强制重置看上去好像跳回了先前的时间点。这些跳跃以及他们经常忽略闰秒的事实使时钟不能用于测量经过时间【38】。
时钟还具有相当粗略的分辨率例如在较早的Windows系统上以10毫秒为单位前进【39】。在最近的系统中这已经不是一个问题了。 时钟还具有相当粗略的分辨率例如在较早的Windows系统上以10毫秒为单位前进【39】。在最近的系统中这已经不是一个问题了。
@ -385,13 +385,13 @@
while(true){ while(true){
request=getIncomingRequest(); request=getIncomingRequest();
// 确保租约还剩下至少10秒 // 确保租约还剩下至少10秒
if (lease.expiryTimeMillis-System.currentTimeMillis()< 10000){ if (lease.expiryTimeMillis-System.currentTimeMillis() < 10000){
lease = lease.renew(); lease = lease.renew();
} }
if(lease.isValid()){ if(lease.isValid()){
process(request); process(request);
}} }
} }
``` ```
@ -485,7 +485,7 @@ while(true){
如果一个节点继续表现为**天选者**,即使大多数节点已经声明它已经死了,则在考虑不周的系统中可能会导致问题。这样的节点能以自己赋予的权能向其他节点发送消息,如果其他节点相信,整个系统可能会做一些不正确的事情。 如果一个节点继续表现为**天选者**,即使大多数节点已经声明它已经死了,则在考虑不周的系统中可能会导致问题。这样的节点能以自己赋予的权能向其他节点发送消息,如果其他节点相信,整个系统可能会做一些不正确的事情。
例如,[图8-4](img/fig8-4.png)显示了由于不正确的锁实现导致的数据损坏错误。 这个错误不仅仅是理论上的HBase曾经有这个问题【74,75】假设你要确保一个存储服务中的文件一次只能被一个客户访问因为如果多个客户试图对此,该文件将被损坏。您尝试通过在访问文件之前要求客户端从锁定服务获取租约来实现此目的。 例如,[图8-4](img/fig8-4.png)显示了由于不正确的锁实现导致的数据损坏错误。 这个错误不仅仅是理论上的HBase曾经有这个问题【74,75】假设你要确保一个存储服务中的文件一次只能被一个客户访问因为如果多个客户试图对此写入,该文件将被损坏。您尝试通过在访问文件之前要求客户端从锁定服务获取租约来实现此目的。
![](img/fig8-4.png) ![](img/fig8-4.png)
@ -503,7 +503,7 @@ while(true){
我们假设每次锁定服务器授予锁或租约时,它还会返回一个**防护令牌fencing token**,这个数字在每次授予锁定时都会增加(例如,由锁定服务增加)。然后,我们可以要求客户端每次向存储服务发送写入请求时,都必须包含当前的防护令牌。 我们假设每次锁定服务器授予锁或租约时,它还会返回一个**防护令牌fencing token**,这个数字在每次授予锁定时都会增加(例如,由锁定服务增加)。然后,我们可以要求客户端每次向存储服务发送写入请求时,都必须包含当前的防护令牌。
在[图8-5](img/fig8-5.png)中客户端1以33的令牌获得租约但随后进入一个长时间的停顿并且租约到期。客户端2以34的令牌该数字总是增加获取租约然后将其写入请求发送到存储服务包括34的令牌。稍后客户端1恢复生机并将其写入存储服务包括其令牌值33.但是存储服务器会记住它已经处理了一个具有更高令牌编号34的写入因此它会拒绝带有令牌33的请求。 在[图8-5](img/fig8-5.png)中客户端1以33的令牌获得租约但随后进入一个长时间的停顿并且租约到期。客户端2以34的令牌该数字总是增加获取租约然后将其写入请求发送到存储服务包括34的令牌。稍后客户端1恢复生机并将其写入存储服务包括其令牌值33但是存储服务器会记住它已经处理了一个具有更高令牌编号34的写入因此它会拒绝带有令牌33的请求。
如果将ZooKeeper用作锁定服务则可将事务标识`zxid`或节点版本`cversion`用作防护令牌。由于它们保证单调递增因此它们具有所需的属性【74】。 如果将ZooKeeper用作锁定服务则可将事务标识`zxid`或节点版本`cversion`用作防护令牌。由于它们保证单调递增因此它们具有所需的属性【74】。

2
ch9.md
View File

@ -301,7 +301,7 @@
这种行为的原因是每个CPU核都有自己的内存缓存和存储缓冲区。默认情况下内存访问首先走缓存任何变更会异步写入主存。因为缓存访问比主存要快得多【45】所以这个特性对于现代CPU的良好性能表现至关重要。但是现在就有几个数据副本一个在主存中也许还有几个在不同缓存中的其他副本而且这些副本是异步更新的所以就失去了线性一致性。 这种行为的原因是每个CPU核都有自己的内存缓存和存储缓冲区。默认情况下内存访问首先走缓存任何变更会异步写入主存。因为缓存访问比主存要快得多【45】所以这个特性对于现代CPU的良好性能表现至关重要。但是现在就有几个数据副本一个在主存中也许还有几个在不同缓存中的其他副本而且这些副本是异步更新的所以就失去了线性一致性。
为什么要做这个权衡对多核内存一致性模型而言CAP定理是没有意义的在同一台计算机中我们通常假定通 信都是可靠的。并且我们并不指望一个CPU核能在脱离计算机其他部分的条件下继续正常工作。牺牲线性一致性的原因是**性能performance**,而不是容错。 为什么要做这个权衡对多核内存一致性模型而言CAP定理是没有意义的在同一台计算机中我们通常假定通信都是可靠的。并且我们并不指望一个CPU核能在脱离计算机其他部分的条件下继续正常工作。牺牲线性一致性的原因是**性能performance**,而不是容错。
许多分布式数据库也是如此:它们是**为了提高性能**而选择了牺牲线性一致性而不是为了容错【46】。线性一致的速度很慢——这始终是事实而不仅仅是网络故障期间。 许多分布式数据库也是如此:它们是**为了提高性能**而选择了牺牲线性一致性而不是为了容错【46】。线性一致的速度很慢——这始终是事实而不仅仅是网络故障期间。

View File

@ -24,7 +24,7 @@ Alibaba+-Finplus 架构师/全栈工程师 (2015 ~ 2017)
《设计数据密集型应用》封面上的动物是**印度野猪Sus scrofa cristatus**,它是在印度、缅甸、尼泊尔、斯里兰卡和泰国发现的一种野猪的亚种。与欧洲野猪不同,它们有更高的背部鬃毛,没有体表绒毛,以及更大更直的头骨。 《设计数据密集型应用》封面上的动物是**印度野猪Sus scrofa cristatus**,它是在印度、缅甸、尼泊尔、斯里兰卡和泰国发现的一种野猪的亚种。与欧洲野猪不同,它们有更高的背部鬃毛,没有体表绒毛,以及更大更直的头骨。
印度野猪有一头灰色或黑色的头发脊背上有短而硬的毛。雄性有突出的犬齿称为T用来与对手战斗或抵御掠食者。雄性比雌性大这些物种平均肩高33-35英寸体重200-300磅。他们的天敌包括熊、老虎和各种大型猫科动物。 印度野猪有一头灰色或黑色的头发脊背上有短而硬的毛。雄性有突出的犬齿称为T用来与对手战斗或抵御掠食者。雄性比雌性大这些物种平均肩高33-35英寸体重200-300磅。他们的天敌包括熊、老虎和各种大型猫科动物。
这些动物夜行且杂食——它们吃各种各样的东西包括根、昆虫、腐肉、坚果、浆果和小动物。野猪经常因为破坏农作物的根被人们所熟知他们造成大量的破坏并被农民所敌视。他们每天需要摄入4,000 ~ 4,500卡路里的能量。野猪有发达的嗅觉这有助于寻找地下植物和挖掘动物。然而它们的视力很差。 这些动物夜行且杂食——它们吃各种各样的东西包括根、昆虫、腐肉、坚果、浆果和小动物。野猪经常因为破坏农作物的根被人们所熟知他们造成大量的破坏并被农民所敌视。他们每天需要摄入4,000 ~ 4,500卡路里的能量。野猪有发达的嗅觉这有助于寻找地下植物和挖掘动物。然而它们的视力很差。