面试官:如何处理高并发?

简介: 面试官:如何处理高并发?

什么是高并发?


高并发指在同一个时间点,大量的客户请求,访问服务器,update的修改数据库数据,这时候update会锁表,等待执行完毕才能处理下一个请求,当客户请求累计到一定数量,超过数据库链接限制,则会返回链接超时,也会因为请求过多,同一条数据添加两次,不能保证数据的一致性。高并发请求核心要素则是必须保证大量请求高可用,一致性,高性能。从上面可以看出,保证系统的稳定性,可以减少直接对DB层数据的请求更新。


如何保证高性能呢?


客户层可以采用用户答题和输入验证码等方法,限制请求次数,防止0点秒杀的时刻,峰值全部集中在一起,这样最主要是可以防止有人作弊秒杀,而且也可以延缓客户请求,吧请求分布在不同的时间段。


业务层可以限制接口的调用次数。


也可以采用流量削峰来实现,如今已经有大量优秀的开源框架支撑流量削峰功能,如RabbitMq和kafka等。RabbitMq的消息队列除了有解耦和异步的功能外,还可以实现流量削峰,将大量用户请求先存储在mq队列中,之后就可以分摊在其他时间段进入数据库。


如何保证一致性?


当消费仓库存货时,可以在每次消费之前,判断一次count>0,当有存货的时候,才能继续消费执行,否则回滚。


如何实现高可用?


最后,为了保证服务器的高可用,肯定是需要部署在多个服务器上保证其中一个宕机,系统还能正常运行。


服务降级

当请求到达系统承受能力,可以对其他不核心的功能先关闭,尽可能吧系统内存全部给秒杀功能,保证秒杀的正常运行。


服务限流

限流是接口的访问请求进行限流,也可以用rabbitmq进行限流,mq会对队列进行排队限流,一旦超过过期时间,则会丢弃,客户端快速失败进行第二轮重试。


拒绝请求

当服务降级和服务限流不能解决的情况下,最后就只能返回一个错误页面给用户,比如“用户请求过多”“服务繁忙,稍后再试”等,只会发生在服务器过载时候启用,只会存在短暂不可用情况,一旦正常运行的服务器负载降下来,则可以正常请求。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
6月前
|
缓存 NoSQL 关系型数据库
|
6月前
|
消息中间件 安全 NoSQL
2023春招面试专题:高并发解决方案(三)
2023春招面试专题:高并发解决方案
116 0
|
6月前
|
缓存 NoSQL 数据库
2023春招面试专题:高并发解决方案
2023春招面试专题:高并发解决方案
|
4天前
|
负载均衡 算法 数据库
面试官:如何在高并发下避免交易所宕机?
面试官:如何在高并发下避免交易所宕机?
|
29天前
|
缓存 算法 架构师
京东面试:如何设计600Wqps高并发ID?如何解决时钟回拨问题?
资深架构师尼恩在其读者交流群中分享了关于分布式ID系统的设计与实现,特别是针对高并发场景下的解决方案。他强调了分布式ID系统在高并发核心组件中的重要性,并详细介绍了百度的UidGenerator,这是一个基于Snowflake算法改进的Java实现,旨在解决分布式系统中的唯一ID生成问题。UidGenerator通过自定义workerId位数和初始化策略,支持虚拟化环境下的实例自动重启和漂移,其单机QPS可达600万。此外尼恩的技术分享不仅有助于提升面试表现,还能帮助开发者在实际项目中应对高并发挑战。
京东面试:如何设计600Wqps高并发ID?如何解决时钟回拨问题?
|
4月前
|
监控 网络协议 Java
Java面试题:解释Java NIO与BIO的区别,以及NIO的优势和应用场景。如何在高并发应用中实现NIO?
Java面试题:解释Java NIO与BIO的区别,以及NIO的优势和应用场景。如何在高并发应用中实现NIO?
72 0
|
4月前
|
设计模式 安全 NoSQL
Java面试题:设计一个线程安全的单例模式,并解释其内存占用和垃圾回收机制;使用生产者消费者模式实现一个并发安全的队列;设计一个支持高并发的分布式锁
Java面试题:设计一个线程安全的单例模式,并解释其内存占用和垃圾回收机制;使用生产者消费者模式实现一个并发安全的队列;设计一个支持高并发的分布式锁
66 0
|
4月前
|
设计模式 安全 Java
Java面试题:如何实现一个线程安全的单例模式,并确保其在高并发环境下的内存管理效率?如何使用CyclicBarrier来实现一个多阶段的数据处理任务,确保所有阶段的数据一致性?
Java面试题:如何实现一个线程安全的单例模式,并确保其在高并发环境下的内存管理效率?如何使用CyclicBarrier来实现一个多阶段的数据处理任务,确保所有阶段的数据一致性?
61 0
|
4月前
|
设计模式 存储 缓存
Java面试题:结合建造者模式与内存优化,设计一个可扩展的高性能对象创建框架?利用多线程工具类与并发框架,实现一个高并发的分布式任务调度系统?设计一个高性能的实时事件通知系统
Java面试题:结合建造者模式与内存优化,设计一个可扩展的高性能对象创建框架?利用多线程工具类与并发框架,实现一个高并发的分布式任务调度系统?设计一个高性能的实时事件通知系统
53 0
|
4月前
|
存储 安全 Java
Java面试题:假设你正在开发一个Java后端服务,该服务需要处理高并发的用户请求,并且对内存使用效率有严格的要求,在多线程环境下,如何确保共享资源的线程安全?
Java面试题:假设你正在开发一个Java后端服务,该服务需要处理高并发的用户请求,并且对内存使用效率有严格的要求,在多线程环境下,如何确保共享资源的线程安全?
68 0

热门文章

最新文章

  • 1
    高并发场景下,到底先更新缓存还是先更新数据库?
    64
  • 2
    Java面试题:解释Java NIO与BIO的区别,以及NIO的优势和应用场景。如何在高并发应用中实现NIO?
    72
  • 3
    Java面试题:设计一个线程安全的单例模式,并解释其内存占用和垃圾回收机制;使用生产者消费者模式实现一个并发安全的队列;设计一个支持高并发的分布式锁
    66
  • 4
    Java面试题:如何实现一个线程安全的单例模式,并确保其在高并发环境下的内存管理效率?如何使用CyclicBarrier来实现一个多阶段的数据处理任务,确保所有阶段的数据一致性?
    61
  • 5
    Java面试题:结合建造者模式与内存优化,设计一个可扩展的高性能对象创建框架?利用多线程工具类与并发框架,实现一个高并发的分布式任务调度系统?设计一个高性能的实时事件通知系统
    53
  • 6
    Java面试题:假设你正在开发一个Java后端服务,该服务需要处理高并发的用户请求,并且对内存使用效率有严格的要求,在多线程环境下,如何确保共享资源的线程安全?
    68
  • 7
    在Java中实现高并发的数据访问控制
    41
  • 8
    使用Java构建一个高并发的网络服务
    27
  • 9
    微服务06----Eureka注册中心,微服务的两大服务,订单服务和用户服务,订单服务需要远程调用我们的用,户服务,消费者,如果环境改变,硬编码问题就会随之产生,为了应对高并发,我们可能会部署成一个集
    37
  • 10
    如何设计一个秒杀系统,(高并发高可用分布式集群)
    127