您的位置:

Skywalking原理分析

一、Skywalking原理分析

Skywalking是基于APM (Application Performance Management) 原理的一款开源项目,它利用监控数据分析分布式系统,在生产环境中发现和排除分布式系统故障。

Skywalking利用trace分析技术实现对请求链路的跟踪追踪。在实际运行过程中,针对整个分布式系统,Skywalking会把调用链路上的详细信息(调用者、被调用者、调用方法等等)记录下来,并基于此生成事务 trace视图,实现了对整个分布式系统的全链路跟踪、检索与可视化。

Skywalking的核心原理就是代码追踪,它的原理是利用字节码注入技术实现对JVM运行时的监控和收集,通过分析trace信息,将分布式系统中所有的请求串起来形成事务和调用链路。

二、Skywalking内存要求

Skywalking内存要求不高,只需少量的内存就可支持多节点和大流量的情况。并且Skywalking支持多种部署模式,可以根据不同的应用场景进行部署和扩展。

因为 Skywalking 限制了 Span 的数量,可以通过配置很好地控制内存的使用情况。在大量访问的场景下,可以通过将 trace 采样率设置成0.1或者更低达到限制内存使用的目的,从而避免过多的 trace 信息对影响系统的性能。

三、Skywalking原理数据库

Skywalking采用ElasticSearch作为存储引擎。实时分析与查询这些信息,有助于快速诊断并修复当期应用程序中的性能问题。

Skywalking在ElasticSearch中存储了很多的指标,其中包括:应用程序组、应用程序、实例、端点、服务以及调用链的元数据。使用ElasticSearch索引和集群技术,可以轻松地查询和聚合这些指标,让开发人员可以更好地理解他们的应用程序目前的状态。

四、为什么Skywalking侵入性小

Skywalking采用了字节码注入的技术,可以在不修改原代码的情况下实现代码追踪。Skywalking侵入性小,是因为它在JVM层面进行监控,不需要在代码中加入Skywalking监控的相关代码。同时也可以通过配置文件很方便地进行全局控制,很容易地管理和升级。

五、Skywalking Agent原理

Skywalking Agent作为Skywalking的核心部分,是一个Java应用,它托管在应用程序内部,与应用程序代码同步运行。

Skywalking将收集到的埋点信息以日志的方式输出(采集到的各种 trace 信息),然后由Agent组件对这些信息进行格式化整理后发送到Skywalking的Collector组件中,最终将整理后的数据存储到ElasticSearch中。

六、Skywalking登录地址

Skywalking的控制台可以查看各种分析数据,通过图形化方式展示每一层的性能信息,便于分析和排查问题。组件精细,支持分别快速进行数据查询,是一个极具价值的应用。

默认情况下,Skywalking的登录地址为:http://localhost:8080/。

七、Skyworking oap原理

Skywalking OAP(Open Analytics Platform)是Skywalking的另一个核心部件,支持自定义的指标聚合和关联,将监测数据进行处理、聚合和存储。

Skywalking OAP支持分布式存储,在写入ElasticSearch时,可以将数据同时写入其他数据存储系统,比如 H2、Cassandra、MySQL、TiDB、Postgres 等,保证数据的备份和稳定性。

八、Skywalking mysql

    <dependency>
        <groupId>org.apache.skywalking</groupId>
        <artifactId>apm-protocol/apm-mysql-plugin</artifactId>
        <version>8.4.0</version>
    </dependency>

Skywalking的Mysql插件可以帮助我们追踪和监控分布式的Mysql访问请求,采集有用的数据,如数据库访问状态和性能分析结果,并在Skywalking控制台上呈现。

九、Skywalking版本选取

选择合适的Skywalking版本,需要考虑系统的实际需求和场景,可以先搭建一个简单的Skywalking系统,并在测试环境进行测试。根据测试结果,进行版本选取和相关配置调整

在这里,我们推荐使用最新版本,因为最新版本往往能兼容更多的应用和技术,并能解决之前一些版本存在的问题。

十、总结

通过以上的分析,可以得知Skywalking是一个非常优秀的全链路监控系统,它的原理为基于字节码注入的方式实现,侵入性小,且对于分布式系统的监控能力也很强大,对于应用程序的运行状况进行了全方位的监测和分析。