前言

为什么写作本书

从2010年开始,分布式架构几乎颠覆了整个IT架构。无论是早期的SOA体系,还是后来的微服务、容器化、Kubernetes等,无一不是从分布式角度提升系统的容错能力和吞吐能力。然而不可避免地,监控难度也在随着分布式程度的加深而同比加大。基于日志、指标及静态部署架构的传统监控系统越来越难以跟上系统发展的步伐。

从2012年到2015年,我因为参与中国联通的首个全国集中系统,饱受分布式系统错误定位的困扰,也是在那时,我决定着手建立SkyWalking这个项目。2017年年底,SkyWalking作为中国的个人项目社区加入Apache孵化器,并于2019年年初毕业成为Apache顶级项目。

Apache SkyWalking作为Apache顶级项目,有着强大的国际化的开发者社区,被很多世界500强公司采用。由于国际化的需要,官方文档和交流全部采用英语。与此同时,SkyWalking在国内也有庞大的用户群体,几乎涵盖了包括互联网、ICT、银行、航空公司、保险、教育、电信、电力等在内的所有行业,而英文沟通和文档成了部分国内用户了解SkyWaling的障碍。SkyWalking的PMC团队中的中国成员,在收到机械工业出版社杨福川的邀请后,决定在百忙之中抽出时间,将自己在项目中沉淀的知识、理解梳理成书,让国内读者能比阅读官方文档更加深入地理解Apache SkyWalking,也为大家进行二次开发、参与项目贡献提供更为清晰的思路。

本书主要内容

本书将Apache SkyWalking使用方法、项目设计、架构模块和扩展实践进行了分组归纳,为大家展现了Apache SkyWalking的全貌。本书共14章,每章的主要内容如下。

·第1章 全面认识Apache SkyWalking

本章概要介绍SkyWalking项目的使用场景、设计理念和设计思想。开源项目的发展往往不可预测,了解其核心理念将是与社区长久保持一致的重要基础。

·第2章 SkyWalking安装与配置

本章引导大家从零起步,了解项目的安装部署过程及常用配置。

·第3章 Apache SkyWalking实战

本章通过典型场景,对SkyWalking的功能进行系统性的展现,使读者全面认识其系统功能。

·第4章 轻量级队列内核

本章介绍SkyWalking Java探针中的内存级消息队列,阐述它的优势、设计目的和实现。

·第5章 SkyWalking追踪模型

本章介绍SkyWalking专有的追踪模型。虽然项目模型脱胎于论文“Google Dapper”,但是针对分布式APM的场景,其设计与其他分布式追踪系统有明显的区别。

·第6章 SkyWalking OAP Server模块化架构

本章介绍模块化——SkyWalking设计中一个无处不在的理念在OAP中的落地实现。通过阅读本章,读者会对OAP的整体设计思想有清晰的认识。

·第7章 Observability Analysis Language体系

本章介绍OAL这个虽简单但却是SkyWalking专有设计的编译型脚本语言。通过它,大家可以了解SkyWalking流式处理模型。

·第8章 SkyWalking OAP Server集群通信模型

本章介绍SkyWalking OAP Server集群的工作方式、集群内数据通信模型、数据流向,帮助用户在进行超大规模部署时,更合理地规划网络和部署方式。

·第9章 SkyWalking OAP Server存储模型

SkyWalking不同于传统的应用,它拥有强大的模型扩展能力。本章将结合抽象概念和实例,介绍数据存储模型的定义方法、模型字段及模型扩展方式。

·第10章 Java探针插件开发

本章介绍SkyWalking的Java探针工程结构、开发方法及开发示例。探针插件开发是最常用的二次开发扩展方式。

·第11章 探针和后端消息通信模式开发

本章为动手实践环节,探针和后端消息通信模式的扩展是个经常被讨论的话题。本章会详细阐述项目设计的缘由并带领大家进行代码实践扩展。

·第12章 SkyWalking OAP Server监控与指标

本章将介绍一个高级特性:如何对SkyWalking后端进行监控。监控系统也需要被监控,这是SkyWalking大规模部署的常用特性。

·第13章 下一代监控体系——SkyWalking观测Service Mesh

Service Mesh目前还处在技术栈发展的早期,但SkyWalking已经身先士卒,做好准备。本章将介绍如何在这种全新的架构和技术下完成观测。

·第14章 SkyWalking未来初探

SkyWalking 7于2020年3月发布,加入了很多新特性。本章将深入介绍SkyWalking 7中最核心的特性——代码性能剖析。

本书读者对象

本书适合所有的Apache SkyWalking初学者、使用者和二次开发者阅读。本书涵盖了从项目入门到设计理念、核心模块的多层次内容。如果你想系统学习和了解Apache SkyWalking,本书是你的最佳选择。如果你想了解现代的分布式监控系统、分布式追踪的相关知识,本书也会在理论和实践层面给你启发。如果你想动手构建自己的分布式监控系统,Apache SkyWalking也是值得你学习的典型案例和实现。

如何阅读本书

本书的章节按照先入门、快速上手实践,然后回顾设计理论,并逐步深入核心模块和高级特性的方式编排。读者不会因翻开书就读到枯燥的理论内容而打消学习的兴趣,同时,后半部分的深入讲解能让大家不局限在基本的使用上,而是更好地探究项目的实现,甚至打开参与开源贡献之门。

勘误与支持

由于作者团队的水平有限,写作时间仓促,再加上Apache SkyWalking为志愿者社区,开源项目存在多元化、开放和快速迭代的特性,书中难免出现不准确或者不再适用新版本的地方,恳请读者批评指正。你可以使用SkyWalking Handbook作为邮件主题的前缀,将对本书的疑问发送到dev@skywalking.apache.org进行讨论,也可以访问https://lists.apache.org/list.html?dev@skywalking.apache.org查询和搜索之前的问题讨论。如果你有关于本书的宝贵意见,也欢迎发送到以上邮件地址。随书代码可以从https://github.com/book-apache-skywalking-in-action获取。

致谢

首先感谢本书的4位联合作者高洪涛、曹奕雄、赵禹光、李璨,感谢你们对SkyWalking项目的持续贡献以及对本书的巨大贡献。

感谢我的妻子刘亚欣和我的其他家人。过去4年,从SkyWalking的创立,到领导社区发展和参与社区贡献,我投入了大量的时间和精力,感谢你们对我一如既往的支持。

感谢Apache SkyWalking社区的数百名代码贡献者,以及无数的布道师、博主、国内外各大会议的出品方、各大IT媒体对项目的支持。你们帮助传播项目理念,吸引了更多的新人,凝聚了强大的力量。

感谢机械工业出版社华章公司的杨福川在本书撰写、出版过程中提供的帮助和支持,让本书得以如期高质量地和读者见面。

吴晟

2020年7月