就是這樣子的:
假如說我現在有很多人同時登陸我的網站,
同時我想讓效率比較高,
那么請問在盡可能用比較少的計算機的情況下,
應該用什么樣的鎖,什么樣的結構來管理各個執行緒呢?
希望有大神可以給點思路~~~
也可以給點示例~~~
uj5u.com熱心網友回復:
這個時候就用redis中資料持久化和分布式鎖的內容了,通過redis資料持久化,將快取的資料保存到本地中來。利用redis分布式鎖,控制資料安全問題。關于高可用性的話,可以采用redis集群來實作,redis集群采用rediscluster來實作,這樣就可以實作這所有要求了。
uj5u.com熱心網友回復:
參考 1 樓 遇見女神 的回復: 這個時候就用redis中資料持久化和分布式鎖的內容了,通過redis資料持久化,將快取的資料保存到本地中來。利用redis分布式鎖,控制資料安全問題。關于高可用性的話,可以采用redis集群來實作,redis集群采用rediscluster來實作,這樣就可以實作這所有要求了。
emmmm......
這是C++的嗎?
如果是,那么請問一下該用哪些頭檔案?
或是該下載哪些資料庫?
uj5u.com熱心網友回復:
參考 1 樓 遇見女神 的回復: 這個時候就用redis中資料持久化和分布式鎖的內容了,通過redis資料持久化,將快取的資料保存到本地中來。利用redis分布式鎖,控制資料安全問題。關于高可用性的話,可以采用redis集群來實作,redis集群采用rediscluster來實作,這樣就可以實作這所有要求了。
有沒有關于這些方面的一些小例子?
uj5u.com熱心網友回復:
完成埠+執行緒池。目前效率最高的通信模型,沒有之一。。
但高并發是個整體系統,單靠一種技術是行不通的。
前置,使用反向代理,將靜態請求資料和動態請求資料分離,靜態請求就是請求圖片、代碼、UI等靜態的資料,動態請求就是需要計算才能知道結果的請求,靜態請求直接從靜態服務器中回傳結果即可。對于動態請求,再進行負載均衡,將請求分發到計算服務器上,服務器使用完成埠+執行緒池的通信模型來寫,當然,完成埠只支持windows,如果不是windows,那就考慮go語言等等。。。。
uj5u.com熱心網友回復:
參考 4 樓 sdhexu 的回復: 完成埠+執行緒池。目前效率最高的通信模型,沒有之一。。
但高并發是個整體系統,單靠一種技術是行不通的。
前置,使用反向代理,將靜態請求資料和動態請求資料分離,靜態請求就是請求圖片、代碼、UI等靜態的資料,動態請求就是需要計算才能知道結果的請求,靜態請求直接從靜態服務器中回傳結果即可。對于動態請求,再進行負載均衡,將請求分發到計算服務器上,服務器使用完成埠+執行緒池的通信模型來寫,當然,完成埠只支持windows,如果不是windows,那就考慮go語言等等。。。。
那么執行緒池主要是什么?
uj5u.com熱心網友回復:
參考 5 樓 abcd7038 的回復: Quote: 參考 4 樓 sdhexu 的回復: 提前把多個執行緒創建好,要使用的時候直接把執行的任務推過去執行,避免創建和釋放執行緒資源的開銷
uj5u.com熱心網友回復:
參考 5 樓 abcd7038 的回復: Quote: 參考 4 樓 sdhexu 的回復:
完成埠+執行緒池。目前效率最高的通信模型,沒有之一。。
但高并發是個整體系統,單靠一種技術是行不通的。
前置,使用反向代理,將靜態請求資料和動態請求資料分離,靜態請求就是請求圖片、代碼、UI等靜態的資料,動態請求就是需要計算才能知道結果的請求,靜態請求直接從靜態服務器中回傳結果即可。對于動態請求,再進行負載均衡,將請求分發到計算服務器上,服務器使用完成埠+執行緒池的通信模型來寫,當然,完成埠只支持windows,如果不是windows,那就考慮go語言等等。。。。
那么執行緒池主要是什么?
執行緒池的意義在于:首先你要明白一個真理,針對一個CPU(單核),同一個時刻只能運行一個執行緒,你只所以看上去好多程式一起運行,那是因為他進行了分時處理,就是說運行執行緒A一段時間,然后保護好現場,在運行B執行緒一段時間,在不同的執行緒之間來回切換,使得你感覺上好像很多執行緒在同時運行。。當你執行緒數量達到一定閾值,在執行緒之間來回切換需要的時間,比執行緒作業的時間都大了,就是說CPU光忙著保護執行緒現場、恢復現場等操作,光忙著執行緒切換了,干正事的時間就少了。整體效率反而會下降。。
那么執行緒池就是為了解決上面的問題的。一般來說,一個CPU可以運行2-3個執行緒,于是你的CPU是幾核的,或者說你有幾個CPU,那你就事先創建好CPU數*2~3個執行緒,這些執行緒的數量根據CPU核心數和CPU個數來,調整到最佳狀態。當有任務需要處理時,從執行緒池中喚醒一個執行緒,去執行你的任務,任務完成后,執行緒會休眠,回到執行緒池中。。
這樣效率就高了。
執行緒池的使用:https://blog.csdn.net/sdhexu/article/details/38020861
uj5u.com熱心網友回復:
參考 7 樓 sdhexu 的回復: Quote: 參考 5 樓 abcd7038 的回復: Quote: 參考 4 樓 sdhexu 的回復:
完成埠+執行緒池。目前效率最高的通信模型,沒有之一。。
但高并發是個整體系統,單靠一種技術是行不通的。
前置,使用反向代理,將靜態請求資料和動態請求資料分離,靜態請求就是請求圖片、代碼、UI等靜態的資料,動態請求就是需要計算才能知道結果的請求,靜態請求直接從靜態服務器中回傳結果即可。對于動態請求,再進行負載均衡,將請求分發到計算服務器上,服務器使用完成埠+執行緒池的通信模型來寫,當然,完成埠只支持windows,如果不是windows,那就考慮go語言等等。。。。
那么執行緒池主要是什么?
執行緒池的意義在于:首先你要明白一個真理,針對一個CPU(單核),同一個時刻只能運行一個執行緒,你只所以看上去好多程式一起運行,那是因為他進行了分時處理,就是說運行執行緒A一段時間,然后保護好現場,在運行B執行緒一段時間,在不同的執行緒之間來回切換,使得你感覺上好像很多執行緒在同時運行。。當你執行緒數量達到一定閾值,在執行緒之間來回切換需要的時間,比執行緒作業的時間都大了,就是說CPU光忙著保護執行緒現場、恢復現場等操作,光忙著執行緒切換了,干正事的時間就少了。整體效率反而會下降。。
那么執行緒池就是為了解決上面的問題的。一般來說,一個CPU可以運行2-3個執行緒,于是你的CPU是幾核的,或者說你有幾個CPU,那你就事先創建好CPU數*2~3個執行緒,這些執行緒的數量根據CPU核心數和CPU個數來,調整到最佳狀態。當有任務需要處理時,從執行緒池中喚醒一個執行緒,去執行你的任務,任務完成后,執行緒會休眠,回到執行緒池中。。
這樣效率就高了。
執行緒池的使用:https://blog.csdn.net/sdhexu/article/details/38020861
您這個的應該是Java或者其他語言的,有沒有一些C++的可以參考一下?
uj5u.com熱心網友回復:
這就是c++的
uj5u.com熱心網友回復:
這是一個很大的話題 了
uj5u.com熱心網友回復:
參考 7 樓 sdhexu 的回復: Quote: 參考 5 樓 abcd7038 的回復: Quote: 參考 4 樓 sdhexu 的回復:
完成埠+執行緒池。目前效率最高的通信模型,沒有之一。。
但高并發是個整體系統,單靠一種技術是行不通的。
前置,使用反向代理,將靜態請求資料和動態請求資料分離,靜態請求就是請求圖片、代碼、UI等靜態的資料,動態請求就是需要計算才能知道結果的請求,靜態請求直接從靜態服務器中回傳結果即可。對于動態請求,再進行負載均衡,將請求分發到計算服務器上,服務器使用完成埠+執行緒池的通信模型來寫,當然,完成埠只支持windows,如果不是windows,那就考慮go語言等等。。。。
那么執行緒池主要是什么?
執行緒池的意義在于:首先你要明白一個真理,針對一個CPU(單核),同一個時刻只能運行一個執行緒,你只所以看上去好多程式一起運行,那是因為他進行了分時處理,就是說運行執行緒A一段時間,然后保護好現場,在運行B執行緒一段時間,在不同的執行緒之間來回切換,使得你感覺上好像很多執行緒在同時運行。。當你執行緒數量達到一定閾值,在執行緒之間來回切換需要的時間,比執行緒作業的時間都大了,就是說CPU光忙著保護執行緒現場、恢復現場等操作,光忙著執行緒切換了,干正事的時間就少了。整體效率反而會下降。。
那么執行緒池就是為了解決上面的問題的。一般來說,一個CPU可以運行2-3個執行緒,于是你的CPU是幾核的,或者說你有幾個CPU,那你就事先創建好CPU數*2~3個執行緒,這些執行緒的數量根據CPU核心數和CPU個數來,調整到最佳狀態。當有任務需要處理時,從執行緒池中喚醒一個執行緒,去執行你的任務,任務完成后,執行緒會休眠,回到執行緒池中。。
這樣效率就高了。
執行緒池的使用:https://blog.csdn.net/sdhexu/article/details/38020861
您這個的應該是Java或者其他語言的,有沒有一些C++的可以參考一下?
參考 9 樓 sdhexu 的回復: 這就是c++的
OK,謝謝!
uj5u.com熱心網友回復:
參考 9 樓 sdhexu 的回復: 這就是c++的
感謝您提供的資料
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/29338.html
標籤:C++ 語言
上一篇:CLion如何輸出到外部控制臺?
下一篇:小學生數學測驗