Skip to Content
可扩展系统基础
book

可扩展系统基础

by Ian Gorton
May 2025
Beginner to intermediate
340 pages
3h 54m
Chinese
O'Reilly Media, Inc.
Content preview from 可扩展系统基础

第 4 章 并发系统概述 并发系统概述

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

分布式系统由多个独立的代码片段组成,它们在多个地点的多个处理节点上并行或并发执行。因此,从定义上讲,任何分布式系统都是一个并发系统,即使每个节点都是一次处理一个事件。当然,必须协调各个节点的行为,才能使应用程序按照预期的方式运行。

正如我在第 3 章中所述,在分布式系统中协调节点充满了危险。幸运的是,我们的行业已经足够成熟,可以提供复杂、强大的软件框架,将分布式系统的许多危险从我们的应用程序中隐藏起来(无论如何,大多数时候都是如此)。本书的大部分内容都集中在介绍我们如何利用这些框架来构建可扩展的分布式系统。

不过,本章关注的是我们系统在单个节点上的并发行为。通过明确编写可同时执行多个操作的软件,我们可以优化单个节点上的处理和资源利用率,从而提高本地和全系统的处理能力。

我将使用 Java 7.0 的并发功能作为示例,因为这些功能的抽象级别低于 Java 8.0 中引入的功能。在构建并发和分布式系统时,了解并发系统如何 "更接近机器 "地运行是必不可少的基础知识。一旦了解了构建并发系统的低级机制,就更容易优化利用更抽象的方法。虽然本章是针对 Java 的,但用其他语言编写系统时,并发系统的基本问题并不会改变。所有主流编程语言都有处理并发的机制。"并发模型 "详细介绍了其他方法以及如何在现代语言中实现这些方法。

最后一点。本章只是并发入门。它不会教给你构建复杂、高性能并发系统所需的一切知识。如果你的并发程序编写经验不足,或者你在其他编程语言中接触过一些并发代码,那么本章也会对你有所帮助。本章末尾的 "进一步阅读 "部分为希望深入了解本主题的读者提供了更全面的内容。

为什么要并发?

想想一家繁忙的咖啡店。如果每个人都点一杯简单的咖啡,那么咖啡师就能快速、稳定地提供每一杯饮品。突然,排在你前面的人点了一杯大豆、香草、无糖、四重冰镇咖啡。排队的每个人都叹了口气,开始阅读自己的社交媒体。两分钟后,队伍就排到了门外。

处理网络应用程序中的请求类似于我们的咖啡例子。在咖啡店里,我们会让新来的咖啡师同时在不同的咖啡机上制作咖啡,以控制队伍的长度,快速为顾客提供服务。在软件中,为了使应用程序响应迅速,我们需要以某种方式重叠处理服务器中的请求,同时处理请求。

在过去的计算机时代,每个 CPU 在任何时候都只能执行一条机器指令。如果我们的服务器应用程序运行在这样的 CPU 上,为什么我们还需要构建软件系统,以便同时执行多条指令呢?这似乎有点毫无意义。

其实,有一个非常好的理由。几乎每个程序都不仅仅是执行机器指令。例如,当程序试图从文件中读取数据或在网络上发送信息时,它必须与 CPU 外围的硬件子系统(磁盘、网卡)进行交互。从磁性硬盘读取数据大约需要 10 毫秒(ms)。在这段时间内,程序必须等待数据可供处理。

现在,即使是古老的 CPU,如1988 年的英特尔 80386每秒也能执行超过 1 千万条指令(mips)。10 毫秒等于百分之一秒。我们的 80386 在百分之一秒内能执行多少条指令?请计算一下。(提示--很多!)事实上,浪费了很多处理能力。

这就是 Linux 等操作系统在单个 CPU 上运行多个程序的原理。当一个程序在等待 I/O 事件时,操作系统会调度另一个程序执行。通过显式地将我们的软件结构化为可并行执行的多个活动,操作系统可以在其他程序等待 I/O 时调度有工作要做的任务。我们将在本章后面更详细地了解 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

高级工程师的职业路径

高级工程师的职业路径

Tanya Reilly
SQL经典实例(第2版)

SQL经典实例(第2版)

Anthony Molinaro, Robert de Graaf
机器学习设计模式

机器学习设计模式

Valliappa Lakshmanan, Sara Robinson, Michael Munn

Publisher Resources

ISBN: 9798341657328