微服务之SpringCloud(八)

7.4 Sentinel的功能

sentinel熔断器,主要的作用就是2个:1.流量控制 2.熔断降级

流量控制:根据测试的服务可处理请求上限,设置最大请求数

熔断降级:服务一旦不可用(超时、数据库、网络抖动、死锁、服务资源(CPU 内存)等等),可以立即执行降级方法

服务容错的三个核心思想是:

  1. 不被外界环境影响
  2. 不被上游请求压垮
  3. 不被下游响应拖垮

7.5 Sentinel安装

Sentinel控制台提供一个轻量级的控制台,它提供机器发现、单机资源实时监控、集群资源汇总,以及规则管理的功能. Sentinel DashBoard

使用步骤:

1.下载

下载地址:Releases · alibaba/Sentinel · GitHub

2.启动

java -jar sentinel-dashboard-1.8.1.jar

注意:需要切换到jar所在文件夹


3.访问控制台
http://localhost:8080


默认账号和密码:sentinel/sentinel


ps:默认没有任何监控,需要访问对应的服务才会有监控
7.6 Sentinel使用
将Sentinel配置在上游中,比如服务消费者上。

1.依赖jar

<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
  <version>2.2.1.RELEASE</version>
</dependency>

2.配置

server:
  port: 9091
spring:
  application:
    name: LxVoteApi #项目名,服务名
  cloud:
    nacos:
      discovery: #注册中心
        server-addr: 127.0.0.1:8848
    sentinel:
      transport:
        port: 8719   #信息采集的通信端口
        dashboard: 127.0.0.1:8080

3.开关类

4.接口降级

@RestController
@RequestMapping("/api/vote/")
public class VoteController {
    @Autowired
    private VoteService service;
    //文件上传
    @PostMapping("uploadimg.do")
    @SentinelResource(value = "uploadimg.do",fallback = "uploadError")//实现服务降级
    public R upload(@RequestParam MultipartFile file){
        return service.upload(file);
    }
    //降级方法-和受保护的方法具有一样的参数和返回值
    //一旦upload出现了错误,就会自动执行降级方法
    public R uploadError(MultipartFile file){
        return R.fail("亲,请检查网络");
    }
}

5.运行测试

5.运行测试

八、SpringCloud之链路跟踪

8.1 Sleuth概述

Spring Cloud Sleuth为Spring Cloud实现了分布式跟踪解决方案.其实是一个工具,它在整个分布式系统中能跟踪一个用户请求的过程(包括数据采集,数据传输,数据存储,数据分析,数据可视化),捕获这些跟踪数据,就能构建微服务的整个调用链的视图,这是调试和监控微服务的关键工具。服务链路跟踪技术框架

8.2 Sleuth核心

Span:基本工作单元,发送一个远程调度任务 就会产生一个Span,Span是一个64位ID唯一标识的,Trace是用另一个64位ID唯一标识的,Span还有其他数据信息,比如摘要、时间戳事件、Span的ID、以及进度ID。

迹线:一组spans,形成树状结构

注释:用于及时记录事件的存在,一些核心注解用来定义一个请求的开始和结束,这些注解包括以下:

cs:客户端已发送。客户提出了要求。此注释指示跨度的开始。

sr:服务器收到数据:服务器端收到了请求并开始处理它。从此时间戳中减去 cs 时间戳可显示网络延迟。

ss:服务器已发送。在请求处理完成时进行注释(当响应被发送回客户端时)。从此时间戳中减去 sr

时间戳将显示服务器端处理请求所需的时间。

cr:客户端收到数据。表示跨度结束。客户端已成功收到服务器端的响应。从此时间戳中减去 cs 时间

戳将显示客户端从服务器接收响应所需的整个时间。

8.3 Sleuth的功能

8.4 Zipkin

Zipkin是一个分布式跟踪系统。它有助于收集解决服务体系结构中的延迟问题所需的时序数据。功能包括该数据的收集和查找。

Zipkin 是 Twitter 的一个开源项目,它基于 Google Dapper 实现,它致力于收集服务的定时数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。 我们可以使用它来收集各个服务器上请求链路

的跟踪数据,并通过它提供的 REST API 接口来辅助我们查询跟踪数据以实现对分布式系统的监控程序,从而

及时地发现系统中出现的延迟升高问题并找出系统性能瓶颈的根源。除了面向开发的 API 接口之外,它也提

供了方便的 UI 组件来帮助我们直观的搜索跟踪信息和分析请求链路明细,比如:可以查询某段时间内各用户

请求的处理时间等。 Zipkin 提供了可插拔数据存储方式:In-Memory、MySql、Cassandra 以及 Elasticsearch。

接下来的测试为方便直接采用 In-Memory 方式进行存储,生产推荐 Elasticsearch。

Zipkin的基础架构,它主要由4个核心组件构成:

Collector:收集器组件,它主要用于处理从外部系统发送过来的跟踪信息,将这些信息转换为 Zipkin 内部处理的 Span 格式,以支持后续的存储、分析、展示等功能。

Storage:存储组件,它主要对处理收集器接收到

的跟踪信息,默认会将这些信息存储在内存中,我们也可以修改此存储策略,通过使用其他存储组件将跟踪信息存储到数据库中。

RESTful API:API 组件,它主要用来提供外部访问接口。比如给客户端展示跟踪信息,或是外接系统访问以实现监控等。

Web UI:UI 组件,基于 API 组件实现的上层应用。通过 UI 组件用户可以方便而有直观地查询和分析跟踪信息。

如果日志文件中有跟踪ID,则可以直接跳至该跟踪ID。否则,您可以基于属性进行查询,例如服务,操作名称,标签和持续时间。将为您总结一些有趣的数据,例如在服务中花费的时间百分比以及操作是否失败。提供了有个可视化平台

8.5 Zpkin安装

1、下载

https://search.maven.org/remote_content?g=io.zipkin&a=zipkin-server&v=LATEST&c=exec

2、启动运行

java -jar zipkin-server-2.23.2-exec.jar

3、浏览器访问

http://localhost:9411

ps:默认没有数据,只有请求之后才有日志数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cjy_行业报告

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值