- 负载均衡
针对每一个用户都访问同一个服务器负载太大,首先用户通过任意渠道访问我们的网站,然后根据一定的路由规则(比如对用户的ID进行hash)被分配到某个服务器接受服务。 - 增加redis缓存
当用户进行秒杀时,因为考虑到同一个时刻,并发量可能会特别大。所以不能让服务器直接访问DB,不然DB很容易挂掉,所以应该使用redis加缓存。用户在秒杀的时候在Redis中预减库存减少数据库的访问,同时使用内存标记减少redis的访问,(redis的处理能力也是有限的,负载太大也是会宕机的,所以这里也要进行Redis的保护,即加一个标记变量记录是否还有商品,如果商品已经没有了,那就置位,这样的话,后续的请求就不会去访问redis然后直接返回秒杀失败)。 - rabbitMq使用
RabbitMQ队列缓冲,异步下单。因为服务器处理下单涉及DB的读写,当并发量很大的时候,需要很多时间,从而用户体验会很不好,因为需要等待很久才知道结果。所以采用消息队列异步下单。即如果用户秒杀成功,那么创建的订单并不直接写入DB。而是给rabbitmq发送一条message.然后就直接返回给用户说下单成功。然后由监听消息队列的消费者根据接收到的消息,创建订单并写入DB.这里为了提高效率,可以使用一个线程池来解决并发及连接复用的的问题。
高并发解决方法
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存...
- 1 秒杀业务分析 正常电子商务流程 (1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(...