diff --git a/intro.md b/intro.md index 4274c4f0..cc910641 100644 --- a/intro.md +++ b/intro.md @@ -1,12 +1,12 @@ # 前言 -如果你是一位互联网从业者,我猜出这几年你大概率被这些层出不穷的概念包围:云计算、PaaS、FaaS、CaaS、ServiceMesh、Serverless、可观测性、OLAP,当然不能遗漏了各种 Ops,诸如 DevOps、GitOps、MLOps、FinOps 等等。 +如果你是一位互联网从业者,我猜出这几年你大概率被这些层出不穷的概念包围:云计算、PaaS、FaaS、CaaS、ServiceMesh、Serverless、AIGC,当然不能遗漏了各种 Ops,诸如 DevOps、GitOps、MLOps、FinOps 等等。 -近几年来,软件开发技术发生了翻天覆地的变化,这也直接对构建上层应用产生了重大的影响。分析那些让人兴奋的技术,以及讨论如何为业务赋能之前,我们先思考引发这一波技术浪潮的核心驱动力是什么? +近几年来,软件开发技术经历了翻天覆地的变革,这也直接对构建业务应用产生了重大的影响。在分析那些令人兴奋的技术并讨论如何为业务赋能之前,我们先思考一下,引发这一波技术浪潮的核心驱动力是什么? ## 软件在吞噬世界 -互联网投资人 Mark Andreessen 曾发表过一篇文章《软件在吞噬世界》,文章内容主要阐述了软件如何影响各个行业。援引原文部分内容: +互联网投资人 Mark Andreessen 曾在文章《软件正在吞噬世界》中深入探讨了软件如何改变各个行业。以下是文章中的部分内容: :::tip 《软件在吞噬世界》节选 @@ -18,7 +18,7 @@ 文章发表于 2011 年,2023 年再来回顾互联网的冲击,感触更加深刻,部分软件变成像水、电、媒一样的基础设施。 -作者展望互联网规模时,写道“在接下来的 10 年里,我预计全球至少有 50 亿人拥有智能手机,每个人每天都可以随时随地使用手机充分利用互联网”。现在,我们已经可以确认 Mark Andreessen 的预测很正确,移动互联网时代的用户规模已经开始向人口基数看齐,开始出现各类亿级 DAU 规模的移动应用。 +在展望互联网规模时,作者曾预测:“在未来 10 年,全球至少有 50 亿人将拥有智能手机,每个人都可以随时随地利用互联网”。如今,我们可以确认,Mark Andreessen 的预测准确无误。移动互联网时代的用户规模已经接近全球人口基数,亿级 DAU 规模的移动应用开始涌现。 软件对各行各业的渗透和对世界的改变,以及移动互联网时代巨大的用户基数下快速变更和不断创新的需求对软件开发方式带来巨大的推动力,我们清晰地看到如此波澜壮阔的技术浪潮: @@ -55,24 +55,28 @@ ## 如何阅读本书 -本书总共分为 4 大部分: +本书总共分为 6 个部分: 1. 第一部分,是全书的绪论,内容只有第 1 章。我们将从需求的背景、解决问题的角度讨论这几年技术架构演进的趋向。该部分适合所有读者,尤其是希望了解近期技术发展概况的人士。 -2. 第二部分,主题是网络。实现高可用服务的前提是,确保用户请求顺利到达服务端。我们将从一道经典的面试题“浏览器打开 url 到页面展现,中间发生了什么?”出发,了解贯穿其中的整个网络请求链路,并努力实现“足够快”目标(第 2 章)。紧接着,跟着网络数据包进入内核网络,学习操作系统制定的根本规则、了解内核中各个模块/设备如何有机协作(第 3 章),最后根据网络数据包的转发/处理,讨论四层及七层负载均衡的设计模式和工作原理(第 4 章)。 +2. 第二部分,主题是网络。我们将从一道经典的面试题“浏览器打开 url 到页面展现,中间发生了什么?”出发,了解贯穿其中的整个网络请求链路,并努力实现“足够快”目标(第 2 章)。紧接着,我们将跟随网络数据包进入内核,学习操作系统的基本规则,了解内核各模块和设备的协作及其对应用层的影响(第3章)。最后,我们将根据网络数据包的转发/处理的逻辑,讨论四层/七层负载均衡的设计原理(第 4 章)。 -3. 第三部分,内容关于分布式系统,我们先认识什么是数据一致性,然后讨论 CAP 定理以及受它影响而来的各个分布式事务模型(第 5 章)。接下来,我们向分布式副本容错模型进军,这是实现分布式系统可靠性的关键,其中的难点在于网络不可靠、节点可能宕机的环境下,如何实现共识(第 6 章)。 -3. 第四部分,主题是基础设施的变革,我们先了解 Google 内部系统是怎么演变的,学习 Kubernetes 中关于计算、网络、存储逻辑中设计(第 7 章)。然后,回顾这十几年间服务通信的演化历史,搞清楚服务网格技术是如何出现的、解决了什么问题(第 8 章)。接下来的课题是根据系统运行状态的蛛丝马迹,保障复杂分布式系统的可靠运行(第 9 章)。最后第 10 章是提高生产力的秘籍,将介绍一种以声明式系统为基座、以 Git 为单一可信源的交付模型。 +3. 第三部分,主题是分布式系统。首先,我们将了解数据一致性的基本概念,接着讨论 CAP 定理及其影响下的各类分布式事务模型(第5章)。随后,我们将探讨分布式副本容错模型,这是实现分布式系统可靠性的关键,重点关注如何在网络不可靠和节点可能宕机的环境中实现共识(第6章)。读完本部分内容,相信您将对分布式系统有全新的理解。 +4. 第四部分,主题是基础设施,我们将先了解 Google 内部系统的演变,并学习 Kubernetes 在计算、网络 +存储、容器编排调度的设计原理(第7章)。随后,我们将回顾过去十几年服务通信的发展历程,探讨服务网格技术的出现的背景,弄清楚它到底解决了什么问题(第8章)。 -## 致谢 +5. 第五部分(第9章):主题是确保复杂系统的可靠运行。这其中的关键是,统一收集、关联和分析系统输出(日志、指标、追踪),从而构建出能推断其内部状态的能力。 +6. 最后一部分(第 10 章),我们将深入探讨 Kubernetes 等基础设施的演进,剖析声明式管理的本质,领会“以应用为中心”的设计理念,探索几种流行的应用层软件交付模型与抽象(如 Kustomize、Helm、Operator 和 OAM),帮助我们更加高效、自信地开发和交付应用。 -首先感谢我的爱人,在我决定下笔之际义无反顾地担负起照顾两个孩子的责任,并在两年时间内忍受我将工作之余的时间全部用在写作上,没有她的支持我无法完成该著作。 +## 致谢 -本书部分内容来源于我过往实践的总结,其次也参考了大量他人的思想、论文和著作,这些内容我已在本书脚注、内容备注和结论参考等不同形式呈现,如果您对这部分内容感兴趣,可以继续扩展阅读。 +首先,我要感谢我的爱人。在我决定开始写作时,她毫不犹豫地承担起照顾两个孩子的责任,并在三年里忍耐我将所有空闲时间投入到写作中。没有她的支持,我无法完成该作!其次,还要感谢在 Github 帮我校验书稿的网友,他们帮我指出了大量的笔误、不严谨的内容,提升了书稿的质量。感谢你们 songzhibin97、sunway910、HUGHNew、watermeion、CrypticDriver、nyufeng、MoguCloud +MoguCloud、lengchu、chesha1、zhangwt-cn、Timmer2338 +Timmer2338、5isi、owen-kuai、zyp461476492、msqtt、hexody、zhuweileo、gcmutator、acechef、vikiboss、xxm1995、czy0538、binc4t、ercJuL、MarushiruDonato、ChengS-U、yiyungent、Snailclimb、cplayer、AllinProgram、wjp-cn、iakihsoug、MoshiCoCo、SSShooter、XBIsland、qinxuliang...。 -最后,谨以此书,献给我的家人以及热爱技术的朋友们。 +最后,谨将本书献给我的家人以及热爱技术的朋友们。 ## 勘误 -限于作者的认知和精力,本书难免产生各种各样的错误。如果您在阅读时发现问题,欢迎评判指正,我将继续在本书的网址 [https://www.thebyte.com.cn/](https://www.thebyte.com.cn/) 进行勘误修正。 +由于笔者的认知和精力有限,本书难免存在一些错误。如在阅读过程中发现问题,欢迎指出并提出宝贵意见,我将继续在本书的网址 https://www.thebyte.com.cn/ 进行勘误和修正。