当前位置: 首页 > news >正文

【springcloud】快速搭建一套分布式服务springcloudalibaba(四)

在这里插入图片描述

第四篇 基于nacos搭建分布式项目 分布式系统日志(skywalking+es)
项目所需 maven + nacos + java8 + idea + git + mysql + redis + skywalking + es
本文主要从客户下单时扣减库存的操作,将链路日志模拟出来,网关系统/用户系统/商品系统/订单系统

基于nacos搭建分布式项目 分布式系统日志链路

  • 场景
  • 为什么使用skywalking
    • skywalking
      • apache-skywalking-apm
      • apache-skywalking-java-agent
      • 版本推荐
      • 启动成功的页面
      • 看几张部署后的图
    • 接下来安装部署es+ kibana
    • 项目中要加入的信息
    • 启动项目
  • 结尾

场景

当项目分布式部署之后,各个系统的日志会分布在不同的系统内部,排查线上问题很不方便,业务量大的场景日志更是难找。怎么把同一个请求链路的日志连接在一起呢。比如下单操作,进入网关后要查用户信息,确认用户信息之后,查看商品库存是否可用,之后下单,这一个操作四个系统都有调用,去排查问题难上加难。这个时候可以加入一个唯一id用来标识同一链路,日志id从进入网关开始创建,通过HTTP头、RPC协议等将链路id在服务间传递,把他们存储在db服务中就可以通过唯一id查询到。

为什么使用skywalking

楼主公司的方案是将链路日志通过队列写入es,然后自己写的一套日志系统去查es,通过响应时间去分析性能。楼主网上查阅下来觉得skywalking+ es也有挑战,并且skywalking默认支持性能监控等,易用性较好。

skywalking

SkyWalking 是一款开源的 应用性能监控(APM, Application Performance Management) 和 分布式追踪系统,专为微服务、云原生和容器化架构设计。它由Apache软件基金会孵化并毕业为顶级项目,主要用于帮助开发者监控、诊断分布式系统的性能问题。
SkyWalking通过Java Agent在运行时动态注入追踪代码,自动记录。是不是觉得和aop很像,但他比aop更强大,aop只对Spring容器管理的Bean有用,Agent是在类加载时修改字节码文件,对项目中的所有类都可以监控和增强。
核心插件放在下面了,8.9.0版本的Agent和apm是分开的。

在这里插入图片描述

apache-skywalking-apm

这个插件是SkyWalking 的核心后端服务(Observability Analysis Platform,OAP),负责接收、分析和存储来自各种探针(Agent)的监控数据。
下载执行目录下/bin/startup.sh ,如果启动之后http://127.0.0.1:8080/无法进入控制台 查看日志信息即可,基本上开封急用。楼主是因为版本选择有问题看logs里面的文件排查到的。

apache-skywalking-java-agent

这个插件是Java 应用的探针(Agent),通过字节码增强技术无侵入式地收集应用性能数据。
依赖 skywalking-apm(OAP 服务)接收和存储数据,本身不处理或展示数据。
下载之后修改目录下/config/agent.config里面的

agent.service_name=my-service
collector.backend_service=127.0.0.1:11800

版本推荐

SkyWalking的使用资料还很少,java8建议用这个版本,8.9.0 往上就不支持java8了。

https://archive.apache.org/dist/skywalking/8.9.0/apache-skywalking-apm-8.9.0.tar.gzhttps://archive.apache.org/dist/skywalking/java-agent/8.9.0/apache-skywalking-java-agent-8.9.0.tgz

启动成功的页面

在这里插入图片描述

看几张部署后的图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

接下来安装部署es+ kibana

java8建议使用6.8.23版本的,超过该版本不支持了。

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.23.tar.gzhttps://www.elastic.co/downloads/past-releases#kibana

之后在skywalking目录下的config/application.yml 修改storage.selector 为elasticsearch即可。默认配置 端口是9200.

配置完成后 重新启动SkyWalking。

项目中要加入的信息

pom版本

<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-logback-1.x</artifactId><version>8.9.0</version></dependency><!-- SkyWalking Agent(可选,推荐通过启动参数指定) --><dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId><version>8.9.0</version></dependency>

/resources目录下加入logback-spring.xml

<configuration><!-- 注册自定义 Converter --><conversionRule conversionWord="tid" converterClass="org.apache.skywalking.apm.toolkit.log.logback.v1.x.LogbackPatternConverter" /><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><!-- 使用 %tid 直接引用 --><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><appender name="GRPC_LOG" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender"><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout"><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern></layout></encoder></appender><root level="INFO"><appender-ref ref="STDOUT" /><appender-ref ref="GRPC_LOG" /></root>
</configuration>

启动项目

通过命令行启动

java -javaagent:你的地址/skywalking-agent/skywalking-agent.jar \-Dskywalking.agent.service_name=goods-service \-Dskywalking.collector.backend_service=localhost:11800 \-jar target/你的包.jar 

观察控制台会自动写入es,通过kibana页面检索。

结尾

第一篇快速部署一套分布式服务

第二篇 基于nacos搭建分布式项目 网关

第三篇 搭建分布式项目 分布式事务(分布式锁+事务)

希望本文可以帮到你。

http://www.lqws.cn/news/84349.html

相关文章:

  • python爬虫:Ruia的详细使用(一个基于asyncio和aiohttp的异步爬虫框架)
  • Langchian - 自定义提示词模板 提取结构化的数据
  • 【redis实战篇】第七天
  • 在 Linux 服务器上无需 sudo 权限解压/打包 .7z 的方法(实用命令)
  • 小团队如何落地 Scrum 模型:从 0 到 1 的实战指南
  • rabbitmq Direct交换机简介
  • C++——AVL平衡树
  • Java递归编程中的StackOverflowError问题分析与解决方案
  • 题目 3230: 蓝桥杯2024年第十五届省赛真题-星际旅行
  • 数字孪生智慧水利解决方案:数字化场景、智慧化模拟、精准化决策,构建数字孪生流域为核心的智慧水利体系
  • 【笔记】Windows 部署 Suna 开源项目完整流程记录
  • 前端面试宝典---前端水印
  • Linux中的System V通信标准-共享内存、消息队列以及信号量
  • API 版本控制:使用 ABP vNext 实现版本化 API 系统
  • SpringBoot统一功能处理
  • linux驱动 - 5: simple usb device驱动
  • PART 6 树莓派小车+QT (TCP控制)
  • DDP学习
  • 什么是煤矿智能掘进
  • edg浏览器打开后默认是360界面
  • 【算法设计与分析】实验——改写二分搜索算法,众数问题(算法分析:主要算法思路),有重复元素的排列问题,整数因子分解问题(算法实现:过程,分析,小结)
  • 操作系统复习
  • 分词算法BBPE详解和Qwen的应用
  • 【深度学习新浪潮】多模态模型如何处理任意分辨率输入?
  • 项目采购管理习题剖析
  • 振动力学:有阻尼单自由度系统
  • 《操作系统真相还原》——中断
  • Python训练营打卡 Day43
  • 2023年12月6级第一套第一篇
  • mybatisplus的总结