熔断机制、SBA和Nginx

1.熔断处理:

工作原理:统计服务调用的慢调用,异常数,异常比例,超过阈值时,就会发生熔断,截断访问该服务的一切请求连接

状态机的3个状态:

1.closed:关闭状态,断路器放行所有请求

2.open:打开状态,断路器发生熔断

3.half-open:半开状态,会放行一次请求

3.1请求成功:回到closed状态

3.2请求失败:回到open状态

4.断路器熔断判断策略:慢调用、异常数、异常比例

慢调用比例:RT=300ms(最大响应时间),比例阈值为0.4,最小请求数为5,熔断时间6s,统计时长1000ms,

在1000ms中,若在5次请求中,RT超过300ms的请求达到2次(40%),则会发生熔断,断开6s,6s后会允许一次请求(half-open)。

2.sentinel的持久化(sentinel通过微服务,读取nacos的持久化信息)

2.1引入sentinel-datasource-nacos依赖

2.2在配置文件中配置 数据库(nacos)的连接信息

spring.cloud.sentinel.datasource.ds1.nacos.serverAddr=192.168.200.111:8848

spring.cloud.sentinel.datasource.ds1.nacos.dataId=sentinel-rules

spring.cloud.sentinel.datasource.ds1.nacos.droupId=DEFAULT_GROUP

spring.cloud.sentinel.datasource.ds1.nacos.dataType=json

spring.cloud.sentinel.datasource.ds1.nacos.ruleType=flow

2.3在nacos中添加配置信息

配置列表->添加配置->添加配置信息

复制代码
    [
{
     "resource": "/testA",          //资源名
     "limitApp": "default",         //不区分调用来源
     "grade": 1,                    //限流阀值类型(QPS)
     "count": 1,                    //限流阀值
     "strategy": 0,                 //流控策略,0为直接
     "controlBehavior": 0,          //流控效果,0为快速失败
     "clusterMode": false           //不集群
}

]

3.sba(微服务系统监控)

3.1创建sba微服务

3.2监控微服务,在微服务中集成sba

3.2.1在微服务中引入依赖(spring-boot-admin-starter-client)

3.2.2在微服务的配置文件中添加

复制代码
#sba
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

3.3 sba微服务连接邮箱服务器

3.4 发送服务监控的邮件

Nginx(静态web资源服务器)

1.功能:

1.路由反向代理

2.负载均衡

3.动静分离

2.在nginx中可以写漏桶算法、限流代码、权限校验,可通过lua 脚本实现

3.nginx的配置文件

结构:

全局块

events块

http块

http全局块

server块

server全局块

location块

worker_processes 1; //进程数,最高为50

events { worker_connections 1024; //并发线程数 }

http { include mime.types; default_type application/octet-stream;

sendfile on; keepalive_timeout 65;

server { //server是处理请求的工作实例,server块可以定义多个 listen 80; //监听的端口号 server_name localhost; //localhost是127.0.0.1的别名,但127.0.0.1的优先级高,优先访问 location / { // root html; index index.html index.htm; //在nginx文件中的资源位置, localhost/index.html就可访问 } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }

4.反向代理

VPN翻墙(正向代理): 代理内网访问外网

nginx(反向代理):代理外网访问内网,实质是代理内网接受外网的请求

5.反向代理配置

在location块配置

location / {

root html;

index index.html

}

location ~* /api/user/ { // ~*表示:uri ,部分匹配,包含正则表达式,不区分大小写

proxy_pass http://localhost:10100;

}

location ~* /api/order/ {

proxy_pass http://localhost:10200;

}

6.负载均衡配置

在nginx配置文件中,配置upstream,在location块配置

upstream useserver{ //upstream为上游服务器,userserver为负载均衡名

server localhost:10100 weight = 7; //weight配置权重

server localhost:10101 weight=3;

}

server{

...

location ~* /api/user {

proxy_pass http://userserver; //将localhost:10100 替换为负载均衡名

}

}

7.负载均衡算法(random、uri_hash、ip_hash、weight、least_conn)

upstream targetserver{

random

server localhost:10100

server localhost:10101

}

相关推荐
言慢行善5 分钟前
sqlserver模糊查询问题
java·数据库·sqlserver
专吃海绵宝宝菠萝屋的派大星10 分钟前
使用Dify对接自己开发的mcp
java·服务器·前端
大数据新鸟28 分钟前
操作系统之虚拟内存
java·服务器·网络
Tong Z30 分钟前
常见的限流算法和实现原理
java·开发语言
凭君语未可33 分钟前
Java 中的实现类是什么
java·开发语言
He少年36 分钟前
【基础知识、Skill、Rules和MCP案例介绍】
java·前端·python
克里斯蒂亚诺更新1 小时前
myeclipse的pojie
java·ide·myeclipse
迷藏4941 小时前
**eBPF实战进阶:从零构建网络流量监控与过滤系统**在现代云原生架构中,**网络可观测性**和**安全隔离**已成为
java·网络·python·云原生·架构
迷藏4941 小时前
**发散创新:基于Solid协议的Web3.0去中心化身份认证系统实战解析**在Web3.
java·python·web3·去中心化·区块链
qq_433502181 小时前
Codex cli 飞书文档创建进阶实用命令 + Skill 创建&使用 小白完整教程
java·前端·飞书