淺談大併發架構

演變

  • 單機架構:LNMP、LAMP、WAMP

  • 性能優化:動靜分離、數據庫獨立、數據庫讀寫分離、負載均衡、雙活技術、數據庫中間件、緩存、搜索

    動靜分離:靜態請求速度很快,而動態請求比較慢,因此可以單獨將動態請求的處理獨立一臺服務器。
    數據庫獨立:跟多時候,數據庫是服務器的性能瓶頸,因此將數據庫獨立出來一臺服務器。
    讀寫分離:當一臺數據庫服務器負載受限時,可以將讀(查詢)和寫(增刪改)的操作分別在兩臺服務器上完成。
    負載均衡:一臺服務器已經不能搞定,需要多臺服務器,因此需要一臺作爲任務分發工作的服務器。
    session共享:可以在負載均衡中使用ip_hash算法,也可以搭建專門的session服務器(nfs/memcache/redis)
    雙活技術:萬一負載均衡服務器掛了,所以需要搞一臺備用,主備使用keepalived技術保持心跳,隨時待命
    數據庫中間件:當數據的讀寫操作收到限制性(數表特別大),可以分庫分表分機器等手段以提高效率
    緩存:可以保存session,甚至可以保存使用頻率較高的數據庫中的數據
    搜索:當數據量特變大的時候,使用link命令,可以單獨整一臺搜索服務器(xunsearch)
    CDN:內容分發網絡
    DNS負載均衡:在DNS解析時,一個域名解析到不同的負載均衡服務器

代理服務

  • 正向代理:你上網的時候,請求網頁不是和真實網站進行通訊,而是將請求發給代理服務器,代理服務器請求真實的服務器,然後將數據返回給你。在網站看來,代理服務器就是一個普通的客戶端,對網站是透明的。

    如:翻牆、…

  • 反向代理:原理和正向代理一樣,也是直接請求代理服務器,然後代理服務器請求真實服務器並返回數據。在用戶看來,請求代理服務器就像是在請求真實服務器一樣,在用戶來代理服務器是透明的。

    如:防火牆、…

反向代理

  • 配置步驟:

    1. 代理服務器(nginx)

      upstream apachephp{
           server 真實服務器IP:80; #Apache
      }
      
      server {
           listen 80;
           server_name  www.daili.com;    #域名需要解析
      
           location / {
                   proxy_pass  http://apachephp;
      
                   #Proxy Settings
                   proxy_redirect     off;
                   proxy_set_header   Host             $host;
                   #傳遞真實的用戶IP
                   proxy_set_header   X-Real-IP        $remote_addr;
                   proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                   proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
                   proxy_max_temp_file_size   0;
                   proxy_connect_timeout      90;
                   proxy_send_timeout         90;
                   proxy_read_timeout         90;
                   proxy_buffer_size          4k;
                   proxy_buffers              4 32k;
                   proxy_busy_buffers_size    64k;
                   proxy_temp_file_write_size 64k;
           }            
      } 
    2. 真實的服務

      1.可以是Wampserver
      2.也可以是搭建好lnmp環境的主機
  • eg:

    1.在真實服務器上寫內容,訪問代理服務器(域名需要解析)即可

    2.用戶真實的IP($_SERVER[‘REMOTE_ADDR’])會被代理服務器替換

    3.用戶真實的IP需要代理服務器傳遞過去,保存在:$_SERVER['HTTP_X_REAL_IP']
    $_SERVER['HTTP_X_FORWARDED_FOR']

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章