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
}