分析高并发系统中队列术的哪些应用场景
异步处理赏罚:行使行列的一个首要缘故起因是举办异步处理赏罚,好比用户注册乐成后必要发送注册乐成邮件/新用户积分/优惠券等等、缓存逾期时先返回老的数据,然后异步更新缓存、异步写日记等;通过异步处理赏罚,可以晋升主流程相应速率,而非主流程/非重要营业可以异步齐集处理赏罚,这样还可以将使命聚合然后批量处理赏罚;因此可以行使动静行列/使命行列来举办异步处理赏罚。 体系解耦:好比用户乐成付出完成订单后,必要关照出产配货体系、发票体系、库存体系、保举体系、搜刮体系、风控体系等举办营业处理赏罚;而将来必要添加/支持哪些营业是不清晰的,并且这些营业处理赏罚不必要及时处理赏罚、不必要强同等,只必要最终同等性即可,因此可以通过动静行列/使命行罗列办体系解耦。 数据同步:好比想把Mysql改观的数据同步到Redis、可能将Mysql数据同步到Mongodb、可能机房间数据同步、可能主从数据同步等,此时可以思量行使如databus、canal、otter。行使数据总线行罗列办数据同步的甜头是可以担保数据修改的有序性。 流量削峰:体系瓶颈一样平常在数据库上,好比扣减库存、下单等;此时可以思量行使行列将改观哀求暂且放入行列,通过缓存+行列暂存的方法将数据库流量削峰;尚有如秒杀体系,下单处事会是该体系的瓶颈,此时会行使行罗列办列队和限流,从而掩护下单处事。通过行列暂存可能行列限流来削峰。 好比减库存,可以思量这样计划: 直接在Redis中扣减,然跋文录下扣减日记(FIFO行列),通过Worker去同步到DB。 现实施列的应用场景还长短常多的,本文罗列了笔者碰着过较量多的场景。 缓冲区行列 典范的如Log4j的日记缓冲区,当我们行使log4j记录日记时,可以设置字节缓冲区,字节缓存区满时会当即同步到磁盘(flush操纵)。Log4j行使BufferedWriter实现的;此模式不是异步写,在缓冲区满的时辰照旧会阻塞主线程。假如必要异步模式可以行使AsyncAppender,然后通过bufferSize节制日记变乱缓冲区巨细。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |