资讯专栏INFORMATION COLUMN

Redis 使用 - 整体性能分析(思考篇)

YJNldm / 661人阅读

摘要:分析第一个问题,初步猜测是由于同时发起的请求太多导致自身内存飙高,同时受到的影响不大。在队列里面写入需要更新奖品以及其使用情况和所属情况。

最近在做秒杀的服务,虽然目前由于机器性能优越可以抗着,但是被刷过于厉害的时候,显然还是可以感觉到有一定的卡顿感。整个活动基于 nodejs + redis 实现,验证码通过 golang 服务生成[有事先生成验证码,后期逐段更新,验证码单台可抗住 5K/s 并发]。

问题的继续得益于一个技术群里面抛出的问题,问题的大概如下:

使用 nodejs + redis 实现,高并发的时候如果单次请求操作 redis 次数很少的话没问题,但是如果单次请求操作 redis 很多次的话,会发现 nodejs 的内存突然飙高。

后期讨论的时候另一个人又抛出另一个问题:

高并发的时候,持续对 redis 操作,导致单进程的 redis 服务返回很久。

于是我们目前偶尔出现的卡顿也可能是由于上面的一种或者两者同时造成的。

分析第一个问题,初步猜测是由于 Nodejs 同时发起的 redis 请求太多导致自身内存飙高,同时 redis 受到的影响不大。所以想到的解决方案是如何合并每次请求导致的 redis 操作次数。redis 自身支持 lua 脚本,参见:

http://redisbook.readthedocs.org/en/latest/feature/scripting.html 【中文】
http://redis.io/commands/EVAL 【en】

目前解决的简单思路为将每个请求带来的简单操作使用 Lua 脚本合成一个,用秒杀来说:

判断奖品列表中POP返回是否为空。

更新用户设置为已抽奖。

在队列里面写入需要更新奖品 ID 以及其使用情况和所属情况。
...

如果都在 nodejs 中,可能每个请求都会有 2-3 或者更多的 redis 操作请求,现在请求变成了一个。变相的减少了 IO 上面的开销。具体的效果怎么样,还需要后续的测试于监控。

第二个问题是如何利用多台机器去应对 redis 的运算瓶颈。目前也还在设计中,可能需要学习 MYSQL 分表,将一些 Key 放在机器 A,一些 Key 放在机器 B,同时还需要将这些机器的数据都同步到机器 C,保证平均分布操作多台,但是数据又能得到备份。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/36071.html

相关文章

  • database

    摘要:它是第一个把数据分布在全球范围内的系统,并且支持外部一致性的分布式事务。目的是使得开发者阅读之后,能对项目有一个初步了解,更好的参与进入的开发中。深度探索数据库并发控制技术并发控制技术是数据库事务处理的核心技术。 存储过程高级篇 讲解了一些存储过程的高级特性,包括 cursor、schema、控制语句、事务等。 数据库索引与事务管理 本篇文章为对数据库知识的查缺补漏,从索引,事务管理,...

    PrototypeZ 评论0 收藏0
  • database

    摘要:它是第一个把数据分布在全球范围内的系统,并且支持外部一致性的分布式事务。目的是使得开发者阅读之后,能对项目有一个初步了解,更好的参与进入的开发中。深度探索数据库并发控制技术并发控制技术是数据库事务处理的核心技术。 存储过程高级篇 讲解了一些存储过程的高级特性,包括 cursor、schema、控制语句、事务等。 数据库索引与事务管理 本篇文章为对数据库知识的查缺补漏,从索引,事务管理,...

    csRyan 评论0 收藏0
  • 中小型研发团队对于架构的选择与思考

    摘要:框架篇即中间件或工具的使用,如缓存消息队列集中式日志度量微服务框架等,工欲善其事,必先利其器。 如果你正好处在中小型研发团队…… 中小型研发团队很多,而社区在中小型研发团队架构实践方面的探讨却很少。中小型研发团队特别是 50 至 200 人的研发团队,在早期的业务探索阶段,更多关注业务逻辑,快速迭代以验证商业模式,很少去关注技术架构。 这时如果继续按照原有的架构及研发模式,会出现大量的...

    xfee 评论0 收藏0
  • 分布式之redis复习精讲

    摘要:引言为什么写这篇文章博主的分布式之消息队列复习精讲得到了大家的好评,内心诚惶诚恐,想着再出一篇关于复习精讲的文章。单线程的为什么这么快分析这个问题其实是对内部机制的一个考察。 引言 为什么写这篇文章? 博主的《分布式之消息队列复习精讲》得到了大家的好评,内心诚惶诚恐,想着再出一篇关于复习精讲的文章。但是还是要说明一下,复习精讲的文章偏面试准备,真正在开发过程中,还是脚踏实地,一步一个脚...

    cooxer 评论0 收藏0
  • 【推荐】最新200:技术文章整理

    摘要:作为面试官,我是如何甄别应聘者的包装程度语言和等其他语言的对比分析和主从复制的原理详解和持久化的原理是什么面试中经常被问到的持久化与恢复实现故障恢复自动化详解哨兵技术查漏补缺最易错过的技术要点大扫盲意外宕机不难解决,但你真的懂数据恢复吗每秒 作为面试官,我是如何甄别应聘者的包装程度Go语言和Java、python等其他语言的对比分析 Redis和MySQL Redis:主从复制的原理详...

    BicycleWarrior 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<