Java p2p项目面试题 的事实和奥秘

本文详细探讨了在P2P项目中遇到的面试问题,包括并发量设计、事务处理、消息队列ActiveMQ在秒杀场景的应用、超卖问题的解决策略、分布式锁的实现以及多线程在投资回款和红包发放中的应用。项目采用Spring、Spring Boot、Spring Cloud等技术,使用Redis进行缓存,通过Dubbo进行分布式开发,应对高并发挑战。此外,还涉及了支付流程、数据库选型、并发事务处理和数据一致性等关键问题。
摘要由CSDN通过智能技术生成

P2P项目专题

● 具体的你在P2P项目中都干什么了,你负责哪一块,每一块实现的时候用到了哪些技术?

● 你们项目的并发量设计了多少?

● P2P项目上线了吗?

● 你项目中的事务是怎么处理的?

● 在秒杀项目中使用消息队列ActiveMQ进行流量削峰,如果ActiveMQ接收消息失败了,怎么办?

消息在接收后会被服务器删除,为了避免接收消息失败而消息又被服务器删除,此时我们可以关闭自动确认机制AUTO_ACKNOWLEDGE,采用手动消息确认机制,由程序进行消息的确认,接收消息发生异常,则不确认消息,以便于下次可以再次接收。

● 在秒杀项目中使用消息队列ActiveMQ进行流量削峰,如果ActiveMQ挂掉怎么办?

第一点,首先消息需要使用持久化消息,服务挂掉,重启服务后消息依然可以消费,不会丢失;

第二点,ActiveMQ采用主从模式搭建集群,比如搭建3台主从模式的ActiveMQ集群,提高服务的可用性;

● 在交易中,如何控制超卖问题(卖出去的商品大于数据库实际商品库存)?

解决超卖问题,一个是借助于锁机制实现,这里面有线程锁、数据库锁、分布式锁等,另一个是借助于某些中间件产品实现,比如Redis;

如果我们的服务只是部署了一台服务器,我们通过线程锁即可控制并发问题,控制了并发问题,也就不会产生减库存的冲突,即不会产生超卖问题,这种实现,效率不高,而且只能是单机部署,实际项目不会采用;

如果我们的服务是集群部署,线程锁就不行了,此时可以使用数据库锁或分布式锁控制并发问题,从而控制减库存的冲突,避免超卖问题,数据库锁可以采用乐观锁、悲观锁,其中乐观锁比悲观锁效率稍高,在实际项目中使用多一些,悲观锁使用较少,但由于数据库本身的性能和并发处理能力并不理想,在高并发项目中,使用数据库锁也是不合适的;在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

使用分布式锁解决超卖问题,在实际项目中有相关真实的案例,主要采用zookeeper实现分布式锁,分布式锁是将我们的线程锁扩展为多个jvm的锁&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值