乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      web服務器集群

       9252娃兒 2017-01-13

      概述

      集群和分布式都是從集中式進化而來的。分布式和集群會相互合作的,同時的集群和分布式。在這里重點說說集群

      集群是什么?

      集群能提高單位時間內(nèi)處理的任務數(shù)量,提升服務器性能
      有多臺服務器去處理任務,但是每個任務都是由一臺服務器獨立完成的

      分布式是什么?

      分布式能縮短單個任務處理的時間
      跟集群一樣,也有多臺服務器去處理任務,但是每個任務由多臺服務器合作完成,每臺服務器負責完成大任務中的一個小任務

      集中式是什么?

      集中式就是最傳統(tǒng)的那種,所有任務由一臺大機完成

      集群場景

      可以在一臺物理服務器上集群多個應用服務器,每個應用服務器獨立工作。再在前端分配一個中央控制服務器,負責把發(fā)送到這臺物理服務器的請求,按照一定權重分發(fā)給各個應用服務器。

      例子

      以tomcat為例子,可以采用1*apache+N*tomcat的模式
      apache作為門面,在前端用負載均衡把請求發(fā)給各個tomcat服務器

      好處

      通常集群32位的服務器來代替單個64位的服務器,這樣能盡量發(fā)揮出硬件的性能

      1. 在64位的程序中,由于指針膨脹以及內(nèi)存對齊,會造成內(nèi)存浪費。
      2. 在單個64位的服務器宕機的時候,所產(chǎn)生的快照很大,不好分析
      3. 大內(nèi)存的服務器,意味著要對更大的內(nèi)存區(qū)域進行垃圾收集,那么會增大GC的時間,會加長服務器的停頓

      難點

      由于http請求是無狀態(tài)的,那么對于會話級別的事務,如何保持用戶的狀態(tài)?
      在單個服務器中,提供了session-sessionID的機制來保存用戶的狀態(tài)
      那么現(xiàn)在有多臺服務器,如何記錄用戶的狀態(tài)?
      有兩個大方向:

      1. session粘性
      2. 共享session

      session粘性

      這種方式也成為親和式集群,給session創(chuàng)造粘性,意思是讓用戶每次都訪問的同一個應用服務器
      這樣就要在前端服務器apache中記錄下,用戶首次訪問的是哪個tomcat,將用戶后面發(fā)送的請求都發(fā)送到這個tomcat上去
      這樣帶來的后果是,各個服務器負載不均衡,因為只在用戶首次訪問的時候,采用了負載均衡分發(fā),但是這個影響也不會那么明顯


      worker.controller.sticky_session=true|false
      worker.controller.sticky_session_force=true|false

      這是在apache對于session粘性的配置
      worker.controller.sticky_session,為true會開啟session粘性機制,為false關閉
      worker.controller.sticky_session_force,為true意味著即使這個服務器宕機了,也仍然發(fā)送到這個服務器,為false則會選擇發(fā)送其他到其他服務器
      建議選擇前者為true,后者為false。這樣既能達到session粘性,又能在服務器宕機的時候繼續(xù)提供服務

      優(yōu)點:

      1. 占用的內(nèi)存少,因為只記錄了sessionID以及對應發(fā)送的服務器

      缺點:

      1. 如果服務器宕機了,在這個服務器上的session信息都會丟失

      同步session

      這種方式需要在一個地方存放session的所有信息,并且能讓每個服務器節(jié)點都能訪問得到這些session
      這種方式大概有三種方案:

      1. cookie同步
      2. 數(shù)據(jù)庫同步
      3. 內(nèi)存數(shù)據(jù)庫同步
      cookie同步

      cookie同步是將session的所有信息存放在客戶端,每次請求的時候,將session也發(fā)送上來
      優(yōu)點:

      1. 不占用服務器內(nèi)存
      2. 服務器宕機不會丟失session信息

      缺點:

      1. 放在客戶端,不安全
      2. 受瀏覽器的限制,瀏覽器禁用cookie
      3. 增大流量,變相拉低響應時間
      4. session序列化和反序列都需要額外的時間
      數(shù)據(jù)庫同步

      將session信息存放在一個都能訪問到的數(shù)據(jù)庫
      優(yōu)點:

      1. 服務器宕機不會丟失session信息

      缺點:

      1. 占用的內(nèi)存大
      2. 增大數(shù)據(jù)庫負擔
      3. session序列化和反序列都需要額外的時間
      4. 訪問數(shù)據(jù)庫會需要額外的時間
      內(nèi)存數(shù)據(jù)庫同步

      將session信息存放在一個都能訪問到的內(nèi)存數(shù)據(jù)庫中,比如Redis、memcached
      優(yōu)點:

      1. 服務器宕機不會丟失session信息
      2. 訪問的速度快

      缺點:

      1. 占用內(nèi)存大
      2. session序列化和反序列都需要額外的時間

      總結(jié)

      session同步最好的是第三種,內(nèi)存數(shù)據(jù)庫同步
      session同步的好處是不怕單個服務器宕機,但是他占用的資源、速度也比session粘性要大

      缺點

      1. 節(jié)點對共享資源的競爭,如磁盤文件
      2. 節(jié)點對同一資源進行操作帶來的問題,如對同一文件進行讀寫
      3. 32位的節(jié)點受最大內(nèi)存的限制
      4. 節(jié)點內(nèi)資源池的閑置。如連接池,可能會出現(xiàn)某些節(jié)點的連接池用滿,某些節(jié)點還有可用連接。可以考慮配置同一資源池,集中式JNDI
      5. 節(jié)點內(nèi)的本地緩存重復,因為每份節(jié)點都有一份本地緩存??梢钥紤]采用緩存數(shù)據(jù)庫統(tǒng)一存放緩存,如redis
      6. 浪費內(nèi)存,節(jié)點越多,重復加載的類越多,jvm中的方法區(qū)內(nèi)容差不多,但是每個節(jié)點都有一份。

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多