隊列系統說明
1,關於MCQ
和memcahce類似,將數據寫入BerkleyDB落地,MEMCACHEQ的SET的操作,相當於在BDB中做了一次INSERT的操作;MEMCACHEQ的GET的操作,從BDB中獲取一條數據,BDB同時會將這條記錄進行DELETE操作。在機器重啓等操作的時候,數據不會丟失,兼容memcache的協議。
參數說明:
/usr/local/bin/memcacheq -drNvR -uroot -A8192 -B4096 -L1024 -m64 -c3000-T16 -H/data0/mcq/dbq/7014 -p7014
-H 指定數據存放的路徑
-p 指定啓動的監聽端口
-B 指定該進程一次請求分配的塊大小(如果4096,必須加上-A8192啓動)
-c 最大併發的用戶數
-L 指定LOG緩衝區的大小
-u 指定以什麼用戶的身份啓動
-m 指定BDB的數據在內存中緩存的大小
-d 後臺運行
-r 獲得最大的CORE文件的限制
-N 打開DB_TXN_NOSYNC獲得最大的性能提升;
BDB將不在事件觸發(commit)日誌或同步刷新日誌。這意味着事件支持ACI(atomicity,consistency,isolation)特性,而非D(durability),也就是說數據庫的完整性(integrity)將被維護,但當程序或系統出錯,一些最常觸發的事件可能在恢復操作中被取消(undone)。風險事件的數目由多少日誌更新與日誌內存匹配,操作系統將髒文件刷新到磁盤,以及日誌被檢查的頻率決定。該標誌可以在程序運行任何時期用set_flags導入環境配置,只對指定的環境句柄起作用。
-v 打印詳細的ERROR和warning日誌消息
-R 自動刪除比較久的日誌
2,MCQ的寫入和讀取
查看當前queue寫入和讀取情況
寫入
讀取
2,現有隊列系統建構
MCQ池
原來的MCQ池分類: 核心池(6000),應用池(7000),推送池(8000)等
現在按照業務單元重新歸類:base,openapi,admin,main,comm,app
MCQ系統
core.mq.t.sina.com.cn---> 10.75.1.252/ 10.73.14.235 --> 10.75.1.21/22/23/24........
MCQ資源的使用
在程序中讀取SINASRV_CONFIG的環境變量
環境變量中對應着域名和端口
解析到對應的VIP
VIP靜態輪詢到某一臺真實的server
真實server配置LO迴環地址,走LVS單臂模式