SpringCloud Alibaba Sentinel 简介和安装

一、前言

        接下来是开展一系列的 SpringCloud 的学习之旅,从传统的模块之间调用,一步步的升级为 SpringCloud 模块之间的调用,此篇文章为第十三篇,即介绍 SpringCloud Alibaba Sentinel 简介和安装。

二、Sentinel 简介

2.1 Sentinel 是什么

        简单的解释:就是之前我们讲解过的 Hystrix,其中文文档的地址在这。

2.2 下载地址

        下载地址在这,选择适合自己的版本,如下图:

2.3 作用

2.4 解决问题

        这个组件可以解决服务雪崩、服务降级、服务熔断、服务限流等功能。

三、安装 Sentinel 控制台

3.1 组成部分

        Sentinel 分为两个部分:第一部分为核心库(Java 客户端),能够运行于所有 Java 运行环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。第二部分为控制台(Dashboard)基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。

3.2 安装步骤

3.2.1 下载

        下载地址在这,选择适合自己的版本,如下图:

3.2.2 运行

        运行的前提为有 java8 环境,并且 8080 端口未被占用,输入 java -jar sentinel-dashboard-1.8.7.jar 启动项目,如下图:

3.2.3 访问

        启动成功后,在浏览器输入 http://localhost:8080 进行访问,如下图,用户名和密码都是 sentinel

四、初始化演示工程

4.1 启动 Nacos 注册中心

        首先确保我们的注册中心是正常启动的,如下图:

4.2 创建工程

        创建一个名为 cloudalibaba-sentinel-service8401 的子模块,pom.xml 内容如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.springcloud</groupId>
        <artifactId>SpringCloud</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>cloudalibaba-sentinel-service8401</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
            <groupId>com.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!--SpringCloud ailibaba nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--SpringCloud ailibaba sentinel-datasource-nacos 后续做持久化用到-->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
        </dependency>
        <!--SpringCloud ailibaba sentinel -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
        <!--openfeign-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!-- SpringBoot整合Web组件+actuator -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--日常通用jar包配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>4.6.3</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>
</project>

        application.yml 内容如下所示:

server:
  port: 8401

spring:
  application:
    name: cloudalibaba-sentinel-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # Nacos服务注册中心地址
    sentinel:
      transport:
        dashboard: localhost:8080 # 配置Sentinel dashboard地址
        # 默认8719端口,假如被占用会自动从8719开始依次+1扫描,直至找到未被占用的端口
        port: 8719

management:
  endpoints:
    web:
      exposure:
        include: '*'

        主启动类代码如下所示:

package com.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class MainApp8401
{
    public static void main(String[] args) {
        SpringApplication.run(MainApp8401.class, args);
    }
}

        业务类 controller 代码如下所示:

package com.springcloud.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class FlowLimitController {
    
	@GetMapping("/testA")
	public String testA(){

		return "------testA";
	}

	@GetMapping("/testB")
	public String testB(){

		return "------testB";
	}
}

4.3 启动测试

        启动我们刚才创建模块,并启动 Sentinel,打开 Sentinel 的管理界面,如下图:

        可以看到,什么都没有

4.4 懒加载机制

        Sentinel 采用的是懒加载机制,只有调用过该模块对外服务的接口,才能够在管理界面上进行显示,调用 http://localhost:8401/testA,再次刷新管理界面,如下图:

        可以看到 sentinel8080 正在监控微服务 8401。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/525143.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32CubeMX配置步骤详解七 —— 时钟及其它内部参数配置(2)

接前一篇文章&#xff1a;STM32CubeMX配置步骤详解六 —— 时钟及其它内部参数配置&#xff08;1&#xff09; 本文内容主要参考&#xff1a; STM32CUBEMX配置教程&#xff08;一&#xff09;基础配置-CSDN博客 野火STM32系列HAL库开发教程 —— 第12讲 STM32的复位和时钟控制…

docker一键部署GPU版ChatGLM3

一键运行 docker run --gpus all -itd --name chatglm3 -p 81:80 -p 6006:6006 -p 8888:8888 -p 7860:7860 -p 8501:8501 -p 8000:8000 --shm-size32gb registry.cn-hangzhou.aliyuncs.com/cwp-docker/chatglm3-gpu:1.0 进入容器 docker exec -it chatglm3 /bin/bash cd /…

企业版ChatGPT用户激增至60万;百度文心一言推出个性化声音定制功能

&#x1f989; AI新闻 &#x1f680; 企业版ChatGPT用户激增至60万 摘要&#xff1a;OpenAI首席运营官Brad Lightcap在接受采访时透露&#xff0c;企业版ChatGPT的注册用户已超60万&#xff0c;相较2024年1月的15万用户&#xff0c;短短三个月内增长了300%。这一版本自2023年…

【Java】maven是什么?

先看一下基本概念: ①Maven 翻译为"专家"&#xff0c;"内行"是跨平台的项目管理工具。 主要服务于基于Java平台的项目构建&#xff0c;依赖管理和项目信息管理。 ②项目构建 项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报…

js 数组 按列循环二维数组

期待效果&#xff1a; 核心代码&#xff1a; //js function handle(array) {var result [];for (let i 0; i < array[0].length; i) {var item []; for (let j 0; j < array.length; j) {item.push(array[j][i])} result.push(item);} return result; } 运行代码&a…

14 Python进阶:math模块和requests 模块

常用方法 Python3 的 math 模块提供了许多数学函数&#xff0c;用于执行常见的数学运算。以下是 math 模块中一些常用方法的简介&#xff1a; 数值运算函数&#xff1a; math.sqrt(x)&#xff1a;返回 x 的平方根。math.pow(x, y)&#xff1a;返回 x 的 y 次幂。math.exp(x)&a…

TiDB MVCC 版本堆积相关原理及排查手段

导读 本文介绍了 TiDB 中 MVCC&#xff08;多版本并发控制&#xff09;机制的原理和相关排查手段。 TiDB 使用 MVCC 机制实现事务&#xff0c;在写入新数据时不会直接替换旧数据&#xff0c;而是保留旧数据的同时以时间戳区分版本。 当历史版本堆积过多时&#xff0c;会导致读…

Golang | Leetcode Golang题解之第13题罗马数字转整数

题目&#xff1a; 题解&#xff1a; var symbolValues map[byte]int{I: 1, V: 5, X: 10, L: 50, C: 100, D: 500, M: 1000}func romanToInt(s string) (ans int) {n : len(s)for i : range s {value : symbolValues[s[i]]if i < n-1 && value < symbolValues[s…

MySQL - MySQL数据库的事务(一)

1. 回顾一下MySQL运行时多个事务同时执行是什么场景 平时我们执行增删改的时候,无非就是从磁盘加载数据页到buffer pool的缓存页里去,对缓存页进行更新,同时记录下来undo log回滚日志和redo log重做日志,应该的是事务提交之后MySQL挂了恢复数据的场景,以及事务回滚的场景…

AcWing 3. 完全背包问题

解题思路 不过这种方式是有序的&#xff0c;而不是无序的。 相关代码 import java.util.Scanner;public class Main{static long f[] new long[1010];static int v[] new int[1010];static int w[] new int[1010];public static void main(String[] args){Scanner scan n…

Windows Docker 部署 PostgreSQL 数据库

一、简介 PostgreSQL是一个功能强大且特性齐全的对象-关系型数据库管理系统&#xff0c;它以加州大学计算机系开发的POSTGRES为基础&#xff0c;并具备高度自由开源的特性。PostgreSQL支持大部分SQL标准&#xff0c;提供了复杂查询、外键、触发器、视图、事务完整性以及多版本…

Android 11属性系统初始化流程

在init进程启动的第二阶段&#xff0c;调用PropertyInit 对属性系统进行初始化 int SecondStageMain(int argc, char** argv) {//省略PropertyInit();//省略 }PropertyInit函数在system\core\init\property_service.cpp 中实现 void PropertyInit() {//省略mkdir("/dev/…

2024最新SpringCloud学习教程,Consul/Nacos/Feign/Sentinel/Gateway/Seata一网打尽

本文主要介绍了SpringCloud最新的应用技术&#xff0c;简单说明每类技术涉及的知识点&#xff0c;对应技术的学习资料、软件、可用代码和下载地址在文末给出。 文章目录 说明SpringCloud简介ConsulConsul简介使用示例 NacosNacos简介使用示例 负载均衡LoadBalancerLoadBalancer…

链表实验.

#include<stdio.h> #include<stdlib.h>// 定义单链表节点结构体 struct Node {int data;struct Node* next; };struct Node* initList() {struct Node* list (struct Node*)malloc(sizeof(struct Node));list->data 0;list->next NULL;return list; }void…

蚁剑修改特征性信息

前言 我们首先得知道蚁剑的流量特征&#xff1a; 编码器和解码器的特征&#xff1a;蚁剑自带的编码器和解码器具有明显的特点&#xff0c;可以通过更改配置文件来达到流量加密的目的1。例如&#xff0c;蚁剑支持多种编码方式&#xff0c;如base64、chr、rot13等&#xff0c;这…

海量智库 | ANY权限原理介绍

ANY权限是Vastbase中的一种特殊的管理权限&#xff0c;用户能够通过ANY权限执行更广泛的操作&#xff0c;更加便利的管理数据库。 本文将为您介绍ANY权限管理的相关原理。 ANY权限管理相关解释 ANY权限管理&#xff0c;是对数据库内的某一类对象的所有实体进行特定的权限管理…

【C++】继承总结

一、前言 我们众所周知的C三大特性分别为&#xff1a;封装、继承、多态。 封装就是将接口实现统一化&#xff0c;隐藏那些不同的地方&#xff0c;在上层函数调用体现的方式一样&#xff0c;如各种容器的迭代器iterator&#xff0c;尽管底层实现的方式不同&#xff0c;但是在使用…

C++数据结构与算法——贪心算法简单题

C第二阶段——数据结构和算法&#xff0c;之前学过一点点数据结构&#xff0c;当时是基于Python来学习的&#xff0c;现在基于C查漏补缺&#xff0c;尤其是树的部分。这一部分计划一个月&#xff0c;主要利用代码随想录来学习&#xff0c;刷题使用力扣网站&#xff0c;不定时更…

安全加固方面思路

系统层面上的加固 备份重要配置文件&#xff1a;将一些重要的系统配置文件备份&#xff0c;包括 /etc/login.defs、/etc/security/limits.conf 等等。进行账号安全加固&#xff1a;修改密码安全策略&#xff0c;设置密码存在最长时间、密码长度、密码过期提醒等。 &#xff08…

Linux设备模型统一:桥接硬件多样性与应用程序开发的关键

在Linux的宏大世界中&#xff0c;各种各样的硬件设备如星辰般繁多。从常见的USB设备到复杂的网络接口卡&#xff0c;从嵌入式设备到强大的服务器&#xff0c;Linux需要在这些差异极大的硬件上运行。这就引出了一个问题&#xff1a;Linux是如何统一这些不同硬件的设备模型的呢&a…