高并发场景下秒杀项目静态锁的使用疑问

题:高并发场景下秒杀项目静态锁的使用疑问
场景:我们有一个秒杀平台,可以提供所有接入公司创建的秒杀活动,简单描述如下:
1、秒杀10袋洗衣粉,开始时间12:00(项目ID:A001)
2、秒杀iPhone5,开始时间12:00(项目ID:A002)
3、秒杀水杯,开始时间12:00(项目ID:A003)
... ...(项目ID:A004-A009)
10、秒杀ThinkPad,开始时间12:00(项目ID:A010)

例如上面,同时有十个秒杀,都是12:00整开始,每个秒杀之间没有任何关系。

按照我之前的有限的非高并发场景经验,比较好处理,在一个方法中使用全局静态锁,保证库存扣减的安全性。

private static object myLock=new object();
public int MiaoShaFunc()
{
  if(项目X库存>0)
  {
    lock锁住(myLock)
    {
      if(项目X库存>0)
      {
        //TODO:一系列扣减操作
      }
    }
  }
}


但是,现在的问题是,当高并发场景下,每一个项目都可能有海量的用户在进行秒杀操作,而十个秒杀项目同时进行,当秒杀项目A001锁住myLock时,其他的A002-A010调用该方法的项目都会收到影响,从而导致大面积的等候。

请问,这种场景该怎么优化?是不是存在某种方案,可以按一定条件,只锁住一部分流量,例如A001项目的用一个锁,A002用另外一个锁这样的方案?

请高手赐教

转载于:https://www.cnblogs.com/dissun/p/8331471.html

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在高并发场景下,需要注意以下几个方面: 1. 高可用性:高并发场景下系统出现故障的风险增加,因此需要保证系统的高可用性。为此可以采用负载均衡、多副本部署、容错机制等方式。 2. 性能优化:高并发场景下,系统的性能压力非常大,需要优化系统的性能。例如,通过优化数据库查询语句、使用缓存、减少IO操作等方式提高系统的响应速度。 3. 分布式系统:在高并发场景下,单机系统可能无法满足需求,需要采用分布式系统来承载更大的负载。分布式系统需要考虑数据一致性、负载均衡、容错机制等问题。 4. 安全性:高并发场景下,系统容易成为攻击的目标,需要采用安全策略来保护系统的安全性。例如,使用防火墙、反DDoS攻击等方式。 5. 监控和诊断:高并发场景下,系统问题可能随时出现,需要及时发现和诊断问题。为此,需要采用监控和诊断工具来实时监控系统的运行状态,并及时发现和解决问题。 综上所述,高并发场景下需要注意系统的高可用性、性能优化、分布式系统、安全性以及监控和诊断等问题。 ### 回答2: 在高并发场景下,我们需要注意以下几点: 1. 资源管理:高并发场景下,服务器的资源容易被耗尽,如CPU、内存、网络带宽等。因此,我们需要对资源进行合理的管理和分配,避免出现系统崩溃或响应延迟过高的情况。 2. 数据库优化:高并发场景下,数据库可能成为性能瓶颈。因此,我们需要对数据库进行优化,使用索引、分表、缓存等技术手段来提高数据库的查询速度和并发处理能力。 3. 缓存技术:高并发场景下,使用缓存可以减轻数据库的压力,提高系统的响应速度。我们可以使用分布式缓存、页面缓存等技术来实现缓存,加快数据的访问速度。 4. 消息队列:高并发场景下,使用消息队列可以实现异步处理,将请求解耦合,并发处理请求。通过消息队列,可以保证系统的高可用性和可伸缩性。 5. 负载均衡:高并发场景下,多个请求可能会集中在某个服务器上,导致该服务器无法承受压力而崩溃。通过负载均衡技术,可以将请求均匀地分发到不同的服务器上,提高系统的稳定性和并发处理能力。 6. 限流措施:为了保护系统免受恶意请求的攻击,我们需要实施限流措施,防止恶意请求过多导致系统资源被耗尽,如设置请求频率限制、IP访问限制等。 7. 异常处理:高并发场景下,可能会出现各种异常情况,如请求超时、服务器异常等。我们需要及时捕获和处理异常,保证系统的稳定运行。 8. 测试和监控:在高并发场景下,我们需要进行压力测试,模拟大量并发请求,评估和优化系统的性能。同时,建立监控系统,实时监测系统的运行状态,及时发现并解决潜在的问题。 ### 回答3: 在高并发场景下,我们需要注意以下几点: 1. 性能优化:高并发环境下系统的性能是关键,需要对系统进行性能优化,包括对代码进行优化、服务器和数据库的配置优化等,以提高系统的响应速度和吞吐量。 2. 资源管理:高并发场景下,系统需要处理大量的请求,对于服务器、网络带宽、数据库等资源的使用要进行合理的管理和分配,避免资源瓶颈导致系统崩溃。 3. 并发控制:高并发情况下,可能会出现资源竞争的问题,如数据库的并发读写、缓存的并发访问等。需要通过机制、缓存策略、队列等方式进行并发控制,保证数据的一致性和系统的稳定性。 4. 缓存策略:在高并发场景下,合理使用缓存可以大幅度提高系统的性能。可以使用分布式缓存、页面静态化等方式来减少对数据库的访问压力,提高系统的响应速度。 5. 限流和熔断:在高并发场景下,如果不进行限流和熔断处理,系统可能会因为请求过多而崩溃。可以使用限流算法、负载均衡等方式来控制请求的流量,同时使用断路器等机制来保护系统免受超负荷的攻击。 6. 日志和监控:在高并发场景下,日志和监控是必不可少的工具。通过对系统的日志进行分析和监控,可以及时发现问题和瓶颈,做出相应的优化调整,保障系统的稳定性和可靠性。 总之,高并发场景下需要综合考虑性能、资源、并发控制、缓存、限流和熔断、日志和监控等方面的问题,以保证系统的稳定性、可扩展性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值