内容简介:随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,所以会深深的感受到 “银弹” 这个词是不存在的,每种架构都有其优缺点 。面对以上情况, 我们就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题,这就是所谓的APM(应用性能管理)。
随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,所以会深深的感受到 “银弹” 这个词是不存在的,每种架构都有其优缺点 。
面对以上情况, 我们就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题,这就是所谓的APM(应用性能管理)。
目前主要的一些 APM 工具有: Cat、Zipkin、Pinpoint、SkyWalking,这里主要介绍一下 SkyWalking ,它是一款优秀的国产 APM 工具,包括了分布式追踪、性能指标分析、应用和服务依赖分析等。
下面是 SkyWalking 5.x 的架构图,6.x 会有些变化,目前还没有 Release。
说明:通过在应用程序中添加 SkyWalking Agent,就可以将接口、服务、数据库、MQ等进行追踪,将追踪结果通过 HTTP 或 gRPC 发送到 SkyWalking Collecter,SkyWalking Collecter 经过分析和聚合,将结果存储到 Elasticsearch 或 H2,SkyWalking 同时提供了一个 SkyWalking UI 的可视化界面,UI 以 GraphQL + HTTP 方式获取存储数据进行展示。
上面的架构图看似模块有点多,但在实际使用时我们并不需要关注太多的实现方式,HTTP、gRPC 、GraphQL 这些都是其内部架构使用到的技术,我们只需安装 SkyWalking Collecter、Elasticsearch 或 H2,然后在需要追踪的服务内配置少量的代码(Java 项目通过修改 JVM 参数即可),最后通过 SkyWalking UI 查看结果。
下面基于 Windows 环境使用 SkyWalking-netcore 来介绍一下 SkyWalking,可以把 SkyWalking-netcore 是 SkyWalking 的 .NET Core Agent。
环境要求
- JDK8+
- Elasticsearch 5.x
- 8080,10800,11800,12800 端口不被占用
Elasticsearch下载安装 参考官方教程, 安装完成后需要对 config/elasticsearch.yml 做如下修改:
# 修改 # 如果 cluster.name 不设置为 CollectorDBCluster ,则需要修改 SkyWalking 的配置文件 cluster.name: CollectorDBCluster network.host: 0.0.0.0 # 增加 thread_pool.bulk.queue_size: 1000
如果是 linux 环境,Elasticsearch 安装可能没有那么顺利,请参考 Linux 环境下安装 Elasticsearch 5.x、6.x 问题汇总 。
下载 SkyWalking
SkyWalking 个人建议直接下载官方编译好的, 下载地址
启动 SkyWalking
config/application.yml 内有所有的默认配置,可以发现默认是使用 Elasticsearch 进行数据存储的,所以在启动 SkyWalking 之前,确保 Elasticsearch 已启动。
SkyWalking 的启动包括两部分,一个是 SkyWalking Collector ,一个是 SkyWalking UI,SkyWalking 解压后的 bin 目录:
bat 为 windows 环境使用,sh 为 linux 环境使用,我们可以分别其他 collectorService 和 webappService,也可以通过 startup 一次性全部启动,从 startup 中的命令可以知道其实就是分别启动 collectorService 和 webappService。
如果一切顺利( 不顺利请多看几遍 快速入门 ),这时候就可以通过 http://localhost:8080 来查看 SkyWalking UI 了(默认全是0,截图是测试效果),默认账号/密码:admin/admin。
Java 项目接入
参考 部署 skywalking javaagent ,skywalking-agent.jar 位于下载包的 agent 目录下,具体效果这里就不测试了
.NET Core 项目接入
新建一个.NET Core API 项目,安装 Nuget 包:
Install-Package SkyWalking.AspNetCore
修改 Startup.cs:
public void ConfigureServices(IServiceCollection services) { //...... services.AddSkyWalking(option => { option.ApplicationCode = "WebAPIService1"; option.DirectServers = "localhost:11800"; }); }
这时候启动程序,请求的追踪结果就会被记录下来,通过 SkyWalking UI 查看
单个服务的效果并不明显,看不出请求跨度、链路关系,下面是一个多服务的例子( 下载源码 ),依赖关系图如下:
目前 SkyWalking 的 .NET Core Agent 支持通过 HttpClient 发送的请求和 通过 EntityFramework 进行数据库操作的跟踪,其他的作者在支持的路上。根据以上的关系图搭建好项目后,访问接口后结果如下:
一共有4各跨度,先访问 WenAPIService1,然后发送 HttpClient 请求,转到 WenAPIService2,WenAPIService2 执行操作 DB 的命令,每个跨度的耗时一目了然。
服务关系的拓扑图,调用链路径也非常清晰。
SkyWalking UI 使用上并不复杂,搭建好之后每个操作使用一下就了解了。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 分布式系统的那些事儿(三) - 系统与系统之间的调用
- 大型分布式系统现场,阿里大牛带你实战分布式系统
- 漫谈分布式系统(一):为什么要有分布式系统
- 分布式系统-->(关于系统应用的基本概念)
- 分布式监控系统 WGCLOUD,新增支持32位操作系统
- 分布式系统关注点——构建「易测试」系统的“六脉神剑”
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
个性化网页设计与鉴赏
梁景红 / 西安电子科技大学出版社 / 2003-07-14 / 22.00
本书比较全面地介绍了网页设计应注意的相关问题, 在网页设计基础方面着重讲解了网页框架、页面元素、色彩设计,分析了一些人们容易忽视的细小环节,如页面装饰物、图片、文字、连接等。书中结合实例分析了优秀网页的设计创意思想,可以给读者提供一些启示。书中还介绍了作为网页设计者需要了解的信息管理和技术应用,以及网站VI设计和视觉美学等必要知识,读者可针对各种类别的站点具体实践这些知识,寻找进行网页设计的切入点......一起来看看 《个性化网页设计与鉴赏》 这本书的介绍吧!