https://github.com/mix-php/micro-hystrix/blob/master/src/CircuitBreaker.php
第106行好像对并发没效果的
// 最大并发数,超过并发返回错误 'maxConcurrentRequests' => 5,
这个属性没有用
改成1就会进入错误信息
这个熔断器是有问题的对吧?
这个要基于Swoole才可以吧 单独用是没有效果
并发1个就进入 返回熔断 页没有错 改成其他的就不会出现熔断
嗯 所以想说 能否在workerman这边实现一个熔断器,或者要怎么改?
这个不知道哦 !只是在网上抄袭了节流, 不知道怎么去弄 ,这个是我在网上抄的 不知道怎么整合到webman了 $host = request()->host(); // 健康检查 $healthStats = new HealthStats($host, 10, 0.8); // 熔断器 $circuitBreaker = new CircuitBreaker($healthStats, 6, 3); for ($i = 0; $i < 10; ++$i) { if (!$circuitBreaker->isBreak()) { $resp = rand(0, 10); // 模拟调用成功/失败 if ($resp == 0) { $healthStats->fail(); } else { $healthStats->success(); } } else { $msg = "触发熔断机制"; return json(['code' => 500, 'msg' => $msg]); } }
我找的这个比较好,如果不考虑并发的话 只考虑timeout是 完全可以的
并发的话 他也只能是单个进程的并发
哦!那你除了并发那个 其他的都是可以起到效果吗
嗯
实在不行 节流这块就单独拎出来做也可以
我是怕麻烦 最好一个小组件解决就比较完美
那你怎么测试的 我测试一直是成功 没有返回熔断
rpc 远端弄个sleep 时间长点 来测试
哦! 必须是rpc模式才能吗?
对的
你咋测试的 并发没效果的?
开一个进程,然后ab 压
一个进程就一个并发,压不出来吧。maxConcurrentRequests改成2,多开几个进程压试下
???并发请求到一个进程啊!怎么压不出来啊?
进程里是排队一个一个处理的,所以同一时刻只是一个并发
所以单位时间内看处理几个请求
改成1就会进入错误信息
这个熔断器是有问题的对吧?
这个要基于Swoole才可以吧 单独用是没有效果
并发1个就进入 返回熔断 页没有错 改成其他的就不会出现熔断
嗯 所以想说 能否在workerman这边实现一个熔断器,或者要怎么改?
这个不知道哦 !只是在网上抄袭了节流, 不知道怎么去弄 ,这个是我在网上抄的 不知道怎么整合到webman了
$host = request()->host();
// 健康检查
$healthStats = new HealthStats($host, 10, 0.8);
// 熔断器
$circuitBreaker = new CircuitBreaker($healthStats, 6, 3);
for ($i = 0; $i < 10; ++$i) {
if (!$circuitBreaker->isBreak()) {
$resp = rand(0, 10); // 模拟调用成功/失败
if ($resp == 0) {
$healthStats->fail();
} else {
$healthStats->success();
}
} else {
$msg = "触发熔断机制";
return json(['code' => 500, 'msg' => $msg]);
}
}
我找的这个比较好,如果不考虑并发的话 只考虑timeout是
完全可以的
并发的话 他也只能是单个进程的并发
哦!那你除了并发那个 其他的都是可以起到效果吗
嗯
实在不行 节流这块就单独拎出来做也可以
我是怕麻烦 最好一个小组件解决就比较完美
那你怎么测试的 我测试一直是成功 没有返回熔断
rpc 远端弄个sleep 时间长点 来测试
哦! 必须是rpc模式才能吗?
对的
你咋测试的 并发没效果的?
开一个进程,然后ab 压
一个进程就一个并发,压不出来吧。maxConcurrentRequests改成2,多开几个进程压试下
???并发请求到一个进程啊!怎么压不出来啊?
进程里是排队一个一个处理的,所以同一时刻只是一个并发
所以单位时间内看处理几个请求