首页 > 其他分享 >微服务03 微服务sentinel, springcloudgateway

微服务03 微服务sentinel, springcloudgateway

时间:2024-10-14 19:21:32浏览次数:6  
标签:03 服务 请求 springcloudgateway Sentinel dashboard sentinel 路由

6 Sentinel

6.1 Sentinel 介绍和工作机制

6.1.1 微服务流量治理组件介绍

随着微服务的流行,服务和服务之间的调用导致服务的稳定性问题变得越来越重要。
雪崩问题: 微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,即雪崩。
解决雪崩问题的常见方式有四种:
1.超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待
2.流量控制:限制业务访问的QPS,避免服务因流量的突增而故障。
3.熔断降级:由断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。
4.舱壁模式:限定每个业务能使用的线程数,避免耗尽整个tomcat的资源, 因此也叫线程隔离。

6.1.2 Sentinel 介绍

https://sentinelguard.io/zh-cn/

6.1.3 Sentinel 基本概念

#资源
资源在java中的资源一般是接口方法。通常就是一个URL,比如:/hello/get
#规则
围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整。

6.1.4 Sentinel 功能和设计理念

6.1.6 Sentinel 架构

6.1.7 Sentinel 的构成

Sentinel 的构成可以分为两个部分:
核心库(Java 客户端):
    开发写代码调用sentinel的库
控制台(Dashboard):
    运维部署控制台,Dashboard 主要负责管理推送规则、监控、管理机器信息等。

6.2 Sentinel 控制台

6.2.2.1 Java 二进制启动控制台

https://github.com/alibaba/Sentinel/releases
#直接下二进制包如sentinel-dashboard-1.87.jar(jar命令直接跑), Source code为源码还要编译

使用如下命令启动控制台:
java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar
#-Dserver.port定义dashboard web界面端口(默认8858)
#-Dcsp.sentinel.dashboard.server自己作为微服务注册到dashboard进行监控 -Dproject.name注册的项目名

#从 Sentinel 1.6.0 起,Sentinel 控制台引入基本的登录功能,默认用户名和密码都是 sentinel

范例: Java 包启动控制台

#安装JDK8或以上版本
[root@ubuntu2204 ~]#apt update && apt -y install openjdk-8-jdk
[root@ubuntu2204 ~]#apt update && apt -y install openjdk-11-jdk

[root@ubuntu2204 ~]#wget https://github.com/alibaba/Sentinel/releases/download/1.8.6/sentinel-dashboard-1.8.6.jar
[root@ubuntu2204 ~]#java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.6.jar

#浏览器使用默认用户名和密码sentinel登录访问
http://10.0.0.151:8080/

docker网上有,但非官方版,很久没更新了,建议自己制作

sentinel控制台
#左侧簇点链路:生成key访问的路径,如: http://10.0.0.151:8080/version

流量控制控制/version路径
#可以在流量规则里加,但不够快,直接在簇点链路下在/version下点击流控
#QPS  单向阈值1表示每秒钟只能接受一个请求,超出就拒绝。点击添加会出现在流控规则中
此时访问http://10.0.0.151:8080/version,就能看到失败情况

#java程序可以调用sentinel,来控制流量
#java程序会在配置里标注sentinel的地址,如果不想用java配置里写的sentinel地址,可以在启动时参数修改
#如果临时修改sentinel地址信息,可以不用修改application.yml文件重新编译,直接添加下面选项再执行
[root@ubuntu2204 sentinel-sample]#java -Dspring.cloud.sentinel.transport.dashboard=10.0.0.100:8080 -jar target/sentinel-sample-0.0.1-SNAPSHOT.jar

 

7 Spring Cloud Gateway

7.1 Spring Cloud Gateway 介绍

7.1.1 什么是 API 网关

API网关作用就是把各个微服务对外提供的API汇聚起来,让外界看起来是一个统一的入口
同时还实现了微服务网关的额外功能, 包含:负载均衡、路由转发、身份认证、权限安全、请求限流、监控/指标等功能 

7.1.3 API 网关核心功能

#一般都是开发写的调度规则
1.路由转发
转发后端服务去查nacos服务,如果有多个,配合nacos实现负载均衡,轮流发
2.过滤器
过滤器中默认提供了多种内置功能还支持额外的自定义功能。
比较常用的功能有网关的容错、限流以及请求及相应的额外处理。

7.2 Spring Cloud Gateway 核心概念

7.2.1 Spring Cloud Gateway 相关概念介绍

Route 称为路由,一个Gateway项目可以包含多个Route。
一个Route路由包含如下部分:
1.Route ID: 是自定的,路由的唯一标识
2.URI: 路由目的地,为一个地址, 支持 LB,http,websocket 
3.predicates: 路由断言,判断请求是否匹配和符合转发规则的要求,如果符合则转发到路由目的地
4.filters: 路由过滤器,对请求或响应进行过滤处理, 比如: 身份认证和权限校验限流限速,此为可选项

示例: 路由配置

#微服务项目中的application.yml内容
server:
 port: 10010 #网关端口
