- 
            
            CDN:Content Delivery Network,即内容分发网络。放置一些静态化资源,或者可以将动态数据分离,比如秒杀详情页,做成HTML放在cdn上,动态数据可以通过ajax请求后台获取。一些js依赖直接用公网的CDN,自己开发的一些页面也做静态化处理推送到CDN。用户在CDN获取到的数据不需要再访问我们的服务器,动静态分离可以降低服务器请求量。 WebServer一般不直接对外访问,之前都会放置Nginx,Nginx是一个集群化的,部署在多个服务器上,用来做我们的Http服务器,响应客户请求。同时他还会为后端的Tomcat,Jetty这些servlet容器来做反向代理,以达到负载均衡的效果。 Redis:做服务器端的缓存,利用Redis提供的API来达到热点数据的快速存取的过程。加速后台获取数据,减少数据库的请求量。 MySQL:借助MySQL的事务来达到秒杀的数据的一致性和完整性。 查看全部
- 
            
            11111 查看全部
- 
            
            Mark 调试代码 查看全部
- 
            
            更新库存的是热点操作,会出现行级锁,而插入购买记录的行为没有行级锁。可以先插入购买明细,可以避免因重复秒杀带来的不必要的更新库存操作,减少不必要的行级锁的占用。然后再去更新库存。代码中,根据热点商品竞争的结果,来决定下一步是rollback还是commit,降低了网络延迟和GC影响一半的时间 插入操作放在前面,插入操作就是把秒杀单,用户id,电话组成一个组件,这个组件冲突的概率并不是很高,因为秒杀单在前头,还有用户的电话,组成一个唯一键,这个时候的网络延迟和GC是可以并行的,这个时候再去拿update减库存的rowLocl行级锁 rowLock: 行级锁,锁的粒度最小,并发度最高,加锁慢 最终目的:降低MySQL roollock的持有时间 查看全部
- 
            
            回顾事务执行 秒杀操作通过mysql的事务来完成。 查看全部
- 
            
            详情页:做静态化放到CDN中,各个公司CDN不同,不细讲 系统时间部分:new了一个对象,很简单很快,不用优化 地址暴露接口(高并发点): 不方便做成静态放到CDN中,需要放到服务器端,通过逻辑去控制;但是该接口调用频繁,不希望放到数据库中-->使用redis优化. 执行秒杀操作:高并发点 查看全部
- 
            
            优化: 前端: 动静态数据做分离,减少请求与响应时间;按钮防重复,防止用户发送无效的重复请求,因为秒杀活动一般都会有购买数量的限制,敲的次数再多,最后还是要查看是否已购。影响了效率,可有前端代为处理并优化 后端:使用CDN换存重要的静态资源等;在后端对活动结束时间、商品选购时间、业务的相关逻辑要求都放在后端代码中,并调用缓存来进行暂存,已减少对DB的直接操作,提高效率 1,前端控制触发次数,比如限制控制按钮的触发 2,使用CDN和缓存机制达到动静分离 3,减少行级锁和GC的时间,将食物控制在mysql中进行,比如存储过程 查看全部
- 
            
            方法一:成本高,大公司使用 方法二:放到服务器端完成,MySQL执行sql效率非常高 查看全部
- 
            
            99999 查看全部
- 
            
            异地机房延迟分析 实际在20ms左右 查看全部
- 
            
            同城机房延迟分析 查看全部
- 
            
            优化方向是: 查看全部
- 
            
            不是MySQL慢,也不是Java慢。而是Java和数据库通讯之间会有网络延迟/GC,这些时间也要加在事务的执行周期里面。而同一行的事务是串性化的。 第一个用户执行一次商品购买时,对DB的update减库存操作不是执行完就结束,后续还涉及到GC内存满了,等待自动回收过程中的网络响应的延迟问题; 除此之外,用户的每一次购买操作都是一个具体的事务,其中还涉及到了用户个人的购买明细,可理解为淘宝的已购买这一项,而这又是一个insert 的操作,执行完后又或许可能再一次出现GC进行内存的清理而导致延迟,直到反应过来后,继续执行后续的事务提交commit或者失败后的回滚rollback 而这时另一个用户的update 操作已经开始很久了超过了 4W分之一秒的理想时间,所以,实际秒杀项目中,需要对每一个用户的update时间,即行级锁的时间进行优化,因为,下一个用户还在等待,他后面或许还有一个它也在等待....哈士奇瞪着眼等着呢 查看全部
- 
            
            串行化操作 查看全部
- 
            
            压力测试下,一条update 可以 达到 4W 的 QPS ,等同于一件商品能在一秒内被销售掉 4W 件,这应该是理想值吧! 那么,对于实际执行中的低效是什么原因?这才是并发中要优化的重点吧! 查看全部
举报
 
             
        