Web程式的高併發場景下的資料同步

2021-10-09 20:16:46 字數 505 閱讀 2259

在用servlet構建的web應用時如果不注意執行緒安全的問題,會使所寫的servlet程式有難以發現的錯誤。其實所有web程式實現都需要注意這些問題。

1、實現singlethreadmodel介面(將引起大量的系統開銷)

2、同步對共享資料的操作:被同步的**塊在同一時刻只能有乙個執行緒執行它,使得其同時處理客戶請求的吞吐量降低,而且很多客戶處於阻塞狀態

使用synchronized 關鍵字能保證一次只有乙個執行緒可以訪問被保護的區段,在本**中可以通過同步塊操作來保證servlet的執行緒安全。

3、避免使用例項變數。執行緒安全問題還有些是由例項變數造成的,只要在servlet裡面的任何方法裡面都不使用例項變數,那麼該servlet就是執行緒安全的。

4、通過mysql,redis的鎖來實現。樂觀鎖和悲觀鎖。

同乙個使用者的多個請求結果一致。

比如通過ip,request id等進行請求過濾。

高併發場景下的限流策略

目錄快取 降級 限流 漏桶演算法 令牌桶演算法 漏桶演算法與令牌桶演算法的區別 有效提公升熱點資料的訪問效率,在高併發 大流量的場景降低服務端壓力。當訪問量快速增長 服務可能會出現一些問題 響應超時 或者會存在非核心服務影響到核心流程的效能時,仍然需要保證服務的可用性,即便是有損服務。所以意味著我們...

高併發場景下的請求合併

一.在專案中,我們經常用到如下方式進行介面呼叫 有多少請求訪問,就會呼叫多少次第三方介面或資料庫,這樣的情況在高併發場景下很容易出現執行緒被打滿,返回結果慢。為了優化這個介面,後台可以將相同的請求進行合併,然後呼叫批量的查詢介面。請求合併 下面上 已查詢資料庫舉例 1.建立請求類 data buil...

高併發場景下ArrayList的執行緒安全問題

arraylist是我們常用的資料結構,在併發場景下是執行緒不安全的。在讀多寫少的場景下,我們一般會用讀寫鎖 readwritelock來保證共享物件的執行緒安全性。public object read public void write 這裡能解決部分問題。但是還是存在當有乙個執行緒在write的...