mservice 可以方便的对资源进行限流。包括Http、Thrift。

## 一、安装

```

composer require clevephp/la-limiting

```

## 二、配置

在配置文件里,加入限流配置

```

"atomic_limit" => [

"resources" => [

[

"count" => 2,

"resource" => "/Web/Home/Limitings::index"

],

//thrift rpc

[

"count" => 2,

"resource" => "Services/Servicehelper::getUsers"

],

[

"count" => 20,

"resource" => "/Web/Home/Index::index"

]

],

"on"=>true

]

```

参数如下:

* [ ] resource 要限制的类。声明规范是:类(需完整的命名空间)::方法

* [ ] count 允许最大QPS

* [ ] env_seconds x秒内触发条件,默认3

* [ ] stop_seconds 限制x秒,默认3

通过上述配置就可以实现限流+熔断了。

## 三、降级

如果需要对限流后的结果进行降级,创建一个带后缀_demotion的相同方法即可。

```

function index(\Core\Common\HttpBase $httpBase)

{

return $httpBase->success([]);

}

// index被限流后,触发的降级逻辑

public function index_demotion()

{

//具体逻辑....

return $this->httpBase->failure("index_demotion");

}

```

## 四、Thrift RPC内使用

在Thrift RPC里,需要手工调取Servce::New方法

```

/**

* 项目名称:CleverPHP 3.x

* 类名称:

* 类描述:实现业务的地方

* 创建人:ceiba

* 创建时间:2019年9月15日

* @version

*/

namespace Services;

class Servicehelper implements \Services\StudentsCarnie\StudentsCarnieIf

{

public function getUsers($userId)

{

$result = \Core\Common\Services::New();

if ($result) {

return $result;

}

// 接入业务

return $userId;

}

// 降级

public function getUsers_demotion()

{

return 22;

}

}

```

## 五、在框架外使用

```

$sourceItemRules=\ClevePHP\LaLimiting\SourceItemRules::New();

$sourceItemRules::$requestEnvSeconds=3; //多X秒内

$sourceItemRules::$requestNumber=10; //多少QPS

$sourceItemRules::$requestStopSeconds=3; //限X秒

$source="http://localhost/index/index/";

$item=\ClevePHP\LaLimiting\SourceItem::New($source,$func,[],$sourceItemRules);

$redis = new \Redis();

$redis->connect( "127.0.0.1",6379)

$object=\ClevePHP\LaLimiting\LaLimiting::getInstance($reids);

$checkResult=$object->start($item);

```

php熔断,限流、熔断、降级相关推荐

  1. 「微服务系列 13」熔断限流隔离降级

    我们知道微服务分布式依赖关系错综复杂,比方说前端的请求转化为后端调用的服务请求,一个前端请求会转为成很多个后端调用的服务请求,那么这个时候后台的服务出现不稳定或者延迟,如果没有好的限流熔断措施,可能会 ...

  2. android熔断,限流熔断技术

    Hystrix 作为Spring Cloud官方默认的熔断组件,停止开发,Hystrix官方推荐使用Resilience4j: Netflix的 Hystrix 是一个帮助解决分布式系统交互时超时处理 ...

  3. 熔断,限流,降级 一些理解

    为什么80%的码农都做不了架构师?>>>    1 熔断,限流,降级  2 从微观角度思考   2.1 超时(timeout) 在接口调用过程中,consumer调用provider ...

  4. Spring-Cloud中的 熔断、限流、降级

    在分布式架构中,各个服务节点一定需要满足高可用,所以对于服务本身来说,一方面是在有准备的前提下做好充足的扩容.另一方面,服务需要有熔断.限流.降级的能力. 当一个服务调用另外一个服务,可能因为网络原因 ...

  5. 秒杀项目之网关服务限流熔断降级分布式事务

    目录 一.网关服务限流熔断降级 二.Seata--分布式事务 2.1 分布式事务基础 2.1.1 事务 2.1.2 本地事务 2.1.3 分布式事务 2.1.4 分布式事务场景 2.2 分布式事务解决 ...

  6. 【高并发】高并发五个利器(缓存、限流、降级、熔断、隔离)

    文章目录 文章目录 一.前言 二.缓存 2.1 缓存本质 + 缓存分类 + 缓存三大特征 + 三种淘汰算法 + 根据业务场景设计过期时间 2.2 本地缓存(进程内缓存) 2.3 分布式缓存 2.4 缓 ...

  7. 36、熔断-限流-降级

    目录 一.服务雪崩 二.熔断-限流-降级概述 三.熔断限流技术选型 四.sentinel限流 1 - 基于QPS限流 2 - Throttling策略 3 - sentinel预热/冷启动 五.sen ...

  8. 微服务中的熔断、限流、降级

    在我们进行系统设计时,必须要考虑系统的高性能.高并发.高可用.本文分享的是关于高可用的三大利器:熔断.限流.降级,我们使用通俗.易懂的语句将三个概念讲清楚. 一.熔断 在服务的依赖调用中,被调用方出现 ...

  9. SpringCloud Alibaba微服务实战(五) - Sentinel实现限流熔断

    什么是Sentinel? 请查看文章:SpringCloud Alibaba微服务实战(一) - 基础环境搭建 构建服务消费者cloud-sentinel进行服务调用 服务创建请查看文章:Spring ...

最新文章

  1. 2022-2028年全球与中国漂白吸水棉市场研究及前瞻分析报告
  2. 让更多人能够使用Hadoop
  3. Can‘t pickle local object ‘get_transforms.<locals>.process‘
  4. 「场景化」增长的践行者:探寻大数据时代的商业变革
  5. SAP UI5 application component运行时加载的奥秘
  6. 迫于误解压力,RMS从自由软件基金会与MIT离职
  7. 创新品类,N次方的市场爆炸力
  8. Postman怎么用?
  9. “苹果正在走下神坛” | 畅言
  10. docker镜像删除
  11. 西交大计算机系分数线,西安交通大学专业排名及分数线
  12. 《OpenDRIVE1.6规格文档》1
  13. RobotStudio软件:ABB机器人喷涂虚拟仿真
  14. u盘文件或目录损坏且无法读取
  15. 华硕天选3笔记本电脑WiFi功能消失
  16. android wp模拟器,玩家必看,WP8 ROM模拟器游戏图文教程
  17. 钉钉小程序摸索二:钉钉小程序开发过程中错误解决过程
  18. Element-UI Select 下拉框 根据汉字拼音过滤选择选项(使用filter-method,filterable属性)
  19. 大数据时代网络舆情与社会治理研究
  20. python学习笔记3(字符串)

热门文章

  1. uniapp自定义弹框
  2. 第1讲:树莓派购买指南【子豪兄的零基础树莓派教程】
  3. 使用 MacType 改善 IDEA 字体渲染
  4. 毕设分享 基于STM32的智能宠物投喂系统(全套资料)
  5. Spring Boot集成Quartz-动态任务管理
  6. @Transactional详解
  7. 世界上最大的赌局?!!
  8. Python 基础循环10道题,新人必看,领会必悟
  9. Linux运维之高级网络控制(bond,team和网络桥接)
  10. 将视频放到网页上续 RM VS ASF