最近了解到用mq解決高併發問題
本人也用過activemq,並不精通,想來想去有個問題
假設大量訪問衝進來,servlet做client把請求發給activemq,發給服務處理端,解決高併發問題
但是服務處理完,響應怎麼辦呢
莫非作為client的servlet ,也訂閱乙個響應佇列麼,等服務在發回來
覺得這樣的話,高併發問題是解決了,但是會不會很慢
菜鳥求幫助
什麼分都是小事
解決方案
用mq來將耗時比較長或耗費資源的請求排隊,非同步處理,減輕伺服器壓力增加穩定性。
假如是高併發的實時請求,本人個人覺得不適用這個方案。假如是為了高併發,本人覺得應該朝解決高併發的方向考慮。集群、分布式、動靜分離、資料庫讀寫分離之類的。
web的話,只能客戶端頁面輪訓處理結果。
原因是,據本人個人了解啊,現在web沒有成熟的向客戶端推送處理結果的技術。或是本人沒弄好,假如有知道的,還望提點下。
把客戶行為變為非同步,就是提交後,只通知收到請求,需要客戶再提交查詢請求,檢視結果
不會的,我們之前也是乙個請求佇列乙個響應佇列 ,其實中間雖然做了n多操作,但是實際上呈現出來的速度還是很快的
非同步模式
1 .request -》 add to queue -> response job id (and callback address)
2. client get callback address and listening wait for callback
3. serve get job from queue and do logic
4. notify the result to callback address.
多執行緒高併發
修飾靜態方法鎖的是class,非靜態鎖方法鎖的是this,只有拿到這個物件才可以繼續執行 synchronized是可重入鎖 執行緒1的方法1呼叫執行緒2的方法2,判斷是同一把鎖,在同乙個執行緒,可以呼叫。synchronized的鎖公升級 hotsport 鎖公升級過程 保證執行緒可見性 mesi...
多執行緒高併發
個人總結,帶有個人主觀,請選擇性 1,實現 runable 2,使用 thread 3,執行緒池建立 executorse newcachedthreadpool 其實哪有那麼多建立方式,本質上都是實現了runable 介面。只列出大部分使用的方法,並未代表所有執行緒方法,後續會新增實際的例子,以供...
高併發和多執行緒
高併發和多執行緒 總是被一起提起,給人感覺兩者好像相等,實則高併發 多執行緒 多執行緒是完成任務的一種方法,高併發是系統執行的一種狀態,通過多執行緒有助於系統承受高併發狀態的實現。高併發是一種系統執行過程中遇到的一種 短時間內遇到大量操作請求 的情況,主要發生在web系統集中大量訪問或者socket...