-
瓶颈分析.
查看全部 -
java控制事务行为分析
查看全部 -
视频只是起到展示作用,独立做一遍。
查看全部 -
查看全部
-
【WEB层技术回顾】
restful接口运用:用来描述资源,通过不同的提交方式(GET/POST)来达到描述行为的目的;写一般通过post,读一般通过get。
SpringMVC使用技巧:如何去配置,其参数的映射,以及如何打包成json返回给浏览器。
前端交互分析过程:如何与浏览器交互来完成产品的需求,实现一个优雅的前端交互,对于产品的性能也是非常有帮助的。
Bootstrap和JS的使用:Bootstrap是一个非常优雅的,包含JS和CSS的组件库;JS主要使用了JQuery和一些插件;JS可以按模块和面向对象的思路来书写代码
查看全部 -
【业务层技术回顾】
业务接口设计和封装:
站在使用者角度设计接口,而不是考虑怎么去实现这个接口,达到使用接口干净直接的目的;(举例?)
SpringIOC配置技巧:
声明式事务:XML配置,
DAOservice/controller:注解,
包扫描。
Spring声明式事务使用和理解:应该让方法快速完成,理解声明式事务什么时候该回滚,什么时候该提交
SpringIOC配置技巧: 1、对于第三方类库,可以通过xml文件进行配置 2、对于自己开发的类,可以通过注解的方式完成IOC
查看全部 -
【数据层技术回顾】
mybatis中设计dao接口,每个dao方法对应一条sql语句
上层service调用组合这些dao方法完成业务逻辑
查看全部 -
认识到各个角色承担的主要职责
查看全部 -
【参与的角色】
数据库管理员(Database Administrator,简称DBA)
查看全部 -
【典型的部署架构】
Nginx做负载均衡
分库分表 在秒杀系统中,一般通过关键的秒杀商品id取模进行分库分表,以512为一张表,1024为一张表 分库分表一般采用开源架构,如alibaba tddl
统计分析 一般使用hadoop等架构进行分析
补充:
一部分流量已经被cdn缓存锁拦截 不过秒杀的操作,秒杀的地址获取这样的请求不方便放入cdn中,所以访问到我们的服务器 我们的服务器会通过我们的dns查找到我们的地址 一般找到的是nginx地址,nginx一般部署到不同的机房,比如电信,移动,联通 这样的话智能的dns会根据用户的请求ip地址来智能的dns解析来请求最近的Nginx服务器 nginx还会给我们的服务器做负载均衡
分库分表:阿里巴巴TDDL
统计分析: EL
查看全部 -
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的事务来完成。
查看全部
举报