redis作为缓冲数据库的问题

qq_31514775 2019-07-25 10:54:31
问题是这样 有这样个需求 就是把redis作为主力数据库 因为数据量较大 每分钟 都有几十万的数据写入到redis, 需要做个任务定时将redis中 数据序列化成文件 上传到文件服务器 ,
问题来了 由于任务是跑在多台机器上 定时跑 瞬间 redis服务器 文件服务器 负载都很大 包括网络磁盘 io 都着招架不住,有什么好的策略 或者算法来保证负载均衡呢 包括从redis拉取数据 以及保证任务不会socket超时???(需要保证reids的每条数据 都得成功写入文件 并且上传到文件服务器)
恳请各位支支招!!!
...全文
2458 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangxiaoming 2019-08-07
  • 打赏
  • 举报
回复
redis 自己也有持久化策略
Monday_@@ 2019-08-07
  • 打赏
  • 举报
回复
来学习一下大神的方案
  • 打赏
  • 举报
回复
话说,楼主最终采取的是哪套方案?
恒_星 2019-07-29
  • 打赏
  • 举报
回复
不会,下一个
云闪付大家庭 2019-07-28
  • 打赏
  • 举报
回复
引用 1 楼 qq_31514775的回复:
没人 自己顶一下。。。
QQ都是假的?老哥?
享耳为郭 2019-07-27
  • 打赏
  • 举报
回复
ESJob 分任务吧
vindurriel 2019-07-27
  • 打赏
  • 举报
回复
你这个不是redis的使用场景 倒是很适合用kafka 数据吞吐量 持久化 分区 都可以解决
  • 打赏
  • 举报
回复
不知道消息队列可不可以?
zhao_xiaosong 2019-07-26
  • 打赏
  • 举报
回复
感觉这个可以用kafka和zk
qq_31514775 2019-07-26
  • 打赏
  • 举报
回复
引用 4 楼 ITjavaman 的回复:
我的想法是在备库分批次跑任务
能详细说说吗 具体怎样将文件 均衡上传到文件服务器
ITjavaman 2019-07-26
  • 打赏
  • 举报
回复
我的想法是在备库分批次跑任务
Monday_@@ 2019-07-26
  • 打赏
  • 举报
回复
我也不懂 过来坐等大佬给出方案
qq_31514775 2019-07-26
  • 打赏
  • 举报
回复
引用 17 楼 豫让_______ 的回复:
[quote=引用 16 楼 qq_31514775 的回复:] [quote=引用 11 楼 豫让_______ 的回复:] 定义一个redis队列存数据索引,集群机器pop队列按索引拉数据传文件服务器。 定义任务,定时往队列push未上传的数据。 其中,如果上传了的数据可释放redis的话尽量释放。 任务可配置初始队列大小,任务也可以根据队列剩余量适量push。 建议用 xxl-job,可根据实际吞吐效率灵活配置任务执行频率以及参数。
队列是可行的 但队列的长度得控制下 如果生产的速度 大于消费的速度 队列会一直增长 有什么好的策略吗[/quote] 不是说了吗,任务里往队列push新索引的时候判断可以自定义push多少。如果队列为空也可以通过xxl配置任务cron或者参数提高执行push频率或一次push更多数据。[/quote] 感谢
引用 17 楼 豫让_______ 的回复:
[quote=引用 16 楼 qq_31514775 的回复:] [quote=引用 11 楼 豫让_______ 的回复:] 定义一个redis队列存数据索引,集群机器pop队列按索引拉数据传文件服务器。 定义任务,定时往队列push未上传的数据。 其中,如果上传了的数据可释放redis的话尽量释放。 任务可配置初始队列大小,任务也可以根据队列剩余量适量push。 建议用 xxl-job,可根据实际吞吐效率灵活配置任务执行频率以及参数。
队列是可行的 但队列的长度得控制下 如果生产的速度 大于消费的速度 队列会一直增长 有什么好的策略吗[/quote] 不是说了吗,任务里往队列push新索引的时候判断可以自定义push多少。如果队列为空也可以通过xxl配置任务cron或者参数提高执行push频率或一次push更多数据。[/quote] 这思路可以试下 感谢!
豫让_______ 2019-07-26
  • 打赏
  • 举报
