延时队列之 Redis Sorted Set 实现

Redis 的 Sorted Set 数据类型是一个有序集合,不可重复集合。有序集合的每个元素都有一个用于排序的权重(score)属性。

此类型非常适合用于制作排行榜,同样可以借助权重(score)属性作为元素的延时时间来实现延时队列的功能。

阅读更多

延时队列及 JDK Delay Queue 实现

最近项目用到了延时队列,是基于 RedisSorted Set 数据类型和 ZRANGEBYSCORE命令实现的。

延时队列还有其他实现方式,可以根据项目环境和业务需要选择适当的方案,这里做个汇总和记录。

阅读更多

Redis集群宕机事故问题分析排查

计一次生产一台服务器重启导致 Redis 集群两个实例宕机服务不可用问题分析排查。

Redis 集群宕机导致签权服务异常,进而导致所有服务不可用,其中还包含支付系统,是一次严重的生产事故。

恢复耗时半小时,电话被打爆,高层领导,现场项目经理,销售,测试都紧盯着问题修复。

阅读更多

高并发之接口限流与实现

开发互联网系统及架构在满足测算出的并发请求时,还要预防并发可能突破设计峰值的情况,必要时可以优先处理高优先级数据或特殊特征的数据,也要确保系统可用不崩溃。

开发高并发系统时有三把利器用来保护系统:缓存降级限流。本文介结限流相关概念和实现方式。

阅读更多

负载均衡算法及实现

负载均衡(Load Balance):指将负载(工作任务)进行均衡,分摊到多个处理节点上。负载均衡是一个统一的流量入口节点,映射了多个处理请求的映节点,入口节点将请求任务分发到不同的处理节点,实现分治。

互联网应用服务为了能满足大流量请求处理,通常会集群部署,使用负载均衡来分担单台服务器的压力,避免单点故障。

阅读更多

分布式并发重复提交问题

Web 系统的表单重复提交问题必然会出现,如注册、秒杀下单、支付等场景都可能出现重复提交。必须对重复提交进行处理,否则会出现脏数据,若建了唯一索引则会抛 JDBC 异常。单体应用的表单重复提交问题可参考 拦截器 与Spring AOP 实现防止表单重复提交

分布式集群部署的 Web 做防止表单重复提交的处理上,其根本也是基于 TOKEN 的方式来实现,因是集群布署,所以此 TOKEN 不能存放在 SESSION 中(未使用共享 SESSION 方案) ,而是存放在外部存储系统中,如 Reids,这里其实引入了类似分布式锁的概念。

阅读更多