vlambda博客
学习文章列表

PHP 秒杀系统简介与环境准备

秒杀系统特点

  • 人多商品数量少
  • 时间短流量高
  • 外挂机器(黄牛)

技术分析

  • 瞬时高并发的处理能力
  • 多层次分布式处理能力
  • 人机交互与对抗

系统环境搭建

技术选型分析

1、基础服务

  • Linux + Nginx + PHP + MySQL + Redis
  • 选择 Linux 而不是 Windows: 免费、开源,黑盒的东西相对少。
  • 选择 Nginx 而不是 Apache :出于性能考虑,首先是网络的处理 Nginx 能够突破 1 万个,10 万个甚至 100 万个链接,能够让很多位用户的请求进来而 不宕机。而 Apache 的用户请求数量为 100 个,200 个,或者超过 500 个和 1000 个的时候,就很不稳定甚至会出现宕机的情况。
  • 选择 Redis 缓存而不是 Memcached 缓存:是因为 Redis 的 数据结构相对比较多,Memcached 比较单一。

2、CDN(Content distribution network:内容分发网络),智能 DNS

  • 选择原因:CDN 可以实现 分布式缓存,并且支持全国 多节点
  • CDN 的基本组成:由源站及其下的多个节点组成。将这些节点的 IP 存放到源站的列表里,然后再分配到全国各地 CDN 服务的缓存服务器的代码配置文件里。因为 只有源站会生成内容,而所有的 节点只能缓存内容不能生成内容。
  • CDN 的工作原理:用户发起一个请求,首先会先找到最近的一个 CDN 服务器,这个服务器会优先从本地的缓存中获取内容,如果本地没有用户需要的内容,则会先从源站获取内容,接着本地服务器缓存起来,然后再发给用户。
  • 智能 DNS 可以实现 多线路接入
  • 智能 DNS 原理:可以在后台配置很多个 IP,DNS 有自己的一套系统可以找到对应 IP 的地理位置以及其运营商的信息。
  • DNS 工作原理:首先用户请求 DNS 解析时,DNS 会拿到用户的 IP 信息,接着会分析出该用户处于哪一个地区,属于哪一种网络类型,最后再匹配一个离用户最近的网络地域的服务器。
  • 智能 DNS 的作用:分析 用户的 IP,分析 网络节点服务器的 IP,然后 智能对照,能够给用户分配到最适合的网络服务。

3、负载均衡 LVS 和大型 Web 服务集群

  • 选用 LVS:因为 LVS 是运行在网络层的负载均衡服务,所以在处理 网络连接方面是比较 高效稳定的,并且 LVS 支持 更大规模的网络集群和更大量的 网络请求
  • LVS 的好处:可以 屏蔽用户对服务器的 透明性,可以让后台的服务器更好的实现动态调整(宕机,负载过高)。
  • 工作原理:用户正常访问服务(访问的是 LVS 服务),接着通过 LVS 服务,把请求转发到 Web 服务(有多种转发方式,例:轮巡)。如果不希望请求比较零散的话,可以使用同一个 IP 命名到同一个服务器上去做处理。

开发环境准备

  • 开发工具:Eclipse for PHP Developers、PHPStorm、EditPlus(免费、简单、高效)
  • 部署开发环境:XAMPP(windows 安装包)、MACOS brew 安装工具(Mac)、Linux yum(linux)
  • 代码管理器:Git、SVN