家用住宅主机Linux Sentinel流量防护熔断限流

适用场景与准备

如果你家用Linux主机上跑着个人网站或API接口,担心被恶意刷流量导致系统卡死,可以用Sentinel来做防护。
Sentinel是阿里巴巴开源的流量控制组件,支持限流、熔断和系统保护。
即使不熟悉Java,按照本文步骤也能在家用主机上快速部署并生效。

你需要提前准备好:

  • 一台运行Linux(如Ubuntu 20.04+或CentOS 7+)的家用主机,并安装好Docker(sudo apt install docker.io -y)。
  • Java运行环境(JDK 8或以上),可以用java -version检查,没有的话运行sudo apt install openjdk-11-jdk -y。
  • 一个Spring Boot应用(后面会给出最简单的示例)。

第一步:用Docker启动Sentinel Dashboard

Sentinel Dashboard是图形化管理界面,用来配置限流规则和查看监控。
在家用主机上用Docker启动最省事:

# 拉取镜像(版本以官方为准,此处用1.8.6示例)
docker pull bladex/sentinel-dashboard:1.8.6

# 启动容器,映射8858端口(默认控制台端口)
docker run --name sentinel-dashboard -d -p 8858:8858 bladex/sentinel-dashboard:1.8.6

启动后通过http://你的主机IP:8858访问,默认账号密码都是sentinel。
登录后先不用操作,下一步让应用连上来。

第二步:创建一个带Sentinel客户端的Spring Boot应用

零基础用户可以直接使用官方提供的Demo,或者自己创建一个最简项目。
在Linux主机上任意目录创建pom.xml:



    4.0.0
    com.example
    sentinel-demo
    1.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.7.18
    
    
        
            com.alibaba.csp
            sentinel-core
            1.8.6
        
        
            com.alibaba.csp
            sentinel-transport-simple-http
            1.8.6
        
    

然后创建一个Java类DemoApp.java(放在src/main/java/com/example/DemoApp.java):

package com.example;

import com.alibaba.csp.sentinel.Entry;
import com.alibaba.csp.sentinel.SphU;
import com.alibaba.csp.sentinel.slots.block.BlockException;

public class DemoApp {
    public static void main(String[] args) throws Exception {
        // 配置Dashboard地址(改成你的主机IP)
        System.setProperty("csp.sentinel.dashboard.server", "192.168.1.100:8858");
        // 应用名,在Dashboard上会显示
        System.setProperty("project.name", "home-api");

        // 模拟业务——一个受保护的资源
        while (true) {
            try (Entry entry = SphU.entry("HelloWorld")) {
                System.out.println("请求成功");
                Thread.sleep(100);
            } catch (BlockException ex) {
                System.out.println("请求被限流/熔断");
            }
        }
    }
}

用Maven编译并运行(如果没装Maven,可以用mvn clean package或者直接用javac编译,但建议提前装好Maven):

mvn clean package -DskipTests
java -jar target/sentinel-demo-1.0.0.jar

启动后回到Sentinel Dashboard,你应该能在左侧看到home-api应用,并且HelloWorld资源出现了。

第三步:配置限流与熔断规则

在Dashboard上点击home-api → 流控规则 → 新增流控规则。

  • 资源名:HelloWorld
  • 阈值类型:QPS
  • 单机阈值:5(表示每秒最多5次请求,超出就限流)
  • 点击新增

同样的方式,可以配置熔断规则(熔断规则 → 新增):

  • 资源名:HelloWorld
  • 熔断策略:慢调用比例(或异常比例)
  • 最大RT:200(毫秒)
  • 比例阈值:0.5
  • 最小请求数:5
  • 统计时长:1000(毫秒)
  • 熔断时长:10(秒)

点击新增后生效。

现在你的程序会因为每秒请求超过5次而输出“请求被限流/熔断”,说明防护已生效。

避坑指南

  1. 防火墙和端口:确保家用主机防火墙允许8858端口(Dashboard)和8719端口(Sentinel客户端心跳端口)的访问。运行sudo ufw allow 8858 && sudo ufw allow 8719。
  2. 内存占用:Sentinel Dashboard默认使用512MB堆内存,如果家用主机内存紧张,可以用-e JAVA_OPTS='-Xmx256m'限制Docker容器内存。
  3. 应用名称冲突:Dashboard上如果出现多个同名应用,检查project.name属性是否一致。
  4. Dashboard连不上:先确认客户端能访问Dashboard的IP和端口,用telnet 192.168.1.100 8858测试。

效果验证

运行Demo程序后,打开Dashboard的实时监控页面,可以看到HelloWorld的QPS曲线。
触发限流后,控制台会打印限流信息。
你也可以通过curl模拟请求来验证:

# 在另一终端不断发送请求(需要应用是Web服务,Demo是纯Java,此处仅演示)
# 实际生产环境可以访问Web接口
watch -n 0.1 curl http://your-app-url/hello

如果响应出现“Blocked by Sentinel”或类似错误,说明限流生效。

常见问题

Q:我家里没有Java应用,可以用Sentinel吗?
A:Sentinel是为Java设计的,如果你的服务不是Java写的,可以考虑用Nginx的limit_req模块或Linux的tc命令实现类似效果。但如果你未来打算用Java写接口,本文方法依然适用。

Q:Dashboard上一直看不到应用?
A:检查客户端启动参数中csp.sentinel.dashboard.server的IP和端口是否正确,以及防火墙是否放行。也可以查看客户端日志是否有SentinelTransport报错。

Q:配置了限流但不起作用?
A:确认阈值类型和统计窗口配置正确;对于QPS限流,确保请求频率超过阈值。可以用压力测试工具如ab持续发请求验证。

如果你正在处理自家Linux主机的流量防护需求,建议先按以上步骤部署Sentinel测试环境,熟悉后再应用到实际Web服务中。
遇到异常时优先检查防火墙和心跳连接。

分享到:
上一篇
外贸站宝塔面板服务器内存爆满清理缓存脚本
下一篇
跨境独立站宝塔面板数据库索引缺失查询缓慢修复
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意