Apache Skywalking 实战 阅读笔记 第一章

Apache Skywalking 实战 阅读笔记 第一章

一、参考资料

二、笔记总结

前言

  • 从2010年开始,分布式架构几乎颠覆了整个IT架构,微服务、容器化、Kubernetes等。传统监控系统越来越难以跟上系统发展的步伐。
  • 从2012年到2015年,我(吴晟)因为参与中国联通的首个全国集中系统,饱受分布式系统错误定位的困扰,也是在那时,我决定着手建立SkyWalking这个项目。
  • 2017年年底,SkyWalking作为中国的个人项目社区加入Apache孵化器,并于2019年年初毕业成为Apache顶级项目
  • Apache SkyWalking 被很多世界500强公司采用。
  • SkyWalking在国内有庞大的用户群体,几乎涵盖了包括互联网、ICT、银行、航空公司、保险、教育、电信、电力等在内的所有行业。

第1章 全面认识Apache SkyWalking

1.1、SkyWalking介绍

1.1.1、什么是SkyWalking
  • SkyWalking是一个针对分布式系统的应用性能监控 (Application Performance Monitor, APM)和可观测性分析平台(Observability Analysis Platform)。
  • 主流大型企业的内部系统都有几十个子系统,其中有上百个服务和上千个实例在运行,理解这套系统的依赖关系是SkyWalking要解决的第一大问题。
  • 最重要的是,SkyWalking保证了在生产环境中高压力情况下的可用性
1.1.2、SkyWalking的发展历程
  • 2018年是项目高速发展的一年,项目团队在2018年发布了SkyWalking 5,并得到华为、阿里巴巴等大厂的支持,初步开始被较为广泛地运用。
  • GitHub上排名最高的开源分布式追踪和APM项目。
1.1.3、SkyWalking的适用场景
  • SkyWalking是一个为微服务、容器化和分布式系统而生的高度组件化的APM项目。
  • 随着微服务的兴起,应用系统开发人员就注意到,系统的调试过程越来越复杂,在线运行程序出现故障时,面临的问题定位已经很难使用传统日志进行排查。程序性能的监控和问题定位需求也越来越急迫。
  • SkyWalking不是一个单纯的追踪系统,支持轻量级分析拓扑图、应用性能指标等功能,而Zipkin和Jaeger都专注于追踪本身。
  • 2012年由韩国Naver公司开源的APM项目Pinpoint曾经是GitHub star数最多的APM项目,2019年被SkyWalking超过。Pinpoint立足于HBase; SkyWalking使用包括Elasticsearch在内的多种存储,却不支持任何一种大数据技术。
  • SkyWalking以监控千亿级流量为基础要求,自己不能反而成为整个大型分布式系统的部署和运维难点,而大数据技术却适得其反,会大幅增加运维和部署难度。

1.2、SkyWalking的架构设计

  • SkyWalking由以下4个核心部分构成
    • 探针(对应图1-1中Tracing和Mestrics部分)
    • OAP平台,它是一个高度组件化的轻量级分析程序。
    • 存储实现,SkyWalking的OAP Server支持多种存储实现。
    • UI模块,统计数据查询和展现。
1.2.1、面向协议设计
1.2.2、模块化设计
1.2.3、轻量化设计

1.3、SkyWalking的优势

  • SkyWalking的优势在于它紧跟当前的技术发展趋势,保证同一套APM系统适用于传统架构云原生架构
1.3.1、传统分布式架构与云原生的一致性支持
  • 随着近十年服务化和微服务化的进程,以RPC和HTTP服务为通信技术核心,以注册中心作为服务注册与服务发现的架构,已经成为国内成熟的微服务"传统"架构。主流技术有Spring Cloud、Apache Dubbo 等。SkyWalking从2015年项目诞生之初,就把这种传统的分布式架构自动探针 作为最为核心的功能
  • 同时,从2018年起,由Google、Lyft和CNCF的Istio与Envoy组成的Service Mesh方案开始流行,提供了在Kubernetes上创新的分布式服务管理、监控和安全管理能力。在6.x版本中,SkyWalking针对Istio和Envoy组成的Service Mesh方案提供了核心适配能力。利用SkyWalking的后端OAP平台以及UI,可以对Service Mesh管理中的服务提供同样的依赖拓扑、服务性能指标、告警等能力。90%以上的配置与使用其他语言探针(如Java探针)时完全一致。
  • 为不同公司的技术栈提供统一的监控能力,更有利于公司在未来系统架构升级中保持监控系统的一致性。
1.3.2、易于维护
  • 监控系统作为二线甚至三线系统,应该利用有限的环境资源,提供尽可能大的监控价值,同时尽可能降低对于运维的要求。
  • 同时SkyWalking的构建集群架构比较简单 ,用户只要针对自己的数据量,对于不同的存储平台(如MySQL、TiDB或Elasticsearch 等)具备基本的集群运维能力,就可以轻松监控百亿级的流量系统
1.3.3、高性能
  • SkyWalking在永辉超市典型公开案例中,使用15台OAP节点和20台Elasticsearch节点,就支撑了250多个服务每天高达3TB的监控数据,数据流量超过百亿。
1.3.4、利于二次开发和集成
  • SkyWalking的二次开发和集成 的便利性主要分为两方面。
    • 面向协议和模块化的设计。面向协议保证其他的探针接入,只需要学习协议就可以轻松完成对接。而模块化给予用户深度定制的能力,模块实现的可切换使用户可以对分布式计算过程、集群管理与协调模式、存储、告警引擎、可视化页面等进行个性化定制。
    • 大量的SkyWalking内置实现提供了第三方网络接口,HTTP或gRPC接口。用户可以使用第三方程序进行对接,而非进行程序改造。这样能保证SkyWalking版本升级时周边生态的稳定。而且在容器化大行其道的今天,网络接口集成的方式也更为友好
    • SkyWalking的几百家公开用户大量使用了这些扩展方式,定制了丰富的内部系统,也保证了SkyWalking内核的稳定和高通用性。

1.4、SkyWalking开发必备知识介绍

1.4.1、JavaAgent介绍
1. 概念简介
  • SkyWalking探针在使用上是无代码侵入的,而这种无侵入的自动埋点基于Java的JavaAgent技术
  • 启动时加载的JavaAgent是JDK 1.5之后引入的新特性,此特性为用户提供了在JVM将字节码文件读入内存之后,使用对应的字节流在Java堆中生成一个Class对象之前,对其字节码进行修改的能力,而JVM也会使用用户修改过的字节码进行Class对象的创建。
  • SkyWalking探针依赖于JavaAgent在一些特殊点(某个类的某些方法)拦截对应的字节码数据并进行AOP 修改。当某个调用链路运行至已经被 SkyWalking 代理过的方法时,SkyWalking会通过代理逻辑进行这些关键节点信息的收集、传递和上报,从而还原出整个分布式链路。
2. 动手实现JavaAgent
3. JavaAgent流程与原理
4. 小结
1.4.2、远程调试介绍
1.4.3、Service Mesh介绍

1.5 本章小结

  • SkyWalking具有全面的功能特性和技术的先进性。本章不仅概要介绍了SkyWalking项目的使用场景、特点和优势,让读者对SkyWalking项目有了整体了解,还对项目开发中最常用的几项技术进行了简要介绍,方便大家为后续的深入学习做好技术准备。下一章将正式介绍SkyWalking项目的安装和使用,上手体验SkyWalking。
相关推荐
AOwhisky2 小时前
Kubernetes(K8s)学习笔记(第十四期):集群存储与有状态应用(下篇):StatefulSet 有状态应用管理
redis·笔记·mysql·云原生·kubernetes·云计算·k8s
来生硬件工程师2 小时前
【硬件笔记】DCDC电源设计—BUCK电路设计要点
笔记·单片机·嵌入式硬件·硬件工程·智能硬件
nongcunqq2 小时前
编辑 cookie 的插件
笔记
AOwhisky2 小时前
kubernetes(K8s)学习笔记:第八期与第九期核心知识点自测与详解
笔记·云原生·kubernetes·云计算·k8s·集群·网络策略
凉、介2 小时前
KVM + QEMU 虚拟化
笔记·学习·嵌入式·arm·qemu·虚拟化·kvm
lcomecon7 小时前
强化学习基石:Bellman 方程从直觉到推导(附手写笔记与 Python 示例)
笔记
ysa05103012 小时前
【并查集】判环
c++·笔记·算法
FakeOccupational14 小时前
【电路笔记 通信】IEEE 1588精密时间协议(PTP):时间戳格式+精确到ns的时间表示与处理
笔记
aaaameliaaa16 小时前
计算斐波那契数(递归、迭代)(1,1,2,3,5.....)
c语言·开发语言·笔记·算法·排序算法