国外做3d模型的网站怎么用电脑做网站服务器
文章目录
- 一、前言
 - 二、介绍
 - 1. 架构
 
- 三、安装skywalking服务端
 - 四、启动skywalking服务端
 - 五、微服务项目开发
 - 注册中心
 - 网关服务
 - 商品服务
 - 订单服务
 - 支付服务
 - 测试
 
- 六、下载java客户端
 - 七、微服务集成skywalking客户端
 - 1. idea启动
 - 2. 命令行启动
 - 3. 集成效果
 - 4. 服务实例
 - 5. 修改服务实例名称
 
- 八、skywalking客户端配置
 - 1. 配置文件
 - 2. jvm启动参数
 - 3. javaagent选项
 - 4. 操作系统环境变量
 
一、前言
本片文章主要讲解skywalking的安装教程,及其在微服务架构中的链路追踪功能。
本文中的演示项目运行环境如下:
- springcloud:2020.0.6
 - springboot:2.5.14
 - jdk:1.8
 - skywalking:9.4.0
 - os:windows
 
skywalking的介绍分多篇文章:
-  
- 微服务项目集成skywalking
 
 -  
- skywalking全链路追踪
 
 
二、介绍
skywalking是一个开源的应用性能管理系统和可观测性分析平台。用于收集、分析、聚合和可视化来自服务和云原生基础设施的数据。SkyWalking提供了一种简单的方法来保持我们的分布式系统的清晰视图,甚至跨云。这是一个现代的APM(应用性能管理和监控技术),专门为云本地的、基于容器的分布式系统而设计。
SkyWalking在许多不同的场景中为观察和监控分布式系统提供了解决方案。首先,与传统方法一样,SkyWalking为服务提供了自动仪器代理,如Java、C#、Node.js、Go、PHP和Nginx LUA。
SkyWalking为服务、服务实例、端点和流程提供了可观察性。
- 服务:代表为传入请求提供相同行为的一组工作负载。使用仪器代理或SDK时,可以定义服务名。
 - 服务实例:服务组中的每个工作负载称为一个实例。像Kubernetes中的pods一样,它不需要是单个操作系统进程,但是,如果您使用的是工具代理,实例实际上是一个真正的操作系统进程。
 - 端点:服务中用于传入请求的路径,例如HTTP URI路径或gRPC服务类+方法签名。
 - 流程:操作系统进程。在某些场景中,一个服务实例不是一个流程,比如一个pod Kubernetes可以包含多个流程。
 
1. 架构
SkyWalking在逻辑上分为四个部分:Probe(探针)、backend(平台后端)、storage(存储)和UI。
- Probe(探针):探针收集遥测数据,包括各种格式的度量、轨迹、日志和事件。
 - backend(平台后端):支持数据聚合、分析和流式处理,包括跟踪、指标、日志和事件。充当聚合者角色、接收者角色或两者兼而有之。
 - storage(存储):通过开放/可插拔的接口存储数据。你可以选择一个现有的实现,比如ElasticSearch、H2、MySQL、TiDB、BanyanDB。
 - UI:一个高度可定制的基于web的界面,允许skywalk终端用户可视化和管理skywalk数据。
 

三、安装skywalking服务端
进入skywalking下载页面,按照以下截图进行不同版本的下载

下载成功后进行解压,解压后如下所示

重点关注以下文件夹
- bin:包括用于后端服务和前端UI的启动shell脚本和cmd脚本
 - config:后端服务的配置文件,主要关注
application.yml、log4j.xml、alarm-settings.yml - oap-libs:后端服务所需要的所有依赖
 - webapp:前端应用以及配置文件
 
四、启动skywalking服务端
进入bin文件夹,双击webappService.bat启动skywalking服务的后端与前端。

启动成功后如下所示

既然服务启动成功,我们下一步就是通过浏览器打开skywalking的可视化界面了。
首先需要查看前端服务运行的端口,进入webapp文件夹,查看前端配置文件application.yml,发现前端服务的运行端口号是通过变量SW_SERVER_PORT设置的,其默认端口号为8081

在浏览器输入localhost:8081,进入控制台页面

五、微服务项目开发
本项目仅用于演示skywalking的集成过程,项目结构如下图所示

- skywalking-eureka-server:eureka服务注册中心
 - skywalking-gateway:网关
 - skywalking-goods:商品服务
 - skywalking-order:订单服务
 - skywalking-payment:支付服务
 
项目架构图如下所示

注册中心
本项目的注册中心仅用于服务注册,其配置文件如下所示

启动注册中心后,在浏览器打开注册中心页面,输入localhost:8080/eureka

从注册中心中可以看出,我们启动的实例如下
- eureka注册中心:只有一个实例,端口号为8080,为单机模式
 - 网关:只有一个实例,端口号为8090,为单机模式
 - 商品服务:两个实例,端口号分别为8011和8012,为集群模式
 - 订单服务:两个实例,端口号分别为8021和8022,为集群模式
 - 支付服务:两个实例,端口号分别为8031和8032,为集群模式
 
网关服务
本项目的注册中心仅用于转发请求,其配置文件如下所示

该配置中的三个路由分别用于转发请求到商品服务、订单服务和支付服务。
商品服务
商品服务中定义的接口如下:

当用户调用该接口时,打印日志进行记录,然后通过feign接口调用订单服务的创建订单接口,最后返回结果,
订单服务
订单服务中定义了一个由商品服务调用的接口如下:

该接口由商品服务调用,其返回值0代表成功,1代表失败。当传入的商品id为2的倍数时,则订单创建失败,否则通过feign接口调用支付服务的支付接口,最后返回结果。
支付服务
支付服务中定义了一个由订单服务调用的接口如下:

该接口由订单服务调用,其返回值0代表成功,1代表失败。当传入的商品id为3的倍数时,则支付失败,否则返回成功的结果。
测试
当我们调用商品服务的接口并传入商品id为1时

得到的结果为0,即成功。
查看日志如下:

从日志中可以看出,此次请求的调用链如下所示

当我们调用商品服务的接口并传入商品id为2时

得到的结果为1,即失败。
查看日志如下:

从日志中可以看出,此次请求的调用链如下所示

当我们调用商品服务的接口并传入商品id为3时

得到的结果为1,即失败。
查看日志如下:

从日志中可以看出,此次请求的调用链如下所示

六、下载java客户端
skywalking使用java agent将客户端植入到微服务中,当项目启动时,会自动与skywalking服务端建立连接。
下面我们进入官网下载页面

下载成功后进行解压,解压后如下所示

重点关注以下文件
- config:客户端的配置
 - logs:日志
 - skywalking-agent.jar:skywalking的客户端
 
七、微服务集成skywalking客户端
skywalking要求我们通过-javaagent将skywalking客户端集成到微服务中,现在我们对上面演示项目的各个服务进行集成
1. idea启动
使用idea启动项目的情况下,我们进入项目的启动配置(Run/Debug Configuration)中。
以端口号为8011的商品服务为例,添加以下JVM启动参数
# skywalking客户端路径
-javaagent:E:\skywalking\skywalking-agent\skywalking-agent.jar
# 服务名称
-Dskywalking.agent.service_name=skywalking-goods
 
如下图所示

2. 命令行启动
同样以端口号为8011的商品服务为例,当我们使用命令行启动微服务的jar包时,只需要将上面的两个参数放在-jar参数的前面即可,如下所示
java \
-javaagent:/data/skywalking/skywalking-agent.jar \
-Dskywalking.agent.service_name=skywalking-goods \
-jar \
skywalking-goods.jar
 
3. 集成效果
启动参数添加完成后,重启项目,然后进入skywalking服务端的控制台页面

不难发现,我们已经把项目中的eureka服务端、网关、商品服务、订单服务、支付服务集成到skywalking了。
该页面中包含四个标签页:Service、Topology、Trace、Log
-  
Service:微服务列表。类比eureka服务端的服务列表。
在该列表中,发现其表格中包含了以下几列-  
Service Groups:服务分组。
当我们启动服务时,在JVM启动参数中为其添加了skywalking的服务名称
-Dskywalking.agent.service_name=skywalking-goods,如果需要为该服务指定分组,则需要以分组名::服务名配置服务名称。例如我们需要将商品服务的分组设置为
sw-business,则将该参数修改为-Dskywalking.agent.service_name=sw-business::skywalking-goods。 -  
Service Names:服务名称。
 -  
Load(calls/min):平均每分钟调用次数。
 -  
Success Rate(%):调用成功率。
 -  
Latency(ms):延迟。
 -  
apdex:应用性能指数。
 
 -  
 -  
Topology:服务拓扑图。
 -  
Trace:服务调用链路。
 -  
Log:服务调用日志。
 
4. 服务实例
点击服务名,可查看该服务详情,其中包含该服务的实例列表
-  
查看eureka服务实例
通过以下截图看到eureka服务的实例数为1个,其实例名称为skywalking自动生成的,其规则为
UUID + @ + IP。
 -  
查看网关服务实例
通过以下截图看到网关服务的实例数为1个,其实例名称为skywalking自动生成的,其规则为
UUID + @ + IP。
 -  
查看商品服务实例
通过以下截图看到商品服务的实例数为2个,其实例名称为skywalking自动生成的,其规则为
UUID + @ + IP。
 -  
查看订单服务实例
通过以下截图看到订单服务的实例数为2个,其实例名称为skywalking自动生成的,其规则为
UUID + @ + IP。
 -  
查看支付服务实例
通过以下截图看到支付服务的实例数为2个,其实例名称为skywalking自动生成的,其规则为
UUID + @ + IP。
 
5. 修改服务实例名称
由于skywalking生成的实例名称有默认规则,我们可以对其进行修改,以增加各个服务实例的辨识度。
在项目的JVM启动参数中添加配置:-Dskywalking.agent.instance_name=实例名称。以商品服务为例
-  
端口号为8011的商品服务

 -  
端口号为8012的商品服务

 
重新启动商品服务的两个实例,可以看到对应的实例名称已被修改,且可以发现实例名称支持中文

八、skywalking客户端配置
skywalking客户端提供了多种配置方式:配置文件、jvm启动参数、-javaagent选项、操作系统环境变量。
1. 配置文件
在skywalking客户端的配置文件config/agent.config中,包含了大量客户端配置,如下截图所示。

以服务名的配置为例,配置项为agent.service_name,对应的值将从系统环境变量中获取SW_AGENT_NAME变量的值作为服务名,冒号:后面为默认配置,即如果系统环境变量中不存在该配置,则取默认值
2. jvm启动参数
使用 skywalking. + 配置项 实现对配置文件中对应配置项的覆盖,因此优先级更高。
-  
为什么要给配置项添加前缀
skywalking.前缀可以避免冲突。
 
例如:配置命名空间
-Dskywalking.agent.namespace=my_namespace
 
3. javaagent选项
格式:
多个配置项之间以逗号","分隔
-javaagent:/path/to/skywalking-agent.jar=[option1]=[value1],[option2]=[value2]
 
例如配置服务名和命名空间
-javaagent:/path/to/skywalking-agent.jar=agent.service_name=my_service_name,agent.namespace=my_namespace
 
如果配置项或配置值中包含特殊符号,则应当使用单引号’'将其包含
-javaagent:/path/to/skywalking-agent.jar=agent.service_name=my_service_name,agent.ignore_suffix='.jpg,.jpeg'
 
4. 操作系统环境变量
以服务名的配置为例,配置项为agent.service_name,对应的值将从系统环境变量中获取SW_AGENT_NAME变量的值作为服务名,冒号:后面为默认配置,即如果系统环境变量中不存在该配置,则取默认值。
以上就是skywalking的安装、以及如何与微服务项目进行集成的过程。
纸上得来终觉浅,绝知此事要躬行。
————————我是万万岁,我们下期再见————————
