Оптимизация высоконагруженного сервиса
Условие задачи
Требуется разработать защитный механизм от перегрузки сервиса, который обрабатывает до 500 000 запросов в минуту, при этом результат запроса остаётся актуальным в течение 10 секунд. Необходимо предложить решение, позволяющее снизить нагрузку и предотвратить перегрузку, обеспечив при этом быструю и стабильную отдачу актуальных данных
gofunc getBtcCourseHandler(w http.ResponseWriter, r *http.Request) {
// Генерация случайного числа вместо реального курса BTC.
_, err := fmt.Fprintf(w, "The simulated BTC course is: %.2f USD", getCourse())
if err != nil {
log.Print(err)
}
}
func main() {
http.HandleFunc("/getCourse", getBtcCourseHandler)
fmt.Println("Server is running on port 8080...")
err := http.ListenAndServe(":8080", nil)
if err != nil {
fmt.Println("Server failed:", err)
}
}
func getCourse() float64 {
rand.Seed(time.Now().UnixNano())
// volatility от 30000-80000
btcCourse := rand.Float64()*50000 + 30000
return btcCourse
}