熔断机制、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

}

相关推荐
BeingACoder8 小时前
【SAA】SpringAI Alibaba学习笔记(一):SSE与WS的区别以及如何注入多个AI模型
java·笔记·学习·saa·springai
DolphinScheduler社区8 小时前
真实迁移案例:从 Azkaban 到 DolphinScheduler 的选型与实践
java·大数据·开源·任务调度·azkaban·海豚调度·迁移案例
zhangkaixuan4569 小时前
Apache Paimon 写入流程
java·大数据·apache·paimon
Java爱好狂.9 小时前
分布式ID|从源码角度深度解析美团Leaf双Buffer优化方案
java·数据库·分布式·分布式id·es·java面试·java程序员
胡桃夹夹子9 小时前
存档111111111
java·开发语言
不会编程的小寒9 小时前
C++ 中string的用法
java·开发语言
乐悠小码9 小时前
Java设计模式精讲---02抽象工厂模式
java·设计模式·抽象工厂模式
数据的世界019 小时前
技术变革:为何C#与.NET是未来的开发方向
java·c#·.net
向上的车轮9 小时前
Actix Web适合什么类型的Web应用?可以部署 Java 或 .NET 的应用程序?
java·前端·rust·.net
脸大是真的好~10 小时前
黑马JAVAWeb-03 SpringBootWeb-分层解耦-三层架构-@SpringBootApplication注解-IOC控制反转-DI依赖注入
java