服务端开发:技术、方法与实用解决方案
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言 Preface

为什么要写这本书

服务端开发涉及的面非常广,特别是在阿里、腾讯、字节跳动这类动辄十亿级用户、亿级DAU(Daily Active User,日均活跃用户数)的头部企业的核心业务场景中,服务端开发充满挑战。然而,在校园中,相关学科的编程实践课程仍多停留在开发学生管理系统的水平上,与行业的实际需要脱节;在市面上,服务端开发相关的书籍大都聚焦于解读某种编程语言、中间件、开发框架或编程思想,缺乏互联网服务端开发实践内容和对服务端开发的体系化介绍。一系列因素导致服务端开发长期以来被误解为Java开发、Go开发之类的“某编程语言开发”,或者被简单地定义为“编写运行于服务器的程序”。

2020年,我在GitChat和CSDN上原创的技术博客突破一百万字,成为博客专家。码字科技创始人谢工建议我将博客专栏整理成书出版,并将我引荐给了机械工业出版社的杨福川老师。彼时,写一本全景式介绍服务端开发书籍的想法在我心头萌芽了。当我踌躇满志地准备大干一场的时候,我意识到一个严重的问题:服务端开发涉及的内容实在太多了,纷繁复杂的知识点令人望而生畏。几经思考,自认为没有足够的时间付之于此,于是我又退缩了。

时间来到2021年年底,支付宝会员与公益技术部要对入职两年以内的服务端开发工程师进行技术培训,晏婴推荐我作为首门课程“大话系分设计”的讲师。接到这个任务,我不由得心头一紧。系分设计涵盖需求分析、抽象建模、系统设计、数据设计和非功能性设计等内容,实际上就是一幅服务端开发全景图。好在有将近一个月的时间准备,借此契机,我得以体系化地梳理服务端开发的知识脉络。

在之后的线下授课和交流中,我发现服务端开发工程师存在一些普遍性问题:其一,倾向于将产品文档“翻译”成代码,轻视业务,由于对业务领域全貌不了解,原本关键的抽象建模过程流于形式;其二,局限于围绕数据库开发,出手便是表结构设计,本末倒置;其三,在系统设计和开发中注重需求功能实现,对于高并发、高可用、高性能等非功能性问题考虑不足。考虑到短暂的线下培训难以将上述问题逐一讲透,我决定结合服务端开发的实际流程,编写一部开发指南。无心插柳柳成荫。随着编写工作的推进,写书的时机悄然成熟了。于是,我再次联系了杨福川老师,并在他的帮助下进一步完善了目录,最终确定了写作本书的计划。

自2016年起,我一直坚持通过写技术文章来分享知识,先后在CSDN、GitChat、知乎、阿里技术公众号、阿里ATA等平台上发表了数百篇技术文章,其中部分文章还曾入选平台“年度最火文章合集”“年度好评TOP10”和“头条推荐”。不过,这些文章像一个个分散的点,不成体系,对读者的帮助相对有限。鉴于此,我希望通过本书,全景式、体系化地为读者呈现服务端开发的方法和实用解决方案。

读者对象

❑IT从业人员:服务端开发工程师、客户端开发工程师、产品经理、测试工程师等。

❑高校学生:计算机、自动化、电气、通信等专业的学生。

本书特色

在互联网领域,技术日新月异,以有限的精力持续学习十分困难。幸运的是,无论技术如何演进,其背后的方法论往往大同小异,经典解决方案历久弥新。因此,掌握方法论和实用解决方案尤为必要。不同于一般的技术书籍,本书不局限于任何一种具体的编程语言、框架、容器、中间件或编程思想,而是致力于全景式、体系化地解读服务端开发的流程、重点和难点。

本书分为技术与方法、解决方案两部分,理论结合实践。第一部分对需求分析、抽象建模、系统设计、数据设计和非功能性设计等服务端开发的核心环节进行了深入的解读,可以帮助读者快速、体系化地掌握服务端开发的相关知识。第二部分针对高并发、高可用、高性能、缓存、幂等、数据一致性等问题提供了行业经典解决方案,可以帮助读者夯实技术基础,提升竞争力。为了便于读者理解,本书还列举了大量案例,并绘制了200多张图,图文并茂。

本书主要内容

本书共14章,内容分为两部分。

第一部分包括第1~6章,主题是技术与方法。本部分首先介绍服务端开发的定义、职责、技术栈、核心流程和进阶路径,然后从需求分析、抽象建模、系统设计、数据设计、非功能性设计5个方面逐一展开,结合案例深入解读服务端开发的实操方法、重点和难点,为读者清晰呈现服务端开发的全景图。通过学习本部分内容,读者可以快速、体系化地掌握服务端开发的相关知识和方法。

第二部分包括第7~14章,主题是解决方案。本部分针对高并发、高可用、高性能、缓存、幂等、数据一致性等服务端开发的典型问题,结合业务场景进行系统性分析并给出实战方案,并就接口设计、日志打印、异常处理、代码编写、代码注释等实施细节给出行业案例和规范。本部分内容如同一本服务端开发问题手册,可帮助读者解决实践中遇到的问题。

需要特别说明的是,第一部分内容不仅适合服务端开发人员学习,还适合前端开发、测试、产品经理、运营等岗位的人员学习,对提升技能、构建用例、设计产品和梳理需求大有裨益。第二部分内容所介绍的解决方案和开发规范均为行业实践经验的总结,部分知识点具有一定难度。如果你是一名经验较为丰富的工程师,可以直接阅读这部分内容;如果你从业不久或为在校学生,建议从第一部分的基础理论知识开始学习。

勘误和支持

由于作者的水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者朋友批评指正。大家可以发送邮件至邮箱jin_guo2013@163.com,反馈错误和建议。我将尽量为读者提供满意的解答。期待能够得到你们的真挚反馈。

致谢

首先要特别感谢支付宝会员与公益技术部的桑美和晏婴,正是他们的信任和支持为我写作本书创造了契机。感谢谢工老师的引荐促成了本书的出版。

感谢张荣华、张知临、张燎原、聂晓龙、薛维永、丁丁、王仁会、吴浩、厉科嘉、许瑞琦、汪恭正、肖剑平、马晨、费冬、陈弢、厍仕杰、李会东、杨桢栋、陈亨斌、任亚荣、韩光亮、姜建剑、朱寒阳、唐烨、郑子颖、李阳、孙岩,他们的文章和建议对本书部分内容的订正和完善起到了重要作用。