SkyWalking概述

1.1.1微服务架构优劣势分析

随着互联网以及各行业的蓬勃发展,能够提供给用户快速的响应和优质服务已经成为企业生存发展的重要因素。为此业务应用系统也在不断的进行改变,以适应新时代的发展带来的用户需求变化与挑战。很多企业将单体应用架构逐步转变成了微服务架构。那么采用微服务架构有哪些优势?又给我们带来了哪些新的问题呢?

微服务架构带来的一些优势:

  1. 微服务架构与语言工具无关,开发团队可以选择自身擅长的语言和工具,高效的完成团队负责开发的应用系统功能组件。
  2. 每个微服务组件简单灵活且能够独立部署,其并不会影响其他既有服务。不再像以前单体架构那样需要部署一套庞大、完整的应用系统来支撑。
  3. 微服务之间是松耦合的,任何一个组件在正常工作和部署的时候都不应该依赖其他组件或者资源,并且每个微服务很容易按需进行扩容。
  4. 微服务将整个应用系统拆解成了多个小的服务,较单体架构而言其拥有更小的代码量也就意味着其更容易被理解。

微服务架构带来的一些问题:

  1. 在微服务架构中调试会变得非常困难。发给应用程序的一次请求可能会经过多个不同微服务才能完成相应的业务处理。每个微服务都会产生自身的日志,在这种情况下让开发等相关人员定位问题产生的原因简直就是一场噩梦。
  2. 在单体架构的应用中,所有功能都在一个服务中,通常我们监控数据库、磁盘、CPU 使用率、网络吞吐量、业务的响应时间等,这些指标通常可以应用一些系统工具或者第三方工具就能够非常方便的获取到。但在微服务架构中,监控的开销会呈指数级增长,微服务架构中的每个微服务都需要类似单体架构的监控。不难想象,当一个应用系统包含几百个微服务时,微服务的监控将是一场灾难。
  3. 在单体架构中,因为团队采用的是统一的开发语言,各系统模块的开发可以应用一些公共库,但在微服务架构下,跨团队、跨系统、跨语言可能会带来很多的重复性的工作,比如:在不同编程语言下实现功能相同的库函数等。

针对前面我们一起对微服务架构的分析后,大家不难发现它给开发、测试和运维人员带来最大的挑战就是微服务链路的监控和追踪。那么有没有什么工具可以帮助我们来做这件事儿呢?当然有,它就是SkyWalking。

SkyWalking 是一个开源可观察性平台,用于收集、分析、聚合和可视化来自服务和云原生基础设施的数据。SkyWalking 提供了一种简单的方法来维护分布式系统的清晰视图,即使是跨云也是如此。它是一种现代 APM,专为云原生、基于容器的分布式系统而设计。

那么什么又是APM呢?APM(即:Application Performance Management即:应用性能管理,在分布式领域也称为分布式跟踪管理)对企业的应用系统进行实时监控,它是用于实现对应用程序性能管理和故障管理的系统化的解决方案。随着分布式系统和微服务架构的应用和发展,应用性能管理成为系统运维管理和网络管理的一个重要方向,它能够对企业的关键业务应用进行监测、优化,提高企业应用的可靠性和质量,保证用户得到良好的服务,降低IT总拥有成本。APM能够对整个企业的IT系统各个层面进行集中的性能监控,并对有可能出现的性能问题进行及时、准确的分析和处理。它能轻松地从一个IT应用系统中找到故障点,并提供有相关解决建议或方法,从而提高整体的系统性能。

在微服务架构中,一次请求通常会涉及到多个服务,因此服务的性能监控和问题排查就变得更加复杂。不同的服务可能由不同的团队开发、甚至可能使用不同的编程语言来实现服务且有可能这些服务分布在几千台服务器,横跨多个不同的数据中心。这就需要一些可以帮助理解系统行为、用于分析性能问题的工具,从而方便在发生故障的时候,能够快速定位和解决问题,SkyWalking就是解决这些问题的利器之一。

1.1.2 SkyWalking核心概念及架构

SkyWalking 提供了在许多不同场景中观察和监控分布式系统的解决方案。与传统方式一样,SkyWalking 为 Java、C#、Node.js、Go、PHP等服务提供自动探针。在多语言、持续部署的环境中,云原生基础架构变得更加强大,但也更加复杂。SkyWalking 的服务网格接收器允许 SkyWalking 从 Istio/Envoy 和 Linkerd 等服务网格框架接收遥测数据,让用户了解整个分布式系统。

在SkyWalking中有3个非常重要的概念,即:服务、服务实例和端点。这里简单介绍一下它们的含义:

  1. 服务,表示一组为传入请求提供相同行为的工作负载。您可以在Shell脚本中、配置文件中来修改、定义服务名称。
  2. 服务实例,为了提供更稳定、高效的用户性能等方面体验,通常服务由多组工作负载组成,而服务组中的每个单独的工作负载称为一个实例。
  3. 端点,即:传入请求的服务路径,也就是我们通常所说的对外提供的接口。例如 HTTP URI 路径或 gRPC 服务类 + 方法签名。

接下来,让我们来了解一下SkyWalking的官网提供的架构图,如图1-1所示。

SkyWalking 在逻辑上分为四个部分,即:探针、平台后端、存储和 UI。

图1-1

那么这4个部分各自负责什么呢?

  1. 探针(Probes),这里主要指基于不同语言的Agent探针,其用于收集数据并重新格式化以满足 SkyWalking 要求。
  2. 平台后端(Platform backend)支持数据聚合、分析和流处理,包括跟踪、指标和日志。
  3. 存储(Storage)通过开放/可插拔接口存储SkyWalking数据。根据您的情况可以选择目前支持的ElasticSearch、H2、MySQL、TiDB、InfluxDB数据存储方式,默认支持H2数据库。
  4. UI基于Web 的界面,SkyWalking允许用户可视化查看和管理其收集的相关数据,如图1-2所示。

图1-2

相关推荐
dzend9 分钟前
spring cloud-skywalking入门指南
spring·spring cloud·skywalking
云边的快乐猫2 小时前
badboy坏男孩批量抓取录制接口(接口可导入到jmeter中使用)
软件测试·jmeter·badboy·接口录制工具·批量录制接口
Waitfor_Me10 小时前
微服务保护——Sentinel
微服务·架构·sentinel
黄名富11 小时前
Kafka 生产者
java·微服务·kafka
第三方软件测评13 小时前
科技查新测试基础知识分享
软件测试·科技
正在绘制中14 小时前
Java重要面试名词整理(二十):Gateway&SkyWalking
java·面试·gateway·skywalking
Cikiss16 小时前
微服务实战——购物车模块实战
java·开发语言·后端·spring·微服务·springcloud
测试者家园18 小时前
JMeter + Grafana +InfluxDB性能监控 (一)
自动化测试·软件测试·jmeter·性能测试·grafana·性能监控·质量效能
BUG研究员_19 小时前
微服务のGeteWay
java·数据库·微服务
互联网杂货铺19 小时前
单元测试、系统测试和集成测试知识
自动化测试·软件测试·python·测试工具·单元测试·测试用例·集成测试