秒杀系统时间配置Nginx查看服务器系统时间

Posted 在你之后

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了秒杀系统时间配置Nginx查看服务器系统时间相关的知识,希望对你有一定的参考价值。

秒杀系统时间配置

时间配置

在秒杀活动中,页面往往需要显示秒杀倒计时。倒计时未结束时,按钮无法点击。如此,就会涉及到倒计时时钟的统一问题。倒计时的时钟绝对不能依赖于客户端,因为当用户的设备时钟不准确或用户处于非当前时钟时,那么倒计时就会出错。所以,倒计时的时间需要服务端统一返回,客户端根据服务端的时间进行倒计时数秒,并根据服务端的状态控制按钮。对于服务端如何提供统一的时间,有不同的方案。讲究点的可以提供统一的时间接口,这个时间是绝对准确的,不会依赖于服务器主机。当然,不讲究的可以使用下面这种方式,直接在返回秒杀品详情数据的时候返回时间和状态。在很多组织中,对于分布式的服务器都会进行统一的时间管理,不允许出现服务器之间的时钟差异。

ECS阿里云

一般公司运维会同步、校准各服务器时间,如果不可靠可以找其他替代方案,阿里云有个基于nginx的时间接口,支持百万级QPS(可能是centos默认做了NTP同步,直接nginx配置获取本地时间即可)。

阿里云提供了内网和公网NTP服务器,用于同步各网络中ECS实例的本地时间。内网和公网NTP服务器NTP是用于同步网络中计算机时间的协议,全称为网络时间协议(Network Time Protocol)。时区和时间一致性对于云服务器ECS非常重要,有时会直接影响到任务执行的结果。例如,您在更新数据库或者分析日志时,时间顺序对结果有很大影响。为避免在ECS实例上运行业务时出现逻辑混乱和网络请求错误等问题,您需要统一相关ECS实例的时区设置。另外,您还可以通过NTP服务同步各网络中ECS实例的本地时间。云服务器ECS为您提供了高精度的时间参考NTP服务器,其中ntp.cloud.aliyuncs.com服务器提供分布式的一级时钟源,适用于金融、通讯、科研和天文等以时间精度核心的生产行业。

Chrony为阿里云官方和社区推荐配置的时钟同步服务,相较于NTP有更高的时钟稳定性与更小的时间误差。当前阿里云ECS实例中,CentOS 7及以上镜像版本已默认配置Chrony服务,您无需额外配置即可正常使用。

配置

通过Nginx配置文件添加一个location,返回服务器的时间。例如:

location /time 
    default_type text/plain;
    return 200 "$time_local\\n";

通过Nginx模块ngx_http_lua_module,使用lua脚本获取服务器的时间。例如:

location /time 
    default_type text/plain;
    content_by_lua '
        local time = os.date("%Y-%m-%d %H:%M:%S")
        ngx.say(time)
    ';

通过Linux命令date查看系统时间。例如:

date
  • Nginx单机百万QPS环境搭建需要注意以下几点:
    • 关闭多余的服务和进程,释放内存和CPU资源。
    • 调整Linux内核参数,优化网络连接和文件描述符等。
    • 调整Nginx配置参数,优化worker进程数、连接数、缓冲区大小等。
    • 使用wrk或ab等工具进行压力测试和性能分析。

性能:

简单查询,nginx调整后应该可以达到百万qps

Nginx单机百万QPS

  • nginx单机百万qps的硬件配置没有一个固定的标准,因为不同的应用场景和请求类型会影响服务器的性能和资源消耗。
  • 一般来说,要达到nginx单机百万qps的水平,需要具备以下条件:
    • 服务器的CPU核数足够多,至少16核以上。
    • 服务器的内存足够大,至少64G以上。
    • 服务器的网络带宽足够高,至少10Gbps以上。
    • 服务器的磁盘性能足够好,最好使用SSD或者RAID。
  • 另外,除了硬件配置之外,还需要对Linux内核参数和Nginx配置参数进行优化调整,以提高网络连接和文件描述符等资源的利用率。

参考

ECS本地时间

秒杀系统设计

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


以上是关于秒杀系统时间配置Nginx查看服务器系统时间的主要内容,如果未能解决你的问题,请参考以下文章

php高并发秒杀系统的搭建总结思考

#yyds干货盘点# 如何设计秒杀系统

高并发秒杀系统方案

java秒杀系统解决方案

配置nginx虚拟主机

Redis+PHP秒杀设计