vip_springcloud_alibaba_2024 微服务快速入门学习项目
2024-10-18 15:19:06 0 举报
AI智能生成
轻松玩转微服务:Spring Cloud Alibaba快速入门学习项目
作者其他创作
大纲/内容
课程目标
新手快速入门Spring Cloud Alibaba,轻松玩转微服务
项目介绍
是什么
Spring Cloud Alibaba学习项目,快速入门Spring Cloud&Spring Cloud Alibaba一站式微服务解决方案
技术版本选型(官方推荐版本)
官方推荐
Spring Boot Version :3.2.4
Spring Cloud Version :2023.0.1
Spring Cloud Alibaba Version : 2023.0.1.0
Nacos Version: 2.3.2
Sentinel Version: 1.8.6
Seata Version:2.0.0
低版本的官方推荐
想学习更低版本的同学可以去看我们前两期的为微服务课程
图灵vip6期
Spring Boot Version :3.0.2
Spring Cloud Version :2022.0.0
Spring Cloud Alibaba Version : 2022.0.0.0
图灵vip5期
Spring Boot Version :2.3.12.RELEASE
Spring Cloud Version :Hoxton.SR12
Spring Cloud Alibaba Version :2.2.8.RELEASE
项目代码下载地址
项目结构
tlmall-order : 订单服务
tlmall-storage: 库存服务
tlmall-account: 账户服务
tlmall-gateway: 网关服务
tlmall-frontend: 前端服务,用于测试,可用postman代替
下单业务场景
用户下单购买货物的场景,下单后:
1. 先请求库存模块,扣减库存;
2.扣减账户余额;
3.生成订单信息返回响应。
1. 先请求库存模块,扣减库存;
2.扣减账户余额;
3.生成订单信息返回响应。
怎么学
小白直接跟着老师的课程安排学习。
课程安排
新手上路:快速搭建你的第一个微服务
发现新大陆:Nacos让服务互相认识
一键调用:OpenFeign简化服务间调用
配置不求人:Nacos配置中心动态管理
事务不头疼:Seata解决分布式事务
流量不再怕:Sentinel限流保护服务
智能门卫:Gateway轻松守护微服务入口
监控可视化:Skywalking实时追踪服务链路
赶时间,想快速部署体验的同学,可以直接跳到最后的项目快速部署,作为微服务深入学习的Demo
前期准备工作
需要的基础知识
会使用Spring Boot实现一个接口
会使用Mybatis操作mysql数据库
会使用git拉取代码
项目搭建环境要求
jdk 21
maven 3.9.5
配置阿里云maven镜像仓库
idea 2023.3.2
新手上路:快速搭建你的第一个微服务
速通版
1. git clone 拉取项目代码,导入idea中
2. git checkout v1.0.1
项目结构包含四个服务
tlmall-order : 订单服务
tlmall-storage: 库存服务
tlmall-account: 账户服务
tlmall-frontend: 前端服务,用于测试,可用postman代替
重点
实现的需求:用户下单扣减库存,扣减账户余额
如何引入Spring Cloud Alibaba的依赖?
父工程Pom文件内容
<dependencyManagement>和<dependency>的区别
环境准备
在启动服务前,请先配置 Host 地址映射,确保服务能够正常启动
需要导入Mysql数据库脚本文件,路径spring-cloud-alibaba-examples/config/sql/init.sql
可能遇到的问题
利用revision统一子工程的版本号,maven打包时提示{project_namme}:{revision} cannot be find
项目演示
启动所有微服务,测试
查询库存: localhost:8010/storage/?commodityCode=1
查询余额:localhost:8020/account/?userId=fox
下单: http://localhost:8080/order (此处时利用前端服务tlmall-frontend下单,也可用postman调用订单接口测试)
查询订单:localhost:8030/order/getOrder?userId=fox
发现问题
用户正常下单,没有扣减库存,没有扣减账户余额
新的需求
微服务间需要实现服务间的调用,比如订单微服务8030如何调到库存微服务8010,如何实现?
解决方案
利用Spring框架提供的RestTemplate实现服务间的调用
1)@Bean的方式配置RestTemplate
2)订单服务的OrderServiceImpl中引入RestTemplate
3)通过restTemplate.postForObject方法调用库存服务和账户服务
发现问题
//RestTemplate远程调用
String storage_url = "http://localhost:8010/storage/reduce-stock";
Integer storageCode = restTemplate.postForObject(storage_url,storageDTO, Result.class).getCode();
String storage_url = "http://localhost:8010/storage/reduce-stock";
Integer storageCode = restTemplate.postForObject(storage_url,storageDTO, Result.class).getCode();
微服务所在的IP地址和端口号硬编码写死了,如果库存服务(服务提供者)IP和端口发生变化,或者新增多个库存服务如何调用
新的需求
需要实现服务发现的功能,比如订单服务调用前能够获取到最新的库存服务列表
解决方案
可以引入注册中心Nacos,实现服务的注册与发现,比如将库存服务注册到Nacos, 订单服务调用之前从Nacos获取到库存服务的列表
发现新大陆:Nacos让服务互相认识
作用
服务的注册与发现
为什么要引入注册中心
Nacos是什么
官方文档
Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称
一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台
简单理解就是注册中心+配置中心
Nacos下载安装
注意版本
Nacos Version: 2.3.2
官网下载安装包
历史安装包地址
https://download.nacos.io/nacos-server/nacos-server-2.3.2.zip
解压后进入bin目录
官方安装文档
windows单机模式运行
startup.cmd -m standalone
运行成功后直接访问http://localhost:8848/nacos,默认账户密码都是nacos
微服务整合Nacos注册中心
官方参考文档
整合Nacos的服务提供者(库存服务)
服务注册
服务提供者可以通过 Nacos 的服务注册功能将其服务注册到 Nacos server 上。
1)引入依赖
库存服务的pom.xml中添加nacos-discovery 注册中心依赖
2)库存服务的application.yml中配置Nacos注册中心地址
3) 在启动类上使用 @EnableDiscoveryClient 注解开启服务注册与发现功能
这一步可忽略,因为nacos-discovery实现了服务自动注册
重新启动库存服务,然后去nacos控制台查看库存服务是否成功注册
同理,账户服务配置同上
整合Nacos的服务调用(消费)者 (订单服务)
服务注册
订单服务也需要注册到Nacos,配置同上
服务发现
服务调用者可以通过 Nacos 的服务发现功能从 Nacos server 上获取到它要调用的服务。
发现问题
订单服务作为服务调用者,需要获取库存服务列表然后选择一个库存服务节点发起调用,那应该调用哪一个库存服务?
新的需求
如何实现选择一个库存服务节点发起调用?
解决方案
RestTemplate+LoadBalancer 实现服务调用
什么是LoadBalancer
官方文档
Spring Cloud LoadBalancer是由SpringCloud官方提供的一个开源的、简单易用的客户端负载均衡器
订单服务利用负载均衡器LoadBalancer,从库存服务列表中选择一个节点,再通过RestTemplate实现库存服务调用
怎么用
1) 订单服务的pom.xml 中添加LoadBalancer的依赖
2) 订单服务的application.yml中添加配置spring.cloud.loadbalancer.nacos.enabled=true
3)RestTemplate通过添加 @LoadBlanced 注解接入LoadBalancer
4)订单服务调用逻辑中,RestTemplate远程调用String storage_url = "http://localhost:8010/storage/reduce-stock"可以改为String storage_url = "http://tlmall-storage/storage/reduce-stock"。使用微服务名tlmall-storage代替localhost:8010
重启所有服务,测试
Nacos控制台查看服务是否注册成功
下单:http://localhost:8080/order
查看是否成功扣减库存
借助idea工具,增加一个库存服务8011,再次下单,查看当有2个库存服务的时候,能否调到8011的库存服务
关于Nacos注册中心更多的配置使用,会在Nacos注册中心实战课程中进行详解
小结
通过Nacos注册中心可以实现微服务的注册与发现
思考:RestTemplate+LoadBalancer这种方式进行微服务调用存在什么问题?
发现问题
代码可读性差,编程体验不统一
参数复杂时URL难以维护
新的需求
是否有比RestTemplate+LoadBalancer更方便好用的服务调用组件?
解决方案
可以选择OpenFeign简化服务调用
一键调用:OpenFeign简化服务间调用
作用
服务间的远程调用,比如通过OpenFeign可以实现订单服务调用远程的库存服务
已经有了LoadBalancer为什么还要用openFeign
是什么
官方文档
OpenFeign是Spring Cloud框架中集成的声明式HTTP客户端工具
OpenFeign可以让远程调用服务达到像本地调用方法一样的体验。
怎么用
OpenFeign在服务消费端使用,比如订单服务使用OpenFeign调用库存服务和账户服务
1)引入依赖
订单服务的pom.xml中引入OpenFeign的依赖
2) 在订单服务启动类上添加@EnableFeignClients注解,开启openFeign功能
3) 编写OpenFeign客户端,调用库存微服务和账户微服务
4)订单服务发起调用,像调用本地方式一样远程调用库存服务和账户服务
重启订单服务,测试
Nacos控制台查看服务是否注册成功
下单:http://localhost:8080/order
查看是否成功扣减库存
借助idea工具,增加一个库存服务8011,再次下单,查看当有2个库存服务的时候,能否调到8011的库存服务
关于OpenFeign更多的配置使用和扩展,会在OpenFeign实战课程中进行详解
小结
通过OpenFeign可以实现微服务之间的远程调用
配置不求人:Nacos配置中心动态管理
作用
配置中心就是一种统一管理各种应用配置的基础服务组件。
微服务为什么需要配置中心
一个微服务一个application.yml,100个微服务100个application.yml,如果注册中心地址变了,想象一下怎么改配置
配置中心使得配置信息集中管理,易于维护,并且可以动态更新配置
怎么用
官方参考文档
配置中心这块官方文档太乱了(github,官网文档不同步,不更新),跟着老师的思路来配置
Nacos配置中心配置方式的变化
在SpringBoot2.4这个大版本中有一项非常重要的改动:出于对云原生多配置文件的支持,默认关闭了对bootstrap.yml的使用。
解决方案
方案1: 重新启用bootstrap.yml(不推荐)
方案2: 使用spring.config.import(官方推荐)
订单服务整合Nacos配置中心
目标: 把微服务中公共的配置配置统一管理,比如订单服务的注册中心配置和数据库公共配置可以抽取出来
1) 在Nacos控制台创建dataId(对应spring.config.import指定的配置文件名)
抽取application.yml中配置信息配置到Nacos指定的dataId文件中
公共配置
nacos-discovery.yml
db-common.yml
订单服务自己的配置
tlmall-order.yml
同时注释掉application.yml对应的配置
2)引入依赖
订单服务的pom.xml中引入nacos-config依赖
3) 在订单服务的application.yml 配置文件中配置 Nacos Config 地址并引入服务配置
使用spring.config.import(官方推荐)
指定的配置文件对应Nacos配置中心配置的dataId
重启订单服务,测试
可以先在application.yml中增加nacos日志打印配置,便于查看从配置中心拉取配置的情况
查看订单服务是否启动成功,并成功注册到Nacos注册中心
如果没有拉取到数据库配置是会报错的
下单:http://localhost:8080/order
查看是否成功扣减库存
同上步骤,库存服务和账户服务整合Nacos配置中心
相关资料
所有配置文件在spring-cloud-alibaba-examples/config/nacos-config/nacos_config_export_v1.0.5.zip包下,在Nacos配置中心中直接导入配置即可
关于Nacos配置中心更多的配置使用,会在Nacos配置中心实战课程中进行详解
小结
通过Nacos配置中心可以实现微服务配置的统一管理
事务不头疼:Seata解决分布式事务
为什么要使用分布式事务
问题重现
当账户余额会0时,还是可以下单成功,而且扣减库存
新的需求
下单逻辑需要保证数据一致性,当账户余额不够时,库存回滚,下单失败
解决方案
思考:使用spring事务能解决问题吗?
不能
使用分布式事务解决方案Seata (官方推荐)
Seata是什么
官方文档
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。
首选Seata AT 模式(官方推荐),可以做到业务无侵入
Seata AT模式的工作流程
非常重要的三个概念(要理解)
TC (Transaction Coordinator) - 事务协调者
维护全局和分支事务的状态,驱动全局事务提交或回滚。
TM (Transaction Manager) - 事务管理器
定义全局事务的范围:开始全局事务、提交或回滚全局事务。
RM (Resource Manager) - 资源管理器
管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
维护全局和分支事务的状态,驱动全局事务提交或回滚。
TM (Transaction Manager) - 事务管理器
定义全局事务的范围:开始全局事务、提交或回滚全局事务。
RM (Resource Manager) - 资源管理器
管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
比如,当前订单服务下单,调用库存服务扣减库存,调用账户服务扣减账户余额
订单服务要接入TM组件
下单操作需要开启全局事务(向TC申请一个全局事务XID),进入下单逻辑
如果下单正常,需要通知TC提交全局事务
如果下单异常,比如余额不够,需要通知TC回滚全局事务
订单服务,库存服务,账户服务都要接入RM组件
提交本地事务的同时,需要向TC注册分支事务信息
接收TC的通知,提交或回滚分支事务
TC是独立的服务
维护TM申请的全局事务信息和 RM提交的分支事务信息
TM通知TC全局事务提交或者回滚的时候,TM要通知RM分支事务提交或回滚
AT模式工作流程
问题:如何知道调用的是同一个分布式事务?
开启全局事务会分配一个全局事务XID,微服务链路会传递XID,注册每个分支事务都会带上XID
Seata Server(TC)安装部署
注意版本
Seata Version:2.0.0
下载地址
https://github.com/apache/incubator-seata/releases/download/v2.0.0/seata-server-2.0.0.zip
官网参考资料
Seata新手部署指南
seata 参数配置官网参考
TC端存储模式
全局事务分支事务信息存储到哪儿?
Seata1.x 支持的模式
file:单机模式,全局事务会话信息内存中读写并持久化本地文件root.data,性能较高,但是只支持单机模式部署,生产环境不考虑。
db:高可用模式,全局事务会话信息通过db共享,相应性能差些
redis:1.3及以上版本支持,性能较高,存在事务信息丢失风险,请提前配置适合当前场景的redis持久化配置
Seata2.x新增的Raft模式
利用Raft算法实现多个TC之间数据的同步。
raft模式是最理想的方案,但是当前并不成熟,所以不用考虑。
从稳定性角度考虑,最终选择采用db模式
创建seata数据库,sql脚本在seata-server-2.0.0\seata\script\server\db\mysql.sql
思考:RM和TM如何找到TC服务
可以将TC服务注册到Nacos,RM和TC通过Nacos注册中心实现TC服务的发现
注意:Seata的注册中心是作用于Seata自身的,和微服务自身配置的注册中心无关,但可以共用注册中心。
可以创建一个seata的命名空间,区分seata的TC服务和业务微服务
思考:TC的配置是不是也可以交个Nacos配置中心管理?
最终方案:db存储模式+Nacos(注册&配置中心)方式部署
前置环境准备
1.db模式准备好seata的数据库
2.准备好Nacos环境
配置Nacos注册中心
配置将Seata Server注册到Nacos,修改conf/application.yml文件
注意
这个cluster配置,默认TC是default集群,TM和RM要通过这个集群名找TC集群
请确保client(RM TM)与server(TC)的注册处于同一个namespace和group,不然会找不到server服务。
配置Nacos配置中心
1)配置Nacos配置中心地址,修改conf/application.yml文件
2)将seata server的配置上传配置至Nacos配置中心
a) 获取/seata/script/config-center/config.txt,修改为db存储模式,并修改mysql连接配置
TC如何使用mysql8?
b) 配置事务分组, TC要与client(RM TM)配置的事务分组一致
事务分组如何找到后端Seata集群?
c) 在nacos配置中心中新建dataId为seataServer.properties的配置,配置内容为上面修改后的config.txt中的配置信息
注意
是在seata命名空间下新建seataServer.properties,要和conf/application.yml中的config配置对应上
特别注意seataServer.properties是否是SEATA_GROUP
启动Seata Server
windows点击bin目录下seata-server.bat直接启动
启动成功,查看控制台http://127.0.0.1:7091,账号密码都是seata。
在Nacos注册中心中可以查看到seata-server注册成功
微服务整合Seata AT模式实战
业务场景
用户下单,订单服务调用库存服务扣减库存,调用账户服务扣减账户余额
事务发起者:订单服务
事务参与者:库存服务,账户服务
订单服务(事务发起者)整合Seata
1)引入seata的依赖
2) 订单服务对应数据库中添加undo_log表(仅AT模式)
3)订单服务application.yml中添加seata配置
需要在nacos的控制台中创建一个seata的命名空间,用于和业务微服务隔离
注意:请确保client与server的注册中心和配置中心namespace和group一致
优化:可以将seata配置移到配置中心中
4)订单服务作为全局事务发起者,在下单方法上添加@GlobalTransactional注解
库存服务(事务参与者)整合Seata
和整合订单服务前三步一样
4)库存服务只需要在扣减库存方法上添加Spring事务@Transactional注解
账户服务(事务参与者)整合Seata
配置同库存服务一样
Seata2.x常见问题
微服务启动报错:io.seata.config.exception.ConfigNotFoundException: service.vgroupMapping.default_tx_group configuration item is required
产生的原因&解决思路
原因:无法拉取到service.vgroupMapping.default_tx_group=default这个配置,也就找不到集群名为default的seata server服务
思路1:检查下微服务端seata配置是否未配置事务分组seata.tx-service-group=default_tx_group
思路2:检查下namespace和group配置server端和client端是否对应,特别注意seataServer.properties是否是SEATA_GROUP
seata server报错:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
产生的原因&解决思路
原因:无法连上数据库
思路:检查下seataServer.properties中jdbc配置是否正确,检查jdbc版本和mysql版本是否匹配
重启所有服务,测试分布式事务是否生效
下单:http://localhost:8080/order
分布式事务成功场景,模拟正常下单、扣库存,扣余额
分布式事务失败场景,模拟下单扣库存成功、扣余额失败,事务是否回滚
有个问题:seata2.0.0 版本的bug,还是版本不兼容引起的
事务发生回滚,回滚成功了,但是最外层代码无法捕捉到原始的BusinessException异常,只能捕捉到RuntimeException运行时异常
原因分析
建议:不要在生产上用最新版本Seata2.0.0,坑有点多
关于Seata更多的配置使用,会在Seata实战课程中进行详解
小结
通过Seata可以解决微服务分布式事务的问题
流量不再怕:Sentinel限流保护服务
微服务架构为什么要使用流控降级组件
为了提高系统运行期间的稳定性和可用性
需求:对下单接口进行流控
sentinel是什么
Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
官方文档
sentinel的安装
官方参考文档
sentinel由两部分构成
核心库(Java 客户端):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持
控制台(Dashboard):Dashboard 主要负责管理推送规则、监控、管理机器信息等。
安装Sentinel控制台
注意版本
Sentinel Version: 1.8.6
官方文档地址
下载地址
https://github.com/alibaba/Sentinel/releases/download/1.8.6/sentinel-dashboard-1.8.6.jar
启动sentinel控制台
java -Dserver.port=8888 -Dcsp.sentinel.dashboard.server=tlmall-sentinel-dashboard:8888 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.6.jar
java -Dserver.port=8888 -Dcsp.sentinel.dashboard.server=tlmall-sentinel-dashboard:8888 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.6.jar
如若8080端口冲突,可使用 -Dserver.port=新端口 进行设置。
访问sentinel控制台
从 Sentinel 1.6.0 起,Sentinel 控制台引入基本的登录功能,默认用户名和密码都是 sentinel
访问:http://localhost:8888
sentinel整合微服务
官方参考文档
以订单服务为例
1)引入sentinel的依赖
2)业务代码中配置需要保护的资源
mvc接口方法自动埋点,不需要配置
非mvc接口方法可以使用@SentinelResource 注解用来标识资源是否被限流、降级
对下单接口进行流控,此处不需要处理
3)添加yml配置,为订单服务设置sentinel控制台地址
此配置可以移到配置中心,新增一个sentinel-dashboard.yml的配置
测试,重启订单服务,对用户下单进行流控
启动sentinel控制台,在sentinel控制台中设置流控规则
注意:需要先访问一次下单接口,sentinel控制台才会有订单服务记录
将单机阈值调为1,用postman测试下单接口,是否被流控
sentinel更多的实战操作,比如各种规则配置,整合loadbalancer,openFeign,规则持久化等,都会在sentinel实战课中讲解
小结
通过sentinel可以实现微服务的流控降级
智能门卫:Gateway轻松守护微服务入口
微服务为什么需要API网关
在微服务架构中,通常一个系统会被拆分为多个微服务,面对这么多微服务客户端应该如何去调用呢?
如果根据每个微服务的地址发起调用,存在如下问题:
为了解决上面的问题,微服务引入了 API网关 的概念
Spring Cloud Gateway是什么
官方文档
Spring Cloud Gateway 是Spring Cloud官方推出的第二代网关框架,定位于取代 Netflix Zuul。
Spring Cloud Gateway 旨在为微服务架构提供一种简单且有效的 API 路由的管理方式,并基于 Filter 的方式提供网关的基本功能,例如说安全认证、监控、限流等等。
Spring Cloud Gateway 是由 WebFlux + Netty + Reactor 实现的响应式的 API 网关。它不能在传统的 servlet 容器中工作,也不能构建成 war 包。
微服务快速接入Spring Cloud Gateway
构建网关服务
创建一个新的module模块tlmall-gateway
pom.xml中引入Spring Cloud Gateway网关依赖
注意:gateway会和spring-webmvc的依赖冲突,需要排除spring-webmvc
微服务快速接入网关服务
以订单服务为例,在网关服务的application.yml
库存服务,账户服务同上
网关服务的完整的application.yml配置如下
此配置可以移到配置中心,新增一个tlmall-gateway.yml的配置
测试,启动网关服务
postman中通过网关服务的18888端口下单,看能否成功
tlmall-frontend前端服务order.html中访问地址都替换为tlmall-gateway:18888,测试下单是否成功
关于Spring Cloud Gateway更多的操作,会在Spring Cloud Gateway实战课程中讲解
小结
gateway就是整个微服务架构的流量入口
监控可视化:Skywalking实时追踪服务链路
全链路追踪的作用
对请求源头到底层服务的调用链路中间的所有环节进行监控。
skywalking是什么
官方网站
skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。
SkyWalking 是观察性分析平台和应用性能管理系统,提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
Skywalking整体架构
SkyWalking 环境搭建部署
下载 SkyWalking
apache-skywalking-apm-10.0.1.tar.gz
https://www.apache.org/dyn/closer.cgi/skywalking/10.0.1/apache-skywalking-apm-10.0.1.tar.gz
skywalking的后端服务OAP+可视化UI
apache-skywalking-java-agent-9.3.0.tgz
https://www.apache.org/dyn/closer.cgi/skywalking/java-agent/9.3.0/apache-skywalking-java-agent-9.3.0.tgz
用于从微服务采集数据的探针
搭建SkyWalking OAP 服务
1)修改配置
先使用默认的H2数据库存储,不用修改config/application.yml配置
skywalking-web-ui服务会占用 8080 端口, 修改端口可以修改webapp/webapp.yml
2)windows下启动脚本bin/startup.bat
启动成功后会启动两个服务,一个是skywalking-oap-server,一个是skywalking-web-ui
访问UI界面,如果端口改为了18080,访问:http://localhost:18080/
微服务接入Skywalking agent探针
微服务配置jvm参数,接入skywalking
以订单服务为例,idea启动配置中配置skywalking agent
账户服务,库存服务同上
测试,用户下单,在skywalking UI界面查看是否有链路数据
常见问题: 没有查看到网关服务的数据
需要将agent包下的optional-plugins/apm-spring-cloud-gateway-4.x-plugin-9.3.0.jar 拷贝到plugins下
关于Skywalking更多的操作,会在Skywalking实战课程中讲解
小结
通过Skywalking可以实现微服务调用链路追踪
项目快速部署
小白不要直接跳过这节,跟着老师的课程安排的步骤学习
赶时间,只想快速部署跑起来体验的同学,可以参考这节快速部署体验
具体步骤
1.部署前准备
在启动服务前,请先配置 Host 地址映射,确保服务能够正常启动
不配置也可以,都用localhost或者ip
拉取代码
git clone git@gitee.com:dongchenglin/vip_springcloud_alibaba_2024.git
2.服务本地化部署
2.1 微服务环境准备
Nacos
Seata Server
Sentinel 控制台
Skywalking服务端
这些组件都要启动,参考前面每个组件的部署篇
2.2 导入项目数据库
需要导入Mysql数据库脚本文件,路径spring-cloud-alibaba-examples/config/sql/init.sql
2.3 导入微服务配置到Nacos配置中心
在public命名空间下,导入微服务的配置
路径:spring-cloud-alibaba-examples/config/nacos-config/nacos_config_export_v1.0.8.zip
2.4 启动所有微服务
3. 测试,下单接口: http://localhost:8080/order
0 条评论
下一页