1 集羣環境下,利用多實例處理複雜的單一請求
我們開發之中常常遇到這樣的場景,單一的一個請求處理某一批數據,
或者對某一批數據進行計算,例如定時任務需要批量處理某些數據,
那麼定時任務的job服務,調用對應服務的時候,由網關分配了某一個實例進行處理,
這種場景,如果用普通的開發方式會有一些弊端,無法合理的利用服務器資源,
出現某一個實例一直高負荷運轉,其他實例空閒的情況,
對請求的處理也花了更多的執行時間。
## 2 思路:
利用生產者消費者的方式,單一的請求負責生產數據,
獲取到需要計算的資源放到共享隊列裏,利用每個服務實例實現多消費者去消費。
## 2 方案:
定時任務調用的接口只負責將待處理的數據放到數據庫,或者redis,
每個實例啓動對應的監控線程或線程池,檢測到數據,
則加鎖取一部分數據(根據計算機的處理能力)進行處理,處理完之後再次檢測,
如果有數據則繼續獲取進行處理。獲取數據的同時修改當前數據的狀態,
防止其他實例再次獲取,引起重複消費。