架构师训练营 Week 9 [命题 + 总结]
设计一个秒杀系统,主要的挑战和问题有哪些?核心的架构方案或者思路有哪些?
主要的问题和挑战:
影响网站其他业务
针对秒杀商品的高并发请求使得网站其他请求的响应变慢。
Solution: 秒杀页面使用独立的域名,与网站日常部署隔离开来。
对数据库的负载压力
大量用户请求对于网站数据库的同时访问,会对数据库服务器造成负载压力。
Solution: 秒杀页面内容以静态为主,内容尽量存储在用户本地缓存或者CDN服务器中。秒杀开始后设置多层过滤,最终只有部分请求到达数据库。其他用户返回“秒杀结束”页面。
突然增加的网络及服务器带宽
相对于网站日常访问量而言,忽增的用户访问量使得日常带宽无法满足秒杀需求。
Solution:静态秒杀页面及CDN的使用可以缓解网站带宽的消耗。
秒杀器
秒杀器循环尝试下单页面的URL使得商品在秒杀开始前可能就被拍走。
Solution:后台在秒杀开始时再随机生成下单页面的URL,通过JS文件返回通知前台。
学习小结:
JVM
JVM是Java Virtual Machine(Java虚拟机)的缩写,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域等组成。JVM屏蔽了与操作系统平台相关的信息,使得Java程序只需要生成在Java虚拟机上运行的目标代码(字节码),就可在多种平台上不加修改的运行,这也是Java能够“一次编译,到处运行的”原因。
Overview of a Java virtual machine (JVM) architecture based on The Java Virtual Machine Specification Java SE 7 Edition
秒杀
如命题作业的分析
评论