还在用什么Zipkin,Skywalking才是最香的

这篇具有很好参考价值的文章主要介绍了还在用什么Zipkin,Skywalking才是最香的。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


公众号: MCNU云原生,文章首发地,欢迎微信搜索关注,更多干货,第一时间掌握!

微服务架构带来了整体服务之间调用的复杂性,而链路跟踪是其中非常重要的一环。国内很多中小企业都在使用spring cloud,而在spring cloud体系中,zipkin就是负责链路跟踪的,因此zipkin一直被广泛使用。

但是我想说现在更好的选择可能是Apache Skywalking,简单来说,Zipkin能做的事情,Skywalking也能做,而且做得更好,Skywalking具备的独特能力,Zipkin却没有满足,并且社区的活跃度在下降。

一、Apache Skywalking是什么?

Apache Skywalking是一个开源的应用性能监控(Application Performance Monitoring,APM)工具,它提供了实时的、端到端的、基于跟踪的应用程序性能监测。Apache Skywalking是一个跨语言、跨平台的解决方案,支持Java、.NET、Go、Node.js等多种语言,可以在各种不同的部署环境中使用。

Apache Skywalking最初由华为公司开发,并于2017年捐赠给Apache软件基金会,成为一个Apache顶级项目,它的迭代很快,社区非常活跃,目前github上有21.7K Star。

Apache Skywalking不仅仅是一个链路跟踪框架,它是一个完整的APM解决方案,具备链路跟踪、监控和告警等功能。

二、Apache Skywalking的功能和特点

Apache Skywalking提供了一系列功能,包括:

1、分布式跟踪:Apache Skywalking可以对分布式系统的每个请求进行跟踪,并生成可视化的跟踪数据,帮助开发人员和系统管理员快速定位问题。

2、性能监测:Apache Skywalking可以监测分布式系统的性能指标,包括请求延迟、吞吐量和错误率等,帮助开发人员和系统管理员了解系统的健康状况。

3、告警通知:Apache Skywalking可以对系统的性能异常进行实时告警,帮助开发人员和系统管理员及时发现和解决问题。

4、插件扩展:Apache Skywalking提供了一套丰富的插件系统,可以与各种第三方组件和应用程序集成,另外已经原生集成了MySQL、APISIX、kubernetes等组件的监控,还支持自监控。

5、多语言支持:Apache Skywalking支持多种编程语言,包括Java、.NET、Node.js、Go和PHP等。

6、应用拓扑:可以显示应用程序的拓扑结构,展示服务之间的依赖关系,帮助用户理解应用程序的架构。

还在用什么Zipkin,Skywalking才是最香的

Apache Skywalking还有以下明显优势:

1、轻量级:可以轻松部署和使用,低侵入性,不会对应用程序的性能产生显著影响。

2、高扩展性:支持多语言和多平台,支持集群部署,可以满足不同应用程序的监测需求。

3、界面友好:提供易于使用的界面和可视化工具,帮助用户轻松理解和管理监测数据。

三、Apache Skywalking对比Zipkin

Apache Skywalking、Zipkin都具备分布式链路跟踪的能力,但是在某些方面还是有一些区别和优势的, 这里从以下几个方面做个对比:

1、支持语言:Apache Skywalking和Zipkin都支持多语言,目前主流的语言两者都支持,区别不大。

2、可扩展性:Apache Skywalking的插件系统支持更多的第三方组件和应用程序集成,可以更好地满足定制化需求,支持各类服务、基础设施的监控,而

3、性能:Apache Skywalking在性能方面具有优势,相比ziipkin可以处理更高的请求吞吐量。

4、易用性:zipkin的界面更简单一些,配置也更简单一些,更容易掌握,Apache Skywalking需要一定的学习和配置成本,但是相对来说其功能更加的丰富。

5、侵入性:SkyWalking基于ASM字节码增强技术实现调用拦截和数据收集,实现了真正的代码无侵入,对开发人员可以实现完全透明;Zipkin的链路追踪是基于spring-cloud-sleuth,提供了基础API,需要进行一定的代码集成配置。

6、告警:zipkin只进行了链路跟踪,而skywalking还具备告警功能,实现一站式问题跟踪告警。

四、Skywalking安装部署

这里使用二进制安装包在Centos下部署一个单机版的skywalking来进行体验。

首先使用以下命令下载skywalking,这里下载9.4.0版

[root@node1 ~]# wget https://dlcdn.apache.org/skywalking/9.4.0/apache-skywalking-apm-9.4.0.tar.gz
[root@node1 ~]# tar -zxvf apache-skywalking-apm-9.4.0.tar.gz

由于我是在虚拟机中部署,对外的IP为192.168.56.11,所以需要对相应的配置进行修改,将webapp/application.yml中的配置127.0.0.1改为虚拟机对外的地址192.168.56.11,如下:

serverPort: ${SW_SERVER_PORT:-8080}

# Comma seperated list of OAP addresses.
oapServices: ${SW_OAP_ADDRESS:-http://192.168.56.11:12800}

zipkinServices: ${SW_ZIPKIN_ADDRESS:-http://192.168.56.11:9412}

如果不修改这个配置,可能会出现如下错误:

skywalking failed: Connection refused: localhost/127.0.0.1:12800

使用以下命令启动,可以看到启动成功,启动了两个进程:OAPServerStartUp和ApplicationStartUp,前者是OAP Server,后者是UI应用。

[skywalking@localhost apache-skywalking-apm-bin]$ bin/startup.sh
SkyWalking OAP started successfully!
SkyWalking Web Application started successfully!
[root@node1 webapp]# jps|grep -v "Jps"
1585 OAPServerStartUp
1609 ApplicationStartUp

还在用什么Zipkin,Skywalking才是最香的

通过http://192.168.56.11:8080/可以访问UI管理界面,如图,Skywalking原生支持对普通服务、service mesh、serverless、kubernetes、基础设施等的监控,监控范围面非常广,功能丰富。

例如普通服务的trace跟踪:

还在用什么Zipkin,Skywalking才是最香的

例如对service mesh的支持:

还在用什么Zipkin,Skywalking才是最香的

五、Springboot集成Apache Skywalking

Springboot集成Apache Skywalking非常简单,使用skywalking-agent,通过JVM启动参数配置进行集成即可。

从skywalking官方下载skywalking-agent,在Java应用启动的时候增加以下VM Options

-javaagent:D:\workspace\skywalking-agent\skywalking-agent.jar  -Dskywalking.agent.service_name=demo -Dskywalking.collector.backend_service=192.168.56.11:11800

如果是在idea中启动的话,可以通过run->Edit Configurations->Environment->VM Options进行配置:

还在用什么Zipkin,Skywalking才是最香的

启动springboot应用,然后查看Skywalking UI可以发现已经监控到了demo这个service

还在用什么Zipkin,Skywalking才是最香的

对相关的接口进行访问,可以看到相关的详细监控数据:

还在用什么Zipkin,Skywalking才是最香的

从服务的trace TAB进入可以看到对应的接口的调用链路

还在用什么Zipkin,Skywalking才是最香的

如果希望对项目中的业务方法,实现链路追踪,方便我们排查问题,可以在springboot中引入Apache Skywalking的依赖apm-toolkit-trace。

在pom.xml文件中添加skywalking依赖。

<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-trace</artifactId>
    <version>9.4.0</version>
</dependency>

在application.yml(或application.properties)配置文件中添加Skywalking相关的配置,如agent.service_name、collector.backend_service等。

skywalking:
  agent:
    collector:
      grpc:
        server-address: 192.168.56.11:11800

在任何想要追踪的方法上添加 @Trace 注解,使用TraceContext可以获取到对应的traceId。

@Trace
@GetMapping("/test")
public String test() {
    System.out.println("traceId:" + TraceContext.traceId());
    return "test";
}

以上是集成Spring Boot与SkyWalking的基本步骤,如果需要更加详细的配置,可以参考SkyWalking官方文档:https://skywalking.apache.org/docs/。

六、Apache Skywalking的生态

一个流行的APM系统,绝不仅仅是软件“好”,还必须拥有丰富良好的生态。Apache Skywalking就具备良好的生态,具体来说:

1、插件系统

Apache Skywalking提供了丰富的插件系统,可以方便地与各种第三方组件和应用程序进行集成。以Agent为例,Skywalking支持各种Agent,例如Java Agent、NodeJS Agent、Nginx LUA Agent、Kong Agent等等。

2、社区支持

Apache Skywalking拥有一个活跃的开源社区,社区更新非常频繁,截止目前contributors达到430多,Star数量21.7K,fork数量6.2K,这都显示出Skywalking社区的"热闹"。另外官方提供了丰富的文档和支持,这使得新手入门更快。

3、生态整合

Apache Skywalking与其他开源项目的整合也在不断扩展,如与Kubernetes、Prometheus、Grafana等项目的整合,例如Kubernetes Event Exporter能够发送Kubernetes事件到Apache SkyWalking。

七、Apache Skywalking如何部署集群?

Apache Skywalking默认情况下为standalone模式,如果在生产环境上部署单机版显然是不合适的,需要一定的方法部署集群模式,保障高可用。

Apache Skywalking天生支持集群模式的部署,通过多个OAP Server共同分担流量,多个OAP Server之间使用外部的协调管理器进行协调。从配置文件application.yml中关于cluster的配置可以看到,Skywalking支持多种协调者,包括zookeeper、kubernetes、consul、etcd和nacos,基本囊括了主流的组件。

cluster:
  selector: ${SW_CLUSTER:standalone}
  standalone:
  # Please check your ZooKeeper is 3.5+, However, it is also compatible with ZooKeeper 3.4.x. Replace the ZooKeeper 3.5+
  # library the oap-libs folder with your ZooKeeper 3.4.x library.
  zookeeper:
    namespace: ${SW_NAMESPACE:""}
    hostPort: ${SW_CLUSTER_ZK_HOST_PORT:localhost:2181}
    # Retry Policy
    baseSleepTimeMs: ${SW_CLUSTER_ZK_SLEEP_TIME:1000} # initial amount of time to wait between retries
    maxRetries: ${SW_CLUSTER_ZK_MAX_RETRIES:3} # max number of times to retry
    # Enable ACL
    enableACL: ${SW_ZK_ENABLE_ACL:false} # disable ACL in default
    schema: ${SW_ZK_SCHEMA:digest} # only support digest schema
    expression: ${SW_ZK_EXPRESSION:skywalking:skywalking}
    internalComHost: ${SW_CLUSTER_INTERNAL_COM_HOST:""}
    internalComPort: ${SW_CLUSTER_INTERNAL_COM_PORT:-1}
  kubernetes:
    namespace: ${SW_CLUSTER_K8S_NAMESPACE:default}
    labelSelector: ${SW_CLUSTER_K8S_LABEL:app=collector,release=skywalking}
    uidEnvName: ${SW_CLUSTER_K8S_UID:SKYWALKING_COLLECTOR_UID}
  consul:
    serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
    # Consul cluster nodes, example: 10.0.0.1:8500,10.0.0.2:8500,10.0.0.3:8500
    hostPort: ${SW_CLUSTER_CONSUL_HOST_PORT:localhost:8500}
    aclToken: ${SW_CLUSTER_CONSUL_ACLTOKEN:""}
    internalComHost: ${SW_CLUSTER_INTERNAL_COM_HOST:""}
    internalComPort: ${SW_CLUSTER_INTERNAL_COM_PORT:-1}
  etcd:
    # etcd cluster nodes, example: 10.0.0.1:2379,10.0.0.2:2379,10.0.0.3:2379
    endpoints: ${SW_CLUSTER_ETCD_ENDPOINTS:localhost:2379}
    namespace: ${SW_CLUSTER_ETCD_NAMESPACE:/skywalking}
    serviceName: ${SW_CLUSTER_ETCD_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
    authentication: ${SW_CLUSTER_ETCD_AUTHENTICATION:false}
    user: ${SW_CLUSTER_ETCD_USER:}
    password: ${SW_CLUSTER_ETCD_PASSWORD:}
    internalComHost: ${SW_CLUSTER_INTERNAL_COM_HOST:""}
    internalComPort: ${SW_CLUSTER_INTERNAL_COM_PORT:-1}
  nacos:
    serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
    hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848}
    # Nacos Configuration namespace
    namespace: ${SW_CLUSTER_NACOS_NAMESPACE:"public"}
    # Nacos auth username
    username: ${SW_CLUSTER_NACOS_USERNAME:""}
    password: ${SW_CLUSTER_NACOS_PASSWORD:""}
    # Nacos auth accessKey
    accessKey: ${SW_CLUSTER_NACOS_ACCESSKEY:""}
    secretKey: ${SW_CLUSTER_NACOS_SECRETKEY:""}
    internalComHost: ${SW_CLUSTER_INTERNAL_COM_HOST:""}
    internalComPort: ${SW_CLUSTER_INTERNAL_COM_PORT:-1}

如果你的应用集群是使用Kubernetes部署,那么直接使用Kubernetes构建skywalking集群将非常方便,如果你是使用了spring cloud alibaba,那么nacos非常适合。

总之,Skywalking是一个非常强大、全面的高性能的开源APM解决方案,如果你正在设计APM系统,那么强烈建议你了解以一下Skywalking。文章来源地址https://www.toymoban.com/news/detail-476084.html

到了这里,关于还在用什么Zipkin,Skywalking才是最香的的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 什么才是物联网领域最好的开发语言?

    最好!运行最快?开发最高效?最容易学习? 各有特点! 采用C/C++语言,运行最快,一般采用厂家提供的底层驱动支持包BSP,所有MCU都支持。如果Arduino平台已经有支持的驱动包,采用Arduino平台开发会高效一些。最近很多小伙伴找我,说想要一些物联网学习资料,然后我根据

    2024年02月08日
    浏览(35)
  • 单片机为什么还在用C语言编程?

    单片机产品的成本是非常敏感的。因此对于单片机开发来说,最重要的是在极其有限的ROM和RAM中实现最多产品的功能。或者反过来说,实现相同的产品功能,所需要的ROM和RAM越小越好,在开始前我有一些资料,是我根据网友给的问题精心整理了一份「单片机的资料从专业入门

    2024年04月10日
    浏览(43)
  • 读所罗门的密码笔记03_什么才是人工智能

    1.6.2.1. 如果这些技术能够与大型工业系统合作,形成规模效应,“将在改善全球环境、降低成本方面具有巨大潜力” 2.6.2.1. 新人工智能系统的得分比旧版高了整整7分 2.6.2.2. 在这一级别上,即使2分的提升也是非常了不起的 2.8.1.1. 根据人工智能的建议调整治疗计划的医生

    2024年03月27日
    浏览(32)
  • 为什么QLC NAND才是ZNS SSD最大的赢家?-part3

    在ZNS SSD设计中,也有很多的挑战 : Open Zones 对写入缓冲区的需求 : 保持大量的 open zones(例如 1K+)会增加对带宽的需求 ,并要求控制器提供足够的缓冲空间来管理并发写入请求。这需要较大的高带宽写入缓冲区以降低延迟并优化性能。 Charge-trapping QLC NAND 的编程需求 : 由

    2024年02月04日
    浏览(35)
  • 【数据治理-05】什么数据才是货真价实的数据资产,一起聊聊数据资产

    在国家层面一些列文件、纲要、政策、办法等政府力量的推动下,数据资产这个词越来越频繁的出现在我们寻常工作当中,现在越来越觉得这个词被滥用,大有“一切数据皆是资产”的感觉,业务数据是资产、技术数据是资产,不能共享的数据是资产、能共享的更是资产,就

    2023年04月11日
    浏览(24)
  • 比postman更香的工具—Apifox

    有许多的小伙伴都在问有没有一款工具是集 API 文档、API 调试、API Mock、API 自动化测试四种功能为一身的 ?因为目前公司的现状是这样的开发定义 API 使用 Swagger,后端开发调试 API 使用 Postman,前端 API 数据 Mock 使用 RAP,测试做 API 自动化测试或压力测试使用 Jmeter。 开发团队

    2024年02月14日
    浏览(34)
  • 新招了个从腾讯拿38K离职的测试大佬,让我见识到了什么才是测试界的天花板

    现在招个会几年工作经验还会自动化测试的测试工程师真是难呀,10个里面有8个写了会自动化,但一问就是三不知···· 5年测试工作经验,技术应该是能达到资深测试的水准,即不仅能熟练地开发业务,而且还能熟悉项目的开发,测试,调试和发布的流程,而且还应该能全面

    2024年02月08日
    浏览(29)
  • 苞米豆的多数据源 → dynamic-datasource-spring-boot-starter,挺香的!

    2023年元旦,我妈又开始了对我的念叨 妈:你到底想多少岁结婚 我:60 妈:60,你想找个多大的 我:找个55的啊,她55我60,结婚都有退休金,不用上班不用生孩子,不用买车买房,成天就是玩儿 我:而且一结婚就是白头偕老,多好 我妈直接一大嘴巴子呼我脸上 最近接到一个

    2023年04月21日
    浏览(32)
  • 微服务: sleuth和zipkin的用处与zipkin安装使用(下)

    目录 0. 上篇传送门: 1. 前言简介 mq安装传送门: 微服务: 01-rabbitmq的应用场景及安装(docker)  1.1 Sleuth是一款分布式跟踪解决方案。 1.2 Zipkin是一个开源的分布式跟踪系统。 2. zipkin安装方式 2.1 windows下安装zipkin:  2.1.0 下载jar包位置  2.1.1 下载后,找到文件路径 启动 2.1.2 设置启动

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包