Rpc 调用监控 | 学习笔记

简介: 快速学习 Rpc 调用监控

开发者学堂课程【分布式链路追踪 SkywalkingRpc 调用监控】学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/743/detail/13159


Rpc  调用监控


内容介绍:

一、测试 Skywalking 对于 Rpc调用的支持

二、启动应用

三、项目逻辑分析与总结:


一、测试 Skywalking 对于 Rpc 调用的支持

1. Skywalking 对 Rpc 调用进行监控,Skywalking(6.5.0)支持的Rpc框架有以下几种:

Dubbo 2.5.4 -> 2.6.0

Dubbox 2.8.4

Apache Dubbo 2.7.0

Motan 0.2.x->11.0I gRPC 1.x

Apache ServiceComb Java Chassis0.1->0.51.0.x

SOFARPC 5.4.0

使用 Spring Boot 和 Dubbo 搭建一个简单的服务提供方和服务消费方来测试 Skywalking 对于 Rpc调用的支持。可以使用资源文件夹下已经完成打包的skywa1king_dubbo_consumer.jar

和 skywalking_dubbo_provider.jar 来进行测试。

首先来看服务提供方的源码,打开 pom 文件,它是基于springboot  2.1.10版本进行构建,引入了 web 和 test 这俩个依赖,然后还使用了 Dubbo 和springboot 集成的官方提供的依赖,也就是 Dubbo-spring-boot-starter ,版本号为2.0.0。

配置文件,配置文件中将注册中心设置成了 H/A ,代表不使用注册中心进行注册,只是将服务发布到本地,消费方需要去调用这个服务提供方的时候,需要在消费方显示的指定下服务提供方的 IP 地址和端口。Tomcat 启动的端口是8086。

查看源码,源码中为了方便,将接口在消费方和服务提供方都在同一个目录下放置了一个接口,这个接口比较简单,就是返回一个字符串。在 service 实现中,使用了 service 注解,在注解中需要添加一个属性,叫做 interfaceclass ,也就是。显示的是名下,如果这个时间内到底要暴露什么样的一个服务,那么服务接口其实就在IHelloService 这个结果里面。那么它的字节码文件,需要作为参数传入进去。然后再将实现类注入到 spring 容器之中,就可以使用了。消费方也类似,查看配置文件,这个配置文件都是基础配置,Tomcat 启动的端口是8085。

1.对外提供了HTTP接口,同时调用了我们的一个Dubbo 服务,去使用我们服务提供方提供的接口。需要注意,当用 @Reference 来进行一个注解的时候需要制定服务提供方的一个位置,也就是通过 double 协议去访问服务提供方,他部署在本机,同时暴露的端口是20880 ,20880就是一个默认端口,因为在服务提供方里面没有去声明一个端口。那么当注入完之后,程序启动 helloservice 就会变成一个动态代理对象,然后由 Dubbo 框架远程调用一个provide工程里面提供的接口,然后把结果进行反馈。

image.png

特别注意;用了集成框架之后,需要在启动类上加上一个注解,叫做@Enable DubboConfiguration,开启 Dubbo 配置,这样子才能够使用到这样的工程。


二、启动应用:

测试sky walking对我们这个支持。首先把两个 jar 包上传到目录下。

下图中的这俩个 jar 包:

image.png

上传完毕之后呢,把agent拷贝两份。进到 bin 目录下。

image.png

拷贝命令行:

cp -r agent_boot agent_dubbo_consumer  //服务消费方

cp -r agent boot agent_dubbo_provider   //改成服务提供方

编辑配置文件命令行:

vi agent_dubbo_consumer/config/agent.config

运行,并修改服务的名称,分别是 dubbo_consumer

image.png

和 dubbo_Provider

image.png

退出,保存。

启动应用命令行:

java-javaagent:/usr/loca1/skywalking/apache-skywalking-apm-bin/agent_dubbo_provider/skywalking-agent.jar  -jar skywa1king_dubbo_provider.jar  & //通过jar  -jar启动本地的skywa1king_dubbo_provider.jar ,&符号代表后端启动

启动成功后:

image.png

需要在修改命令:将所有的provider修改为consumer:

java-javaagent:/usr/loca1/skywalking/apache-skywalking-apm-bin/agent_dubbo_consumer/skywalking-agent.jar  -jar skywa1king_dubbo_consumer.jar

将这两个应用启动,

image.png

会发现 logo 变成了 DOBBO 和 Spring Boot 。启动成功后在浏览器地址栏输入端口号,需要访问的端口是 consumer 的端口:8085,接口为 hello 。输入为:192.168.62.141:8085/hello,回车。

会出现如下界面:

image.png


三、项目逻辑分析与总结:

那么这个hello sky walking是谁来打印?是通过 DOBBO 服务调用到了 hello service 的 hello 方法,这个方法的实现类是在 provide里面,这个 skywalking 这个字符是在 provide 里面打印出来的。返回返回hello skywalking ,这里证明打包调用已经成功,接下来在 sky walking 页面上刷新查看。会发现服务出现了两个新的这个服务。接口也变成了 /hello 。如下图所示:

image.png

第二个是dobbo 接口:

com.itcast.api.IHelloService.hello()

image.png

这个就是在如下图所示的IHelloService 中定义的一个接口:

image.png

其实一笔调用出现了两个请求,一个请求是对MVC 提供的一个 http请求 。另外一个是 dubbo 调用。

如下拓扑图。拓扑图中,很明显出现一个调用链,前端用户 double-consumer消费者发起这个 Spring MVC 的请求,然后由 consumer通过double 调用到 provide ,如下图所示:

image.png

追踪里面进行手动刷新,搜索。调用 hello,这是一个 HTTP 请求,通过 Get 方式来进行,花费了一秒钟时间,其次,第二步就是去调用到了一个 dubbo 的接口,调用时长相对比较短,最终,他这个double就耗时五毫秒,大部分时间都是在HTTP 请求里面消耗的,通过这样的一个方式,可以发现,服务之间有了一个链路的一个关系,在这个链路上,通过追踪可以详细的看到,到底是哪个地方出现了性能的瓶颈,然后可以根据实际的情况进行优化。目前来看,Dubbo 调用非常快,五毫秒就结束,具体的时间耗在 Spring MVC 这个应用里,以上就是在 skywalking 中怎么对 Rpc 调用进行监控。主要是去修改 agent ,主要是创建多个 agent 。同时用 agent 启动 Springboot 项目。这样就可以对 Springboot  和dubbo 集成的项目进行监控。

image.png

相关文章
|
6月前
|
监控 Linux 网络安全
linux中启动rpc.rstat监控
请注意,rpc.rstatd服务通常用于收集远程系统的性能统计信息,例如CPU利用率、内存使用等。在使用rpc.rstatd服务之前,你应该确保了解其功能、用法和安全性,并根据需要进行适当的配置和调整。
101 0
|
Java 网络架构 开发者
使用 restTemplate 实现 RPC 远程|学习笔记
快速学习使用 restTemplate 实现 RPC 远程
221 0
|
Dubbo 应用服务中间件
Netty实现简单RPC调用
我们知道Dubbo是一个RPC框架,那RPC框架需要实现什么?需要实现的是调用远程服务和本地服务一样方便,同时提高调用远程服务的性能。而服务端和客户端之间的关系,其实就是一个生产和消费的关系。
116 0
Netty实现简单RPC调用
|
网络协议 Java 大数据
网络编程:了解 RPC|学习笔记
快速学习网络编程:了解 RPC
224 0
网络编程:了解 RPC|学习笔记
|
消息中间件 Dubbo NoSQL
微服务架构的常用 RPC 协议 | 学习笔记
快速学习微服务架构的常用 RPC 协议 。
微服务架构的常用 RPC 协议 | 学习笔记
|
编解码 Dubbo Java
RPC&Netty 原理|学习笔记
快速学习 RPC&Netty 原理
RPC&Netty 原理|学习笔记
|
Dubbo 程序员 应用服务中间件
RPC 简介|学习笔记
快速学习 RPC 简介
RPC 简介|学习笔记
|
消息中间件 JSON 编解码
08、Netty学习笔记—(基于聊天业务:RPC实现)
08、Netty学习笔记—(基于聊天业务:RPC实现)
08、Netty学习笔记—(基于聊天业务:RPC实现)
|
消息中间件 Dubbo 网络协议
rabbitmq高并发RPC调用,你Get到了吗?
rabbitmq高并发RPC调用,你Get到了吗?
854 0
rabbitmq高并发RPC调用,你Get到了吗?
|
负载均衡 算法 应用服务中间件
Netty框架入门(二)之基于Netty实现简单的Rpc调用
Netty框架入门(二)之基于Netty实现简单的Rpc调用
198 0
Netty框架入门(二)之基于Netty实现简单的Rpc调用