[發(fā)明專利]高并發(fā)、多線程應用中的計數(shù)方法及系統(tǒng)有效
| 申請?zhí)枺?/td> | 201210185463.0 | 申請日: | 2012-06-06 |
| 公開(公告)號: | CN102722405A | 公開(公告)日: | 2012-10-10 |
| 發(fā)明(設計)人: | 張海洋 | 申請(專利權)人: | 新浪網(wǎng)技術(中國)有限公司 |
| 主分類號: | G06F9/46 | 分類號: | G06F9/46;G06F17/30 |
| 代理公司: | 北京集佳知識產(chǎn)權代理有限公司 11227 | 代理人: | 趙景平;王寶筠 |
| 地址: | 100080 北京市海淀*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 并發(fā) 多線程 應用 中的 計數(shù) 方法 系統(tǒng) | ||
技術領域
本發(fā)明涉及計算機技術領域,具體涉及一種高并發(fā)、多線程應用中的計數(shù)方法及系統(tǒng)。
背景技術
傳統(tǒng)網(wǎng)站帖子瀏覽計數(shù)存儲在數(shù)據(jù)庫(比如mysql)中,一般將瀏覽計數(shù)值與帖子內(nèi)容放在帖子表中。當網(wǎng)絡用戶通過IE等瀏覽器查看帖子的時侯,瀏覽器發(fā)送http(Hypertext?Transfer?Protocol,超文本傳送協(xié)議)請求到網(wǎng)站服務器,網(wǎng)站服務器會從帖子表中讀取帖子內(nèi)容和瀏覽計數(shù)值顯示到瀏覽器,同時,會對帖子表中瀏覽計數(shù)值做更新操作,實現(xiàn)瀏覽計數(shù)的實時統(tǒng)計。帖子內(nèi)容和瀏覽計數(shù)統(tǒng)一放到數(shù)據(jù)庫中,實現(xiàn)快速方便,很多訪問量小的網(wǎng)站,使用這種技術已經(jīng)足夠。
而對于大型網(wǎng)站,高并發(fā)(大于隨機寫200次/每秒,隨機讀1000次/每秒),大訪問量(每天百萬級別以上)時,單個數(shù)據(jù)庫的I/O寫性能已經(jīng)達到極限,I/O負載壓力很大。主要是硬盤本身隨機讀寫能力達到上限,無法響應更多的I/O請求,直接導致服務不穩(wěn)定。如果將讀寫分散到多臺服務器,將直接導致服務器數(shù)量龐大,架構復雜,增加維護難度。
發(fā)明內(nèi)容
本發(fā)明實施例針對上述現(xiàn)有技術存在的問題,提供一種高并發(fā)、多線程應用中的計數(shù)方法及系統(tǒng),以減少磁盤I/O對系統(tǒng)性能的影響。
為此,本發(fā)明實施例提供如下技術方案:
一種高并發(fā)、多線程應用中的計數(shù)方法,包括:
接收操作請求,在所述操作請求中包含操作對象的對象標識及已對所述操作對象的操作次數(shù);
根據(jù)操作對象的對象標識與保存在共享內(nèi)存中的操作對象對應的計數(shù)值的映射關系,確定所述操作請求中的對象標識對應的計數(shù)值;
根據(jù)所述操作請求中的操作次數(shù)更新所述共享內(nèi)存中保存的所述計數(shù)值。
優(yōu)選地,所述方法還包括:
創(chuàng)建所述共享內(nèi)存,并建立所述操作對象的對象標識與所述計數(shù)值的映射關系。
優(yōu)選地,所述創(chuàng)建所述共享內(nèi)存包括:
利用共享內(nèi)存創(chuàng)建shmget函數(shù)創(chuàng)建所述共享內(nèi)存;或者
利用內(nèi)存映射mmap函數(shù)創(chuàng)建所述共享內(nèi)存;或者
通過進程申請所述共享內(nèi)存。
優(yōu)選地,所述建立所述操作對象的對象標識與所述計數(shù)值的映射關系包括:
如果所述對象標識是數(shù)字類型的,則直接將所述對象標識映射到一個二進制整型值,并將所述二進制整型值作為與所述對象標識對應的計數(shù)值;
如果所述對象標識是字符串類型的,則先將所述對象標識映射為一個自動增長類型的字段,再將所述字段映射到一個二進制整型值,并將所述二進制整型值作為與所述對象標識對應的計數(shù)值。
優(yōu)選地,所述共享內(nèi)存分布在多個服務器中,所述多個服務器包括:本地服務器和遠程服務器;所述方法還包括:
在根據(jù)所述操作次數(shù)更新所述共享內(nèi)存中保存的所述計數(shù)值后,將更新操作后的計數(shù)值及對應的對象標識添加到所述本地服務器的日志文件中;
向所述遠程服務器發(fā)送同步請求,在所述同步請求中包含所述日志文件中的計數(shù)值及對應的對象標識,以使所述遠程服務器更新自己的共享內(nèi)存中保存的與所述對象標識對應的計數(shù)值。
優(yōu)選地,所述方法還包括:
接收所述遠程服務器發(fā)送的同步請求,所述同步請求中包含需要同步的計數(shù)值及對應的對象標識;
根據(jù)所述映射關系確定所述對象標識對應的計數(shù)值;
根據(jù)所述需要同步的計數(shù)值更新所述本地服務器的共享內(nèi)存中保存的與所述對象標識對應的計數(shù)值。
一種高并發(fā)、多線程應用中的計數(shù)系統(tǒng),包括:
接收單元,用于接收操作請求,在所述操作請求中包含操作對象的對象標識及已對所述操作對象的操作次數(shù);
查找單元,用于根據(jù)操作對象的對象標識與保存在所述共享內(nèi)存中的操作對象對應的計數(shù)值的映射關系,確定所述操作請求中的對象標識對應的計數(shù)值;
更新單元,用于根據(jù)所述操作請求中的操作次數(shù)更新所述共享內(nèi)存中保存的所述計數(shù)值。
優(yōu)選地,所述系統(tǒng)還包括:
創(chuàng)建單元,用于創(chuàng)建所述共享內(nèi)存;
映射關系建立單元,用于建立所述操作對象的對象標識與所述計數(shù)值的映射關系。
優(yōu)選地,所述創(chuàng)建單元,具體用于利用共享內(nèi)存創(chuàng)建shmget函數(shù)創(chuàng)建所述共享內(nèi)存;或者利用內(nèi)存映射mmap函數(shù)創(chuàng)建所述共享內(nèi)存;或者通過進程申請所述共享內(nèi)存。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于新浪網(wǎng)技術(中國)有限公司,未經(jīng)新浪網(wǎng)技術(中國)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210185463.0/2.html,轉載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:用于通過鑄造或注射成型工藝制造單件式空心體的方法
- 下一篇:靜壓花鍵裝置