spring:
 application:
   name: gateway #服务名称
 cloud :
   nacos:
     server-addr: localhost:8848 # nacos地址
   gateway:
     routes: #网关路由配置 (下面两个路由)
      - id: user-service #路由id,自定义值,必须唯一
       uri: lb://userservice #路由的目标地址Lb表示负载均衡,后面跟Nacos中微服务名称
        # uri: http://127.0.0.1:8081 #路由的目标地址,如果使用 http表示固定地址
       predicates: #路由断言,判断请求是否符合路由规则的条件
        - Path=/user/** #这个是按照路径匹配,只要以/user/开头就符合要求
      - id: order-service
       uri: lb://orderservice/order
       predicates: 
        - Path=/order/** 
       filters:
        - StripPrefix=1 #从请求路径中删除第一个前缀/order,再转发给后端

7.2.2 路由断言工厂 Route Predicate Factory

#这些一般都是开发去调用,修改
路由断言工厂 RoutePredicateFactory 包含的主要实现类如图所示,包括 Datetime 、请求的远端地址、路由权重、请求头、Host 地址、请求方法、
请求路径和请求参数等类型的路由断言。

7.2.3 路由过滤器 Gateway Filter

Gateway Filter是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理

7.2.4 过滤器工厂 GatewayFilterFactory

当前支持34类路由过滤器工厂,实现请求和响应的定制功能

7.3 Spring Cloud Gateway 开发

这是一个库,需要java写代码调用

 

标签:03,服务,请求,springcloudgateway,Sentinel,dashboard,sentinel,路由
From: https://www.cnblogs.com/ludingchao/p/18464840

相关文章

  • 题解:P10370 「LAOI-4」Mex Tower (Hard ver.)
    ProblemLink「LAOI-4」MexTower(Hardver.)题意给定一个长度为$n$的序列$a$,求序列的$\operatorname{Mex}$值是否大于等于其他所有长度为$n$的自然数序列的$\operatorname{Mex}$值。Solution不难发现,两个数或一个序列的$\operatorname{Mex}$一定是......
  • 第十期机器学习基础 03GPT的发展
    一:GPT-1---预测未来在自然语言中,大量的未标记文本语料库非常丰富,但是有标签的数据训练的效果比较好,如果想要在没有标签的数据集上训练出好的模型比较难。因此作者提出了一个想法,在无标签的数据上训练一个预训练模型,然后在这些有标签的子任务上训练一个微调模型。(当时之前是CV领......
  • 第03章 SpringBoot获取请求参数
    我们首先创建“SpringBootRequestDemo”工程。然后我们修改编码格式以及Maven仓库地址,我们省略这个过程了。接着我们再添加spring-boot-starter-parent,spring-boot-starter-web,spring-boot-starter-thymeleaf依赖库<?xmlversion="1.0"encoding="UTF-8"?><projectxm......
  • 慧通教育C++测试题 103667--103673(5题)
    103667.求最大值难度:1登录//103667.求最大值难度:1#include<bits/stdc++.h>usingnamespacestd;intans=0,n,m,q,a[105][105];intmain(){ cin>>n>>m>>q; for(inti=1;i<=n;i++){ for(intj=1;j<=m;j++){ cin>>a[i][j]; } } int......
  • 403错误跳到网站首页
    处理403错误(禁止访问错误)并跳转到网站首页,可以通过几种不同的方式来实现,具体取决于您使用的编程语言和框架。下面我将分别给出几种常见Web开发环境下的示例:1.PHP在PHP中,可以使用header()函数来重定向页面:<?phpif($user_not_authorized){header('HTTP/1.1403Forbi......
  • 03-第一中值定理、微积分基本定理、牛莱公式、泰勒公式(转)
    一、第一中值定理如果函数f(x)在闭区间[a,b]上连续,则在积分区间[a,b]上至少存在一个点ξξ,使得∫baf(x)dx=f(ξ)(b−a).(a⩽ξ⩽b)∫abf(x)dx=f(ξ)(b−a).(a⩽ξ⩽b)二、微积分基本定理积分上限函数:函数f(x)在区间[a,b]上连续,对于定积分∫xaf(x)dx∫axf(x)dx每一个取值的x......
  • 读数据工程之道:设计和构建健壮的数据系统03数据工程生命周期(上)
    1. 数据工程生命周期1.1. 数据领域正在经历新数据技术和实践的爆炸式增长,抽象程度和易用性不断提高1.2. 由于技术抽象程度的增加,数据工程师将越来越多地成为数据生命周期工程师,根据数据生命周期管理的原则来进行思考和操作1.3. 数据工程生命周期包括将原始数据成分转化......
  • day03——面向对象高级
    day03——面向对象高级各位同学,前面两天我们已经把面向对象最主要的内容学习完了,剩下的这些语法知识学完,那么Java语法知识就算全齐活了。今天学习的内容同学们学习起来会更轻松一些,有一些语法知识只需要了解一下就可以了,因为实际工作用得并不多。我们先来了解第一个语法知识,内......
  • TMS320 F28034与WirngPi库
    TMS320F28034是一款由TI公司生产的高性能微控制器,主要用于电机控制、电源管理等应用。而WiringPi库是一个用于树莓派GPIO编程的库,与TMS320F28034没有直接关系。如果您想在TMS320F28034上控制三相电机,需要使用TI提供的库和例程。以下是一个简单的C语言示例,用于在TMS320F28034上控制......
  • TMS320 F28034与WirngPi库
    TMS320F28034是一款由TI公司生产的高性能微控制器,主要用于电机控制、电源管理等应用。而WiringPi库是一个用于树莓派GPIO编程的库,与TMS320F28034没有直接关系。如果您想在TMS320F28034上控制三相电机,需要使用TI提供的库和例程。以下是一个简单的C语言示例,用于在TMS320F28034上控制......