improve ch2 translation - #386
Merged
Merged
Conversation
Contributor
Author
|
吐槽一下:第二章翻译的质量相较于第一章翻译断崖式下滑😫 |
Collaborator
感谢对翻译的仔细更新! 这里的翻译应该都是先用的机器翻译,但相比较原书第一版的翻译已经经过很多位朋友一起的校订更新,第二版目前的校订量还很少,所以翻译质量上可能会相差比较大,望多多包涵&多提PR,感谢! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
第二章部分翻译润色。
改动点如下:
物化视图加速了读取,但作为回报,我们必须在写入时做更多的工作。对于大多数用户来说,写入成本是适度的
物化视图加速了读取,但作为 交换,我们必须在写入时做更多的工作。对于大多数用户来说,写入成本是 适中的
The materialized view speeds up reads, but in return we have to do more work on write. The cost of writes for most users is modest
在社交网络上处理名人仍然需要大量基础设施
处理社交网络上的名人 仍然需要大量基础设施
handling celebrities on a social network can require a lot of infrastructure
从用户发出请求到收到所请求答案的经过时间
从用户发出请求到收到请求 应答 所经过的时间
The elapsed time from the moment when a user makes a request until they receive the requested answer
以及至少 99.9% 的有效请求导致非错误响应的目标
以及至少 99.9% 的有效请求 产生 非错误响应的目标
and a target that at least 99.9% of valid requests result in non-error responses
反直觉地,在这种容错系统中
反直觉地 是,在这种容错系统中
Counter-intuitively, in such fault-tolerant systems
本书主要涉及可以治愈的故障类型
本书主要涉及可以 恢复 的故障类型
this book mostly deals with the kinds of faults that can be cured
大约 2-5% 的磁性硬盘驱动器每年发生故障
大约 2-5% 的 硬磁盘 驱动器每年发生故障
Approximately 2–5% of magnetic hard drives fail per year
我们因此应该期望平均每天有一个磁盘故障
我们因此应该 认为 平均每天有一个磁盘故障
we should therefore expect on average one disk failure per day
这个错误率高于磁性硬盘驱动器
这个错误率高于 硬磁盘 驱动器
this error rate is higher than that of magnetic hard drives
可能是由于制造缺陷
可能是制造缺陷 造成的
likely due to manufacturing defects
即使使用纠错码(ECC)的内存,超过 1% 的机器在给定年份遇到不可纠正的错误
即使使用纠错码(ECC)的内存,也有 超过 1% 的机器在 给定年限内 遇到不可纠正的错误
Even when memory with error-correcting codes (ECC) is used, more than 1% of machines encounter an uncorrectable error in a given year
某些病理内存访问模式可以以高概率翻转位
某些 病态的 内存访问模式 可能会以很高的概率翻转比特位
Moreover, certain pathological memory access patterns can flip bits with high probability
整个数据中心可能变得不可用(例如,由于停电或网络配置错误)甚至被永久摧毁(例如,由火灾、洪水或地震)
整个数据中心可能变得不可用(例如,由于停电或网络配置错误)甚至被永久摧毁(例如,由于 火灾、洪水或地震)
An entire datacenter might become unavailable (for example, due to power outage or network misconfiguration) or even be permanently destroyed (for example by fire, flood, or earthquake)
只要你可以轻松更换变得有故障的硬件
只要你能够 轻松地更换出现故障 的硬件
as long as you can easily replace hardware that becomes faulty
整个服务器机架或整个数据中心的不可用仍然比我们希望的更频繁地发生
整个服务器机架或整个数据中心的不可用仍然比我们 预期 的更频繁地发生
unavailability of an entire server rack or an entire datacenter still happens more often than we would like
他们的力量是创造性和适应性地完成工作。然而,这一特征也导致不可预测性,有时会导致失效的错误,尽管有最好的意图
他们的 优势 是创造性和适应性地完成工作。然而,这一特征也导致 了 不可预测性,有时会导致失效的错误,即使本意是好的
their strength is being creative and adaptive in getting their job done. However, this characteristic also leads to unpredictability, and sometimes mistakes that can lead to failures, despite best intentions
将这些问题标记为"人为错误"并希望通过更严格的程序和规则合规性来更好地控制人类行为来解决它们是很诱人的。然而,责怪人们的错误是适得其反的。我们所说的"人为错误"实际上不是事件的原因,而是人们在社会技术系统中尽力做好工作的问题的症状
人们很自然地倾向于将这类问题归咎于“人为错误”,并希望通过更严格的程序和规则遵守来更好地控制人为行为从而解决问题。然而,将错误归咎于人是适得其反的。我们所说的“人为错误”并非事件的真实原因,而是人们尽力工作时,社会技术系统中存在问题的征兆
It is tempting to label such problems as “human error” and to wish that they could be solved by better controlling human behavior through tighter procedures and compliance with rules. However, blaming people for mistakes is counterproductive. What we call “human error” is not really the cause of an incident, but rather a symptom of a problem with the sociotechnical system in which people are trying their best to do their jobs
备注:这句话几乎完全重新翻译了
包括彻底测试(手写测试和对大量随机输入的 属性测试)、快速回滚配置更改的回滚机制、新代码的逐步推出、详细和清晰的监控、用于诊断生产问题的可观测性工具
包括彻底测试(手写测试和对大量随机输入的 属性测试)、快速回滚配置更改的回滚机制、新代码的 渐进部署、详细和清晰的监控、用于诊断生产问题的可观测性工具
including thorough testing (both hand-written tests and property testing on lots of random inputs), rollback mechanisms for quickly reverting configuration changes, gradual roll-outs of new code, detailed and clear monitoring, observability tools for diagnosing production issues
组织通常优先考虑创收活动而不是增加其抵御错误的韧性的措施。如果在更多功能和更多测试之间有选择,许多组织可以理解地选择功能。鉴于这种选择,当可预防的错误不可避免地发生时,责怪犯错误的人是没有意义的——问题是组织的优先事项
组织通常优先考虑创收活动而不是增加其抵御错误的 韧性措施。如果要在更多功能和更多测试之间 做出选择,许多组织 会很自然地选择功能。鉴于这种选择,当可预防的错误不可避免地发生时,责怪犯错误的人是没有意义的—— 问题在于组织的事项优先级
organizations often prioritize revenue-generating activities over measures that increase their resilience against mistakes. If there is a choice between more features and more testing, many organizations understandably choose features. Given this choice, when a preventable mistake inevitably occurs, it does not make sense to blame the person who made the mistake—the problem is the organization’s priorities
你应该对简单化的答案持怀疑态度。"鲍勃在部署该更改时应该更加小心"是没有成效的,但"我们必须用 Haskell 重写后端"也不是
你应该对简单化的答案持怀疑态度。"鲍勃在部署该更改时应该更加小心"是 没有意义的,"我们必须用 Haskell 重写后端" 也一样
you should be suspicious of simplistic answers. “Bob should have been more careful when deploying that change” is not productive, but neither is “We must rewrite the backend in Haskell.”
可靠性不仅仅适用于核电站和空中交通管制——更平凡的应用程序也应该可靠地工作。业务应用程序中的错误会导致生产力损失(如果数字报告不正确,还会有法律风险),电子商务网站的中断可能会在收入和声誉损害方面造成巨大成本
可靠性不仅仅适用于核电站和空中交通管制——更 普通 的应用程序也应该可靠地工作。业务应用程序中的错误会导致生产力损失(如果数据被不正确地报告,还会有法律风险),而电子商务网站的中断 会因收入损失和声誉受损而产生巨大的成本
Reliability is not just for nuclear power stations and air traffic control—more mundane applications are also expected to work reliably. Bugs in business applications cause lost productivity (and legal risks if figures are reported incorrectly), and outages of e-commerce sites can have huge costs in terms of lost revenue and damage to reputation
考虑邮局地平线丑闻。在 1999 年至 2019 年期间,管理英国邮局分支机构的数百人因会计软件显示其账户短缺而被判盗窃或欺诈罪。最终变得清楚,许多这些短缺是由于软件中的错误
可以参考邮局“Horizon”丑闻。在 1999 年至 2019 年期间,管理英国邮局分支机构的数百人因会计软件显示其账户 财务漏洞 而被判盗窃或欺诈罪。最终真相水落石出,许多这些 财务漏洞 是由于软件中的错误
consider the Post Office Horizon scandal. Between 1999 and 2019, hundreds of people managing Post Office branches in Britain were convicted of theft or fraud because the accounting software showed a shortfall in their accounts. Eventually it became clear that many of these shortfalls were due to bugs in the software
备注:“Horizon”是软件名称,建议不要翻译
我们如何添加计算资源来处理额外的负载?
我们如何 增加 计算资源来处理额外的负载?
How can we add computing resources to handle the additional load?
有时你关心某个变量数量的峰值
有时你关心某个变量 数值 的峰值
Sometimes you care about the peak of some variable quantity
通常还有其他影响访问模式并因此影响可伸缩性要求的负载统计特征
通常还有其他负载统计特征,会影响访问模式,从而影响可扩展性要求
Often there are other statistical characteristics of the load that also affect the access patterns and hence the scalability requirements
备注:这句话几乎重新翻译了
两倍大小的机器通常可以处理不到两倍的负载
两倍大小的机器通常 只能 处理不到两倍的负载
a machine twice the size can often handle less than twice the load
良好的架构通常涉及方法的务实混合
良好的架构通常涉及 多种方案 的务实混合
Good architectures usually involve a pragmatic mixture of approaches
软件不会磨损或遭受材料疲劳,因此它不会像机械物体那样以同样的方式损坏。但应用程序的要求经常变化,软件运行的环境发生变化
软件不会磨损或遭受 材料老化,因此 它不会像机械物体那样损坏。但应用程序的需求经常变化,软件 运行在变化的环境中
Software does not wear out or suffer material fatigue, so it does not break in the same ways as mechanical objects do. But the requirements for an application frequently change, the environment that the software runs in changes
如果系统已成功运行很长时间,它可能使用今天不多工程师理解的过时技术(如大型机和 COBOL 代码);关于系统如何以及为何以某种方式设计的机构知识可能已经随着人们离开组织而丢失
如果系统已成功运行很长时间,它可能使用如今很少有工程师理解的过时技术(如大型机和 COBOL 代码);随着人员的离开,关于系统如何以及为何以某种特定方式设计的制度性知识可能已经丢失了
If a system has been successfully running for a long time, it may well use outdated technologies that not many engineers understand today (such as mainframes and COBOL code); institutional knowledge of how and why a system was designed in a certain way may have been lost as people have left the organization
备注:这句话几乎重新翻译了
随着需求变化而适应和扩展它以用于未预料的用例
随着需求变化而适应和扩展它以用于未预料的 使用场景
adapting it and extending it for unanticipated use cases as requirements change
总会有边缘情况(如罕见的故障场景)需要运维团队的手动干预
总会有 边际场景(如罕见的故障场景)需要运维团队的手动干预
there will always be edge cases (such as rare failure scenarios) that require manual intervention from the operations team
各种商业和开源工具可以在这里提供帮助
各种商业和开源工具可以在 这方面 提供帮助
A variety of commercial and open source tools can help here
允许在系统整体继续不间断运行的同时关闭机器进行维护
允许在系统整体 持续 不间断运行的同时关闭机器进行维护
allowing machines to be taken down for maintenance while the system as a whole continues running uninterrupted
这种复杂性减慢了需要在系统上工作的每个人,进一步增加了维护成本。陷入复杂性的软件项目有时被描述为 大泥球
这种复杂性减慢了需要在系统上工作的每个人 的效率,进一步增加了维护成本。陷入复杂性的软件项目有时被描述为 _ 大泥团 _
This complexity slows down everyone who needs to work on the system, further increasing the cost of maintenance. A software project mired in complexity is sometimes described as a big ball of mud
这种重用不仅比多次重新实现类似的东西更有效,而且还导致更高质量的软件
这种重用不仅比多次重新实现类似的东西更有效,而且 还能提高软件质量
Not only is this reuse more efficient than reimplementing a similar thing multiple times, but it also leads to higher-quality software
例如,高级编程语言是隐藏机器代码、CPU 寄存器和系统调用的抽象。SQL 是一种隐藏复杂的磁盘上和内存中数据结构、来自其他客户端的并发请求以及崩溃后不一致性的抽象
当然,在用高级语言编程时,我们仍在使用机器代码;我们只是不 直接 使用它,因为编程语言抽象使我们免于考虑它
例如,高级编程语言是隐藏机器码、CPU 寄存器和系统调用的抽象。SQL 是一种隐藏磁盘和内存中的复杂数据结构、来自其他客户端的并发请求以及崩溃后的不一致性的抽象
当然,在用高级语言编程时,我们仍在使用机器码;我们只是不 直接 使用它,因为编程语言抽象使我们不必考虑它
For example, high-level programming languages are abstractions that hide machine code, CPU registers, and syscalls. SQL is an abstraction that hides complex on-disk and in-memory data structures, concurrent requests from other clients, and inconsistencies after crashes. Of course, when programming in a high-level language, we are still using machine code; we are just not using it directly, because the programming language abstraction saves us from having to think about it
备注:这句话几乎重新翻译了
我们搜索在由具有不同特征的几个不同应用程序或服务组成的系统级别增加敏捷性的方法
我们 探寻 在由具有不同特征的几个不同应用程序或服务组成的系统级别增加敏捷性的方法
we search for ways of increasing agility at the level of a system consisting of several different applications or services with different characteristics
松散耦合、简单系统通常比紧密耦合、复杂系统更容易修改。
由于这是一个如此重要的想法,我们将使用不同的词来指代数据系统级别的敏捷性
松耦合、简单的 系统通常比 紧耦合、复杂的 系统更容易修改。
由于这是一个如此重要的 概念,我们将使用 一个 不同的词来指代数据系统级别的敏捷性
loosely-coupled, simple systems are usually easier to modify than tightly-coupled, complex ones. Since this is such an important idea, we will use a different word to refer to agility on a data system level
这说明了规模上出现的一些挑战
这说明了 在规模扩大时 出现的一些挑战
which illustrated some of the challenges that arise at scale
我们看到了可伸缩性的一些一般原则
我们看到了可伸缩性的一些 通用性 原则
We saw some general principles for scalability