[英]How to scale? Make Rest API calls thousands times and update database
for (Transaction id : transactionIds) {
1. db update call
2. response = post request Rest API call
3. catch excepetion and update the db (transactoin failed)
4. db update call with above response
}
問題陳述 - 我使用需要按上面給出的處理的 cron 作業從 transactionIds 中的 db 獲得 5000 多個事務。 使用上述方法,而我的上一個循環正在進行,接下來 5000 多個事務進入循環,因為 cron 作業在 2 分鍾內運行。 我已經檢查了多個解決方案( .parallelStream() 與 ForkJoinPool / ListenableFuture ,但無法確定哪個是擴展上述代碼的最佳解決方案。
解決這個問題的一種方法是使用 Kafka 來消費消息。 您可以增加 pod 的數量(希望您使用的是微服務),並且每個 pod 都可以成為消費者組的一部分。 這將有效地消除代碼中的循環,並且可以根據需要增加消費者以處理任何規模。
基於消息的方法的另一個優點是您可以有多種交付模式(至少一次,最多一次等),並且有很多開源庫可用於查看主題的統計信息(消息消費和生產之間的滯后在一個主題中)。
如果這是不可能的,
repository.saveAll(yourentitycollection)
//循環后只調用一個DB,可以批量
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.