Giả sử, tôi có các tiến trình P chạy một số logic nghiệp vụ trên N máy vật lý. Các quá trình này gọi một số dịch vụ web S, nói. Tôi muốn đảm bảo rằng không quá X cuộc gọi được thực hiện cho dịch vụ S mỗi giây bởi tất cả các quy trình P được kết hợp.Làm cách nào để triển khai giới hạn tốc độ phân phối?
Giải pháp như vậy có thể được triển khai như thế nào?
Giới hạn tốc độ của Google Guava hoạt động tốt cho các quy trình chạy trên một hộp, nhưng không nằm trong thiết lập được phân phối.
Có bất kỳ giải pháp chuẩn, sẵn sàng để sử dụng nào có sẵn cho JAVA không? [có thể dựa trên sở thú]
Cảm ơn!
Nhà quản lý (một ứng dụng Java ZooKeeper thường được sử dụng) không có công thức chính xác này. Tuy nhiên Curator có một công thức phân phối dài có thể được sử dụng làm cơ sở cho việc này: http://curator.apache.org/curator-recipes/distributed-atomic-long.html – Randgalt
Hm, không được chia sẻ semaphore một công thức phù hợp cho trường hợp này? http://curator.apache.org/curator-recipes/shared-semaphore.html –
Vấn đề với semaphore được chia sẻ là phải có ai đó giải phóng tất cả các khóa mỗi giây.Tôi nghĩ phân phối nguyên tử dài hoặc số nguyên sẽ phù hợp, nhưng Tôi đã không thực hiện giải pháp của tôi được nêu ra .. vì vậy không chắc chắn –