实战
上进唯实战可得,突破绝技成长瓶颈
课程
精品课程应有尽有,快速入门助力成长
手记
分享经验交流心得,学习前沿流行技术
-
Redis限流实现
令牌桶算法(Token Bucket)和 Leaky Bucket 效果一样但方向相反的算法,更加容易理解.随着时间流逝,系统会按恒定1/QPS时间间隔(如果QPS=100,则间隔是10ms)往桶里加入Token(想象和漏洞漏水相反,有个水龙头在不断的加水),如果桶已经满了就不再加了.新请求来临时,会各自拿走一个Token,如果没有Token可拿了就阻塞或者拒绝服务.令牌桶的另外一个好处是可以方便的改变速度. 一旦需要提高速率,则按需提高放入桶中的令牌的速率. 一般会定时(比如100毫秒)往桶中增加一定数量的令牌, 有些变种算法则实时的计算应该增加的令牌的数量。令牌桶内令牌生成借鉴Guava-RateLimiter类的设计 ,每次getToken根据时间戳生成token,不超过最大值。核心参数:last_mill_second 最后时间毫秒curr_permits 当前可用的令牌max_burst 令牌桶最大值rate 每秒生成几个令牌app 应用名称 local ratelimit_info=r
6231浏览
11推荐
0评论
-
OpenResty实现限流的几种方式
本文转载自:http://www.itzh.org/2018/01/14/openresty_rate_limiter_methods/在开发 api 网关的时,做过一些简单的限流,比如说静态拦截和动态拦截;静态拦截说白了就是限流某一个接口在一定时间窗口的请求数。用户可以在系统上给他们的接口配置一个每秒最大调用量,如果超过这个限制,则拒绝服务此接口,而动态拦截其实也是基于静态拦截进行改进,我们可以依据当前系统的响应时间来动态调整限流的阈值,如果响应较快则可以把阈值调的大一些,放过更多请求,反之则自动降低限流阈值,只使少量请求通过。其实这就是一个很简单的限流方式。但是因为这些场景在我们开发的时候经常遇到,所以在这里用 OpenResty 大概实现一些常见的限流方式。(此处使用OpenResty1.13.6.1版本自带lua-resty-limit-traffic模块 ,实现起来更为方便)限制接口总并发数场景:按照 ip 限制其并发连接数ua_shared_dict my_limit_conn_sto
5293浏览
10推荐
0评论
-
每秒钟承载600万订单级别的无锁并行计算框架-Disruptor
今天,本神给小伙伴们分享下国外 lmax 平台的核心-无锁并行计算框架!LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理600万订单。业务逻辑处理器完全是运行在内存中,使用事件源驱动的方式。业务逻辑驱动器的核心是Disruptor。Disruptor主动将数据发送到数据消费端,600万指的是分发给消费端的订单数! 好吧,看到介绍,给跪了,单线程撸出600万的量,不是一般的框架能够做到的,我们的disruptor,做到了。一、何为Disruptor?简单来说他就是一个有界队列,类似我们所熟悉的JDK里并发包下的ArrayBlockingQueue。复杂来说,他具有ArrayBlockingQueue做不到的强大功能,比如串并行操作、多生产者多消费者模型。github传送门送一下求生欲望超强的小伙伴:https://github.com/LMAX-Exchange/disruptor二、你为何这么牛掰?接下来
18076浏览
35推荐
7评论
-
RabbitMQ消息可靠性投递解决方案 - 基于SpringBoot实现
谈到消息的可靠性投递,无法避免的,在实际的工作中会经常碰到,比如一些核心业务需要保障消息不丢失,接下来我们看一个可靠性投递的流程图,说明可靠性投递的概念:Step 1: 首先把消息信息(业务数据)存储到数据库中,紧接着,我们再把这个消息记录也存储到一张消息记录表里(或者另外一个同源数据库的消息记录表)Step 2:发送消息到MQ Broker节点(采用confirm方式发送,会有异步的返回结果)Step 3、4:生产者端接受MQ Broker节点返回的Confirm确认消息结果,然后进行更新消息记录表里的消息状态。比如默认Status = 0 当收到消息确认成功后,更新为1即可!Step 5:但是在消息确认这个过程中可能由于网络闪断、MQ Broker端异常等原因导致 回送消息失败或者异常。这个时候就需要发送方(生产者)对消息进行可靠性投递了,保障消息不丢失,100%的投递成功!(有一种极限情况是闪断,Broker返回的成功确认消息,但是生产端由于网络闪断没收到,这个时候重新投递可能会造成消息重复,需要消费
22731浏览
94推荐
21评论
-
RabbitMQ集群整合SpringBoot2.x
RabbitMQ相信大家已经再熟悉不过了,作为业界四大主流消息中间件之一(Apache RocketMQ、Apache Kafka、Apache ActiveMQ、RabbitMQ),它具有非常好的性能和可靠性的集群模式,不仅仅在各大互联网大厂中广泛使用(比如同程艺龙、美团点评等),而且在互联网金融行业也常常被作为首选!SpringBoot作为互联网开发利器已经不需要我再过多介绍什么,接下来我们一起从零开始构建RabbitMQ、并且与SpringBoot2.x的整合吧!1.安装RabbitMQ集群十步走!(3.6.5版本、采用rpm安装方式,我们要安装3个节点的集群,192.168.11.71 192.168.11.72 192.168.11.73、以71节点为例:)第一步:下载所需依赖包Rabbitmq基于erlang语言编写,所以必须要有。wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpmsocat
14436浏览
20推荐
5评论