您的当前位置:首页正文

Nginx性能调优,解决C10K问题

来源:九壹网

        公司的技术总监最近出了一道架构方面的问题让我们同组的开发人员设计,题目是这样的:有个签到功能,需要记录每个⽤户每年每⼀天的签到情况。假设⽤户量在千万,甚⾄亿级,该如何设计。

思考这个问题后,我给出的设计方案如下:

第一层:通过DNS,同一个域名绑定多个IP,在DNS上进行负载均衡。

第二层:中央Nginx集群,通过DNS负载均衡后,通过nginx二次负载均衡(Nginx的配置需要根据服务器配置调整,比如连接数,进程数等);

第三层:web层,将应用部署在多个节点上。

第四层:消息引擎层,将上层数据写入消息引擎中,consumer端将数据异步入库,建议使用kafka,吞吐量大。

第五层:数据库层,数据量庞大,传统的关系型数据库已经不太适用,即使通过水平分库分表,按日期或按userid分库,也很难解决存储和跨多库的查询问题。可以考虑使用MongoDB或大数据技术(HDFS和HBASE)来存储签到数据。

不知道合不合理,但总的设计理念是:负载均衡+异步。同时也要在Nginx和Linux内核方面进行优化,以抵抗更大的压力。

        下面,我将从Nginx的配置和Linux内核配置方面,讲解Nginx性能调优。

Nginx配置

总览Nginx的配置,我就不多做解释了,如果大家对Nginx的安装或各模块不太了解请自行百度。

...              #全局块

events {         #events块
   ...
}

http      #http块
{
    ...   #http全局块
    server        #server块
    { 
        ...       #server全局块
        location [PATTERN]   #location块
        {
        

因篇幅问题不能全部显示,请点此查看更多更全内容

Top