回复
引用 16 楼 qq_31514775 的回复:
[quote=引用 11 楼 豫让_______ 的回复:]
定义一个redis队列存数据索引,集群机器pop队列按索引拉数据传文件服务器。
定义任务,定时往队列push未上传的数据。
其中,如果上传了的数据可释放redis的话尽量释放。 任务可配置初始队列大小,任务也可以根据队列剩余量适量push。
建议用 xxl-job,可根据实际吞吐效率灵活配置任务执行频率以及参数。

队列是可行的 但队列的长度得控制下 如果生产的速度 大于消费的速度 队列会一直增长 有什么好的策略吗[/quote]
不是说了吗,任务里往队列push新索引的时候判断可以自定义push多少。如果队列为空也可以通过xxl配置任务cron或者参数提高执行push频率或一次push更多数据。
qq_31514775 2019-07-26
  • 打赏
  • 举报
回复
引用 11 楼 豫让_______ 的回复:
定义一个redis队列存数据索引,集群机器pop队列按索引拉数据传文件服务器。 定义任务,定时往队列push未上传的数据。 其中,如果上传了的数据可释放redis的话尽量释放。 任务可配置初始队列大小,任务也可以根据队列剩余量适量push。 建议用 xxl-job,可根据实际吞吐效率灵活配置任务执行频率以及参数。
队列是可行的 但队列的长度得控制下 如果生产的速度 大于消费的速度 队列会一直增长 有什么好的策略吗
qq_31514775 2019-07-26
  • 打赏
  • 举报
回复
引用 14 楼 像忘了谁sq 的回复:
你一分钟几十万的数据插入,你不能把数据序列号 上传文件的事情分给不同的服务吗?服务器1 负责用户1,2,3的序列化,服务器2负责用户456的序列化
是的 主要每个用户的不一样 有的量很大 有的很少 如果那几个量大的用户跑在一台服务器上 还是吃不消 关键还是策略
像忘了谁sq 2019-07-26
  • 打赏
  • 举报
回复
你一分钟几十万的数据插入,你不能把数据序列号 上传文件的事情分给不同的服务吗?服务器1 负责用户1,2,3的序列化,服务器2负责用户456的序列化
像忘了谁sq 2019-07-26
  • 打赏
  • 举报
回复
Redis Cluster 看看这个能解决你的问题不
像忘了谁sq 2019-07-26
  • 打赏
  • 举报
回复
引用 9 楼 qq_31514775 的回复:
[quote=引用 8 楼 像忘了谁sq 的回复:] 很明显你这个数据处理太集中了。现在不都讲分布式吗?用spring cloud 微服务,把业务分模块分项目,各自处理各自的数据,而且每分钟有十几万数据,应该尽量精简处理数据,把不需要的数据剔除掉这样会有质的提升。
就是因为经常会被量冲死 才把数据放到redis 让redis集群承压 。。。目前问题 就是持久化redis里的数据 形成文件 这个貌似只有集中处理 但需要策略 防止文件服务器崩。。。[/quote] 所以说你现在的架构不足以解决问题,你得搭建一个spingcloud微服务分布式的架构或是其他类似架构。然后构思如何精简数据,分散处理数据。
豫让_______ 2019-07-26
  • 打赏
  • 举报
回复
定义一个redis队列存数据索引,集群机器pop队列按索引拉数据传文件服务器。
定义任务,定时往队列push未上传的数据。
其中,如果上传了的数据可释放redis的话尽量释放。 任务可配置初始队列大小,任务也可以根据队列剩余量适量push。
建议用 xxl-job,可根据实际吞吐效率灵活配置任务执行频率以及参数。
加载更多回复(6)

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