gateway+skywalking链路追踪简单使用

本文探讨了SpringCloudGateway作为新一代网关框架的优势,与Nginx的差异,以及如何利用Skywalking进行服务追踪和性能分析。重点讲解了路由、断言工厂和过滤器的应用,以及Skywalking的部署和使用方法。
摘要由CSDN通过智能技术生成
Spring-cloud-gateway网关

Spring-cloud-gateway是spring-cloud官方提供的第二代网关框架,取代了netflix-xuul1.0,毕竟netflix已经不做更新了,而且Spring-cloud-gateway的性能相比之下更高效,功能更强大;

Spring-cloud-gateway是由webfliux+netty+reactor实现的响应式API网关;

核心功能

路由

路由是网关的基本功能,它由URL+断言工厂+filter组成,针对于一个请求路径,如果断言为真说明请求的URL和配置的留有匹配;

断言

当请求gateway的时候,断言工厂根据当前的断言规则来进行请求路径的匹配,断言工厂有很多,比如基于请求的时间,基于发起请求的IP地址,请求的目的IP,基于cookie,基于http请求头等等,总结就是它能根据http请求来更灵活的进行路由,

过滤器

过滤器可以对请求响应做处理

Nignx和gateway区别

简单的说gateway 是前端工程 到 后台服务器之间的一个 对内网关,nginx是用户到 前端工程 的网关,对外网关,gateway 更偏向于业务

Nginx是基于服务端的负载均衡,而gateway是基于客户端的负载均衡,也就是本地的负载均衡,当请求到gateway时,gateway这里有一个服务列表,在gateway本地来选择好去哪里;

(个人理解):基于客户端的负载均衡是可以自动发现并更新服务的,配合微服务的注册中心,不需要重复配置路由的ip,而服务端的负载均衡,是需要手动配置的,请求需要路由到哪里,特别是微服务,当服务数量比较多的时候,用ningx一个一个去配置运维起来就很麻烦;

过滤器工厂(局部过滤器):

针对某个路由,过滤器处理去设置路由规则,还能对请求和响应报文做处理

全局过滤器(配置即生效):

对所有的请求和响应做处理;

Skywalking链路追踪

当一个大型的微服务项目,服务数量几十上百个,

当出现问题,如何实现快速定位?

服务之间的调用链路,依赖关系如何快速理清?

当服务性能出现问题,如何进行接口的性能分析?

这些都可以通过链路追踪来解决;

Skywalking是一个国产开源框架,个人开源框架;既不属于spring-boot,也不属于spring-cloud,它是基于字节码注入的调用链路分析;

jvm设计之初,就考虑了虚拟机状态的监控,程序debug,线程和内存分析等功能,并在1.5版本之后,形成了一套接口JVMTI,也就是探针技术,它的实现有两种方式

1是在程序运行前,通过premain()来,添加拦截器,在类加载之前完成对字节码的修改,

另一种是在程序运行中修改字节码文件;

像我们平时用到的idea中的debug模式,就是基于它来实现的;

skywalking组成

Skywalking agent:和业务系统绑定在一起的,负责收集各种监控数据(一般安装在业务系统的服务器上)

Skywalking oapservice:负责处理监控数据,处理前端的请求(它启动后,会暴露两个地址,一个是用来接收agent收集的信息,一个是用来接受处理前端的请求,这个都可以在配置中进行更改)

Skywalking webapp:前端界面,负责展示数据

数据库:用于存储监控数据

Skywalking部署(为了方便目前在windos环境)

1.下载

下载地址

Downloads | Apache SkyWalking

下载完成后,进行解压,解压路径不能有中文,不然启动会报错,另外它的webapp的端口号默认8080,建议进行修改,在webapp/webapp.yml中进行修改,修改完成后即可启动,run.bat

注意:skywalking9.0之后的版本,agent是分开的,所以我们需要单独下载,下载解压后,在server的解压包中新建agent目录,并复制进去

  1. agent端的搭建

它是用的上面提到的探针技术中,在main启动前的premain中加入拦截器的方式,来实现的,所以我们也不需要修改代码,只需要在jvm启动时添加参数即可,

-javaagent:agent启动包的路径

-DSW_AGENT_NAME=项目名称,如果用了注册中心,最好和服务名一致

-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=aollector连接地址也就是服务端暴露的收集信息的地址

示例

-javaagent:D:/soft/apache-skywalking-apm-9.0.0/apache-skywalking-apm-bin/agent/skywalking-agent.jar

-DSW_AGENT_NAME=order_sky

-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800

然后启动,在webapp上就可以看到调用链路了

当然也可以根据自己的业务,自定义调用链路,引入相关依赖,然后用添加相应的注解配置就可以;这里就不详细介绍了;

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值