<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 297,  comments - 1618,  trackbacks - 0
     

    文:阿蜜果

    日期:2011-2-14

    1、概念

    近年來,內存容量不斷提高,價格不斷下跌,操作系統已經可以支持更大的地址空間,充分利用技術提升系統性能成為一個熱點。

    可從數據庫方面來考慮,此種方案可使用“內存數據庫”,另一種方案是使用“內存對象緩存系統”,將某些量小、使用次數多的數據以key/value的方式保存在內存對象緩存系統中,減少數據庫查詢訪問帶來的性能下降。

    在本文中,主要講述后者,但在本章也對“內存數據庫”的概念進行說明。

    1.1 內存數據庫

    內存數據庫,就是將數據放在內存中直接操作的數據庫。相對于磁盤,內存的數據讀寫速度要高出幾個數量級,將數據保存在內存中相比從磁盤上訪問能夠極大地提高應用的性能。

    在數據庫技術中,目前主要使用兩種方法來使用大量的內存:

    1)              在傳統的數據庫中,增大緩沖池,將一個事務所涉及的數據都放在緩沖池中,組織成相應的數據結構來進行查詢和更新處理,也就是常說的共享內存技術,這種方法優化的主要目標是最小化磁盤訪問。

    2)              使用內存數據庫技術(也叫主存數據庫)技術,也就是干脆重新設計一種數據庫管理系統,對查詢處理、并發控制和恢復的算法和數據結構進行重新設計,以更有效的使用CPU周期和內存,這種技術近乎把整個數據庫放進內存中,因而產生一種根本性的變化。

    1.2 內存對象緩存系統

    內存對象緩存系統用于動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提供動態、數據庫驅動網站的速度。

    常用的是Memcached 是一個高性能的分布式內存對象緩存系統,它基于一個存儲鍵/值對的hashmap。其守護進程(daemon )是用C寫的,但是客戶端可以用任何語言來編寫,并通過memcached協議與守護進程通信。但是它并不提供冗余(例如,復制其hashmap條目);當某個服務器S停止運行或崩潰了,所有存放在S上的鍵/值對都將丟失。

    MemcachedDanga Interactive開發,用于提升LiveJournal.com訪問速度的。LJ每秒動態頁面訪問量幾千次,用戶700萬。Memcached將數據庫負載大幅度降低,更好的分配資源,更快速訪問。

    2、應用場景

    Memcached一般與數據庫系統配合使用,它用于存儲一些經常需要讀取的數據,從來達到提高性能的目的。

    下面講幾個在呼叫中心系統中的應用實例。

    2.1 任務可執行性檢查

    例如,外呼任務需要在指定“任務開始時間”和“任務結束時間”中運行,并且在“啟用”狀態才能運行,而且單個外呼任務的進程需要通過查詢數據庫定時檢查(例如:1分鐘)該任務是繼續運行,還是終止運行。當多個外呼任務并行運行時,這種查詢會給系統增加負擔。

    若使用內存對象緩存系統,將每個任務的狀態信息以key/value對的方式存儲在Memcached的“任務信息表”中(key=任務id,value:是否可運行標志),在插入任務時,在Memcached的“任務狀態表”中插入一條數據;當“任務開始時間”和“任務結束時間”或“狀態”發生改變時,根據key對應改變Memcached的“任務信息表”的value值。在外呼任務進行中,查詢任務是否可運行時不再需要查詢數據庫,一般情況下只需要查詢Memcached即可,從而減少了對數據庫的訪問。

    2.2 日程檢查

             在呼叫中心路由時,有時候需要提供根據日程進行路由的功能,例如滿足某個日程(例如:每年的“10100:00:00”到“10723:59:59”的日程)時才路由到A中繼。一個日程可以對應多個條目,若在路由前需要要驗證當前時間是否滿足日程,那對應需要查詢兩表的信息,還需要是否滿足日程條件。當并發很多個用戶進行呼叫時,這種檢查會給系統增加很大的負荷,在此處也可以使用內存對象緩存系統來解決問題。

             開發定時觸發(1分鐘執行一次)程序去日程表和日程條目表中查詢多條信息,將當前時間與某個日程比較,將其存入Memcached中的“日程表”中,key為日程鍵,value為當前時間是否在當前日程內的標志。

             路由程序根據日程鍵檢查Memcached中的“日程表”,若滿足某個日程,則路由到A中繼,基本不再需要針對日程對數據庫進行查詢。

    3、應用禁忌

    3.1 不要將Memcached當數據庫用

    Memcached 的首要目的就是加快數據的響應時間,否則數據從其他數據源構建或恢復需要很長時間。一個典型的例子就是從一個數據庫中恢復信息,特別是在信息顯示給用戶前 需要對信息進行格式化或處理的時候。Memcached 被設計用來將信息存儲在內存中以避免每次在數據需要恢復時重復執行相同的任務。

    切不可將 Memcached 用作運行應用程序所需信息的惟一信息源;數據應總是可以從其他信息源獲取。此外,要記住 Memcached 只是一個鍵/值的存儲。不能在數據上執行查詢,或者對內容進行迭代來提取信息。

    3.2 不要使用Memcached存儲大批量數據

             首先Memcached空間大小不算大,而且主要用于緩存,所以不應該在Memcached中存儲大批量數據。若在Memcached中按照一定格式存儲數據表的行數據,而且表的數據量又很大,首先空間不允許,而且查詢非常麻煩,此類數據適合保存在數據庫中。

    3.2 Memcached并不安全

    為了確保最佳性能,Memcached 并未提供任何形式的安全性,沒有身份驗證,也沒有加密。這意味著對 memcached 服務器的訪問應該這么處理:一是通過將它們放到應用程序部署環境相同的私有側,二是如果安全性是必須的,那么就使用 UNIX® socket 并只允許當前主機上的應用程序訪問此 Memcached 服務器。

    這多少犧牲了一些靈活性和彈性,以及跨網絡上的多臺機器共享 RAM 緩存的能力,但這是在目前的情況下確保 memcached 數據安全性的惟一一種解決方案。

    4、附錄

             《常用內存數據庫介紹》:

    http://www.360doc.com/content/10/1202/16/3196411_74404034.shtml

             《內存數據庫_百度百科》:

             http://baike.baidu.com/view/1210875.htm

             memcached_百度百科》:

             http://baike.baidu.com/view/794242.htm

    《使用memcached提升站點性能》:

             http://www.oschina.net/bbs/thread/11008
    posted on 2011-02-15 12:42 阿蜜果 閱讀(2684) 評論(0)  編輯  收藏 所屬分類: Java 、解決方案
    <2011年2月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272812345
    6789101112

          生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
          我的作品:
          玩轉Axure RP  (2015年12月出版)
          

          Power Designer系統分析與建模實戰  (2015年7月出版)
          
         Struts2+Hibernate3+Spring2   (2010年5月出版)
         

    留言簿(263)

    隨筆分類

    隨筆檔案

    文章分類

    相冊

    關注blog

    積分與排名

    • 積分 - 2294312
    • 排名 - 3

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久精品国产精品亚洲艾| 久久精品国产精品亚洲| 亚洲国产精品综合久久久| 暖暖免费在线中文日本| 亚洲av无码国产精品色午夜字幕 | 中文字幕影片免费在线观看| 久久久国产精品亚洲一区| 99久久国产免费-99久久国产免费| 亚洲∧v久久久无码精品| 99ee6热久久免费精品6| 亚洲国产中文在线二区三区免| 69天堂人成无码麻豆免费视频| 亚洲精品第一国产综合野| 韩国18福利视频免费观看| 男女超爽视频免费播放| 久久激情亚洲精品无码?V| 永久免费av无码入口国语片| 亚洲综合视频在线| 中文字幕无码成人免费视频| 亚洲AV无码一区二区三区网址 | 好男人视频社区精品免费| 亚洲AV成人一区二区三区观看| 免费精品国产自产拍观看| 三上悠亚电影全集免费| 久久久国产精品亚洲一区| 四虎成人精品一区二区免费网站| 黄网站色视频免费看无下截| 在线A亚洲老鸭窝天堂| 最近免费中文字幕大全高清大全1| 亚洲AV无码乱码在线观看代蜜桃| 永久中文字幕免费视频网站| 一本大道一卡二大卡三卡免费 | 日本一区免费电影| 国产自国产自愉自愉免费24区| 亚洲最大在线视频| 亚洲?V无码成人精品区日韩| 暖暖日本免费中文字幕| 亚洲欧美日韩综合久久久久| 国产成A人亚洲精V品无码性色| 人妻视频一区二区三区免费| 一级毛片免费播放视频|