āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāĻž (Design A Rate Limiter)
āĻāĻāĻāĻŋ āύā§āĻāĻā§āĻžāϰā§āĻ āϏāĻŋāϏā§āĻā§āĻŽā§ āĻā§āϞāĻžā§ā§āύā§āĻ āĻŦāĻž āϏāĻžāϰā§āĻāĻŋāϏā§āϰ āĻĒāĻžāĻ āĻžāύ⧠āĻā§āϰāĻžāĻĢāĻŋāĻā§āϰ āĻšāĻžāϰ (rate of traffic) āύāĻŋā§āύā§āϤā§āϰāĻŖ āĻāϰāϤ⧠āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰ (rate limiter) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§āĨ¤ āĻāĻāĻāĻāĻŋāĻāĻŋāĻĒāĻŋ (HTTP) āĻĻā§āύāĻŋā§āĻžā§, āĻāĻāĻāĻŋ āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϏāĻŽāϝāĻŧā§āϰ āĻŽāϧā§āϝ⧠āĻā§āϞāĻžā§ā§āύā§āĻā§āϰ āĻĒāĻžāĻ āĻžāύ⧠āϰāĻŋāĻā§ā§ā§āϏā§āĻā§āϰ āϏāĻāĻā§āϝāĻž āϏā§āĻŽāĻŋāϤ āĻāϰā§āĨ¤ āϝāĻĻāĻŋ āĻāĻĒāĻŋāĻāĻ (API) āϰāĻŋāĻā§ā§ā§āϏā§āĻā§āϰ āϏāĻāĻā§āϝāĻž āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰā§āϰ āύāĻŋāϰā§āϧāĻžāϰāĻŋāϤ āϏā§āĻŽāĻž (threshold) āĻ āϤāĻŋāĻā§āϰāĻŽ āĻāϰā§, āϤāĻŦā§ āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āϏāĻŽāϏā§āϤ āĻāϞ āĻŦā§āϞāĻ āĻŦāĻž āĻāĻāĻā§ āĻĻā§āĻā§āĻž āĻšā§āĨ¤ āύāĻŋāĻā§ āĻāϰ āĻā§ā§āĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āĻĻā§āĻā§āĻž āĻšāϞā§:
- āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻĒā§āϰāϤāĻŋ āϏā§āĻā§āύā§āĻĄā§ ā§¨āĻāĻŋāϰ āĻŦā§āĻļāĻŋ āĻĒā§āϏā§āĻ āϞāĻŋāĻāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āύāĻžāĨ¤
- āĻāĻĒāύāĻŋ āĻāĻāĻ āĻāĻāĻĒāĻŋ (IP) āĻ āĻŋāĻāĻžāύāĻž āĻĨā§āĻā§ āĻĻāĻŋāύ⧠āϏāϰā§āĻŦā§āĻā§āĻ ā§§ā§ĻāĻāĻŋ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύāĨ¤
- āĻāĻĒāύāĻŋ āĻāĻāĻ āĻĄāĻŋāĻāĻžāĻāϏ āĻĨā§āĻā§ āϏāĻĒā§āϤāĻžāĻšā§ ā§Ģ āĻŦāĻžāϰā§āϰ āĻŦā§āĻļāĻŋ āϰāĻŋāĻā§āĻžāϰā§āĻĄ (reward) āĻĻāĻžāĻŦāĻŋ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āύāĻžāĨ¤
āĻāĻ āĻ āϧā§āϝāĻžā§ā§, āĻāĻĒāύāĻžāĻā§ āĻāĻāĻāĻŋ āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāϤ⧠āĻŦāϞāĻž āĻšā§ā§āĻā§āĨ¤ āĻĄāĻŋāĻāĻžāĻāύ āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāĻā§, āĻāϞā§āύ āĻāĻāĻāĻŋ āĻāĻĒāĻŋāĻāĻ (API) āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āϏā§āĻŦāĻŋāϧāĻžāĻā§āϞ⧠āĻĻā§āĻā§ āύāĻŋāĻ:
- āĻĄāĻŋāύāĻžā§āĻžāϞ āĻ āĻĢ āϏāĻžāϰā§āĻāĻŋāϏ (Denial of Service āĻŦāĻž DoS) āĻ ā§āϝāĻžāĻāĻžāĻā§āϰ āĻāĻžāϰāĻŖā§ āϏā§āώā§āĻ āϰāĻŋāϏā§āϰā§āϏ āϏā§āĻāĻžāϰāĻā§āĻļāύ (resource starvation - āϰāĻŋāϏā§āϰā§āϏā§āϰ āĻāĻžāĻāϤāĻŋ) āĻĒā§āϰāϤāĻŋāϰā§āϧ āĻāϰ⧠[ā§§]: āĻŦā§ āĻŦā§ āĻā§āĻ āĻā§āĻŽā§āĻĒāĻžāύāĻŋāĻā§āϞā§āϰ āĻĒā§āϰāĻāĻžāĻļāĻŋāϤ āĻĒā§āϰāĻžā§ āϏāĻŦ āĻāĻĒāĻŋāĻāĻ-āϤā§āĻ āĻā§āύ⧠āύāĻž āĻā§āύ⧠āϧāϰāύā§āϰ āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻŋāĻ āĻĒā§āϰā§ā§āĻ āĻāϰāĻž āĻĨāĻžāĻā§āĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻā§āĻāĻāĻžāϰ (Twitter) āĻĒā§āϰāϤāĻŋ ā§Š āĻāĻŖā§āĻāĻžā§ āϏāϰā§āĻŦā§āĻā§āĻ ā§Šā§Ļā§ĻāĻāĻŋ āĻā§āĻāĻ āĻāϰāĻžāϰ āϏā§āĻŽāĻž āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰ⧠āĻĻā§ā§ [⧍]āĨ¤ āĻā§āĻāϞ āĻĄāĻāϏ (Google docs) āĻāĻĒāĻŋāĻāĻ-āϤ⧠āϰāĻŋāĻĄ āϰāĻŋāĻā§ā§ā§āϏā§āĻā§āϰ āĻāύā§āϝ āĻĄāĻŋāĻĢāϞā§āĻ āϞāĻŋāĻŽāĻŋāĻ āĻšāϞā§: āĻĒā§āϰāϤāĻŋ ā§Ŧā§Ļ āϏā§āĻā§āύā§āĻĄā§ āĻĒā§āϰāϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāύā§āϝ ā§Šā§Ļā§ĻāĻāĻŋ āϰāĻŋāĻā§ā§ā§āϏā§āĻ [ā§Š]āĨ¤ āĻāĻāĻāĻŋ āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰ āĻāĻā§āĻāĻžāĻā§āϤ āĻŦāĻž āĻ āύāĻŋāĻā§āĻāĻžāĻā§āϤâāϝā§āĻā§āύ⧠āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻāϞ āĻŦā§āϞāĻ āĻāϰāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ DoS āĻ ā§āϝāĻžāĻāĻžāĻ āĻĒā§āϰāϤāĻŋāϰā§āϧ āĻāϰā§āĨ¤
- āĻāϰāĻ āĻāĻŽāĻžāύ⧠(Reduce cost): āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āϏā§āĻŽāĻŋāϤ āĻāϰāĻžāϰ āĻ āϰā§āĻĨ āĻšāϞ⧠āĻāĻŽ āϏāĻžāϰā§āĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻāĻŦāĻ āĻāĻā§āĻ āĻ āĻā§āϰāĻžāϧāĻŋāĻāĻžāϰāĻĒā§āϰāĻžāĻĒā§āϤ (high priority) āĻāĻĒāĻŋāĻāĻāĻā§āϞā§āϰ āĻāύā§āϝ āĻŦā§āĻļāĻŋ āϰāĻŋāϏā§āϰā§āϏ āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰāĻžāĨ¤ āϝā§āϏāĻŦ āĻā§āĻŽā§āĻĒāĻžāύāĻŋ āĻĒā§āĻāĻĄ āĻĨāĻžāϰā§āĻĄ-āĻĒāĻžāϰā§āĻāĻŋ āĻāĻĒāĻŋāĻāĻ (paid third party APIs) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āϤāĻžāĻĻā§āϰ āĻāύā§āϝ āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻŋāĻ āĻ āϤā§āϝāύā§āϤ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖāĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āύāĻŋāĻā§āϰ āĻāĻā§āϏāĻāĻžāϰā§āύāĻžāϞ āĻāĻĒāĻŋāĻāĻāĻā§āϞā§āϰ āĻā§āώā§āϤā§āϰ⧠āĻāĻĒāύāĻžāĻā§ āĻĒā§āϰāϤāĻŋ-āĻāϞā§āϰ (per-call basis) āĻāĻĒāϰ āĻāĻžāϰā§āĻ āĻĻāĻŋāϤ⧠āĻšā§: āĻā§āϰā§āĻĄāĻŋāĻ āĻā§āĻ āĻāϰāĻž, āĻĒā§āĻŽā§āύā§āĻ āĻāϰāĻž, āĻšā§āϞāĻĨ āϰā§āĻāϰā§āĻĄ āϰāĻŋāĻā§āϰāĻŋāĻ āĻŦāĻž āϏāĻāĻā§āϰāĻš āĻāϰāĻž āĻāϤā§āϝāĻžāĻĻāĻŋāĨ¤ āĻāϰāĻ āĻāĻŽāĻžāύā§āϰ āĻāύā§āϝ āĻ āϧāϰāύā§āϰ āĻāϞā§āϰ āϏāĻāĻā§āϝāĻž āϏā§āĻŽāĻŋāϤ āĻāϰāĻž āĻ āĻĒāϰāĻŋāĻšāĻžāϰā§āϝāĨ¤
- āϏāĻžāϰā§āĻāĻžāϰ āĻāĻāĻžāϰāϞā§āĻĄā§āĻĄ (overloaded) āĻšāĻā§āĻž āϰā§āϧ āĻāϰā§: āϏāĻžāϰā§āĻāĻžāϰā§āϰ āϞā§āĻĄ āĻāĻŽāĻžāύā§āϰ āĻāύā§āϝ, āĻŦāĻ (bots) āĻŦāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻ āϏāĻĻāĻžāĻāϰāĻŖā§āϰ āĻāĻžāϰāĻŖā§ āĻāϏāĻž āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āϰāĻŋāĻā§ā§ā§āϏā§āĻāĻā§āϞā§āĻā§ āĻĢāĻŋāϞā§āĻāĻžāϰ āĻāϰ⧠āĻŦāĻžāĻĻ āĻĻāĻŋāϤ⧠āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§āĨ¤
āϧāĻžāĻĒ ā§§ - āϏāĻŽāϏā§āϝāĻžāĻāĻŋ āĻŦā§āĻāĻž āĻāĻŦāĻ āĻĄāĻŋāĻāĻžāĻāύā§āϰ āĻĒāϰāĻŋāϧāĻŋ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻž (Understand the problem and establish design scope)
āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻŋāĻ āĻŦāĻŋāĻāĻŋāύā§āύ āĻ ā§āϝāĻžāϞāĻāϰāĻŋāĻĻāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§, āϝāĻžāϰ āĻĒā§āϰāϤā§āϝā§āĻāĻāĻŋāϰāĻ āύāĻŋāĻāϏā§āĻŦ āϏā§āĻŦāĻŋāϧāĻž āĻ āĻ āϏā§āĻŦāĻŋāϧāĻž (pros and cons) āϰā§ā§āĻā§āĨ¤ āĻāύā§āĻāĻžāϰāĻāĻŋāĻā§āĻžāϰ āĻāĻŦāĻ āĻĒā§āϰāĻžāϰā§āĻĨā§āϰ āĻŽāϧā§āϝāĻāĻžāϰ āĻāĻĨā§āĻĒāĻāĻĨāύāĻāĻŋ āĻāĻŽāϰāĻž āĻ āĻŋāĻ āĻā§ āϧāϰāύā§āϰ āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰāĻāĻŋ āϤāĻž āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāϰāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĨ¤
āĻĒā§āϰāĻžāϰā§āĻĨā§: āĻāĻŽāϰāĻž āĻā§ āϧāϰāύā§āϰ āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāϤ⧠āϝāĻžāĻā§āĻāĻŋ? āĻāĻāĻŋ āĻāĻŋ āĻā§āϞāĻžā§ā§āύā§āĻ-āϏāĻžāĻāĻĄ (client-side) āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰ āύāĻžāĻāĻŋ āϏāĻžāϰā§āĻāĻžāϰ-āϏāĻžāĻāĻĄ (server-side) āĻāĻĒāĻŋāĻāĻ āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰ? āĻāύā§āĻāĻžāϰāĻāĻŋāĻā§āĻžāϰ: āĻāĻŽā§āĻāĻžāϰ āĻĒā§āϰāĻļā§āύāĨ¤ āĻāĻŽāϰāĻž āϏāĻžāϰā§āĻāĻžāϰ-āϏāĻžāĻāĻĄ āĻāĻĒāĻŋāĻāĻ āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰā§āϰ āĻāĻĒāϰ āĻĢā§āĻāĻžāϏ āĻāϰāĻāĻŋāĨ¤
āĻĒā§āϰāĻžāϰā§āĻĨā§: āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰ āĻāĻŋ āĻāĻāĻĒāĻŋ (IP), āĻāĻāĻāĻžāϰ āĻāĻāĻĄāĻŋ (user ID) āύāĻžāĻāĻŋ āĻ āύā§āϝ āĻā§āύ⧠āĻŦā§āĻļāĻŋāώā§āĻā§āϝā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻāĻĒāĻŋāĻāĻ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻĨā§āϰā§āĻāϞ (throttle āĻŦāĻž āύāĻŋā§āύā§āϤā§āϰāĻŖ) āĻāϰāĻŦā§? āĻāύā§āĻāĻžāϰāĻāĻŋāĻā§āĻžāϰ: āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰāĻāĻŋ āĻāĻŽāύāĻāĻžāĻŦā§ āĻĢā§āϞā§āĻā§āϏāĻŋāĻŦāϞ (flexible) āĻšāĻā§āĻž āĻāĻāĻŋāϤ āϝāĻžāϤ⧠āĻāĻāĻŋ āĻŦāĻŋāĻāĻŋāύā§āύ āϧāϰāύā§āϰ āĻĨā§āϰā§āĻāϞ āϰā§āϞāϏ (throttle rules) āϏāĻžāĻĒā§āϰā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻĒā§āϰāĻžāϰā§āĻĨā§: āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āϏā§āĻā§āϞ (scale) āĻŦāĻž āĻāĻāĻžāϰ āĻā§āĻŽāύ? āĻāĻāĻŋ āĻāĻŋ āĻā§āύ⧠āϏā§āĻāĻžāϰā§āĻāĻāĻĒā§āϰ āĻāύā§āϝ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāĻā§āĻā§, āύāĻžāĻāĻŋ āĻŦāĻŋāĻļāĻžāϞ āĻāĻāĻāĻžāϰ āĻŦā§āϏ (user base) āĻĨāĻžāĻāĻž āĻŦā§ āĻā§āύ⧠āĻā§āĻŽā§āĻĒāĻžāύāĻŋāϰ āĻāύā§āϝ? āĻāύā§āĻāĻžāϰāĻāĻŋāĻā§āĻžāϰ: āϏāĻŋāϏā§āĻā§āĻŽāĻāĻŋāĻā§ āĻ āĻŦāĻļā§āϝāĻ āĻŦāĻŋāĻĒā§āϞ āϏāĻāĻā§āϝāĻ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻšā§āϝāĻžāύā§āĻĄā§āϞ āĻāϰāϤ⧠āĻĒāĻžāϰāϤ⧠āĻšāĻŦā§āĨ¤
āĻĒā§āϰāĻžāϰā§āĻĨā§: āϏāĻŋāϏā§āĻā§āĻŽāĻāĻŋ āĻāĻŋ āĻāĻāĻāĻŋ āĻĄāĻŋāϏā§āĻā§āϰāĻŋāĻŦāĻŋāĻāĻā§āĻĄ āĻāύāĻāĻžā§āϰāύāĻŽā§āύā§āĻā§ (distributed environment) āĻāĻžāĻ āĻāϰāĻŦā§? āĻāύā§āĻāĻžāϰāĻāĻŋāĻā§āĻžāϰ: āĻšā§āϝāĻžāĻāĨ¤
āĻĒā§āϰāĻžāϰā§āĻĨā§: āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰāĻāĻŋ āĻāĻŋ āĻāϞāĻžāĻĻāĻž āĻā§āύ⧠āϏāĻžāϰā§āĻāĻŋāϏ āĻšāĻŦā§ āύāĻžāĻāĻŋ āĻāĻāĻŋ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύā§āϰ āĻā§āĻĄā§āĻ āĻāĻŽāĻĒā§āϞāĻŋāĻŽā§āύā§āĻ āĻŦāĻž āĻĒā§āϰā§ā§āĻ āĻāϰāĻž āĻāĻāĻŋāϤ? āĻāύā§āĻāĻžāϰāĻāĻŋāĻā§āĻžāϰ: āĻāĻāĻŋ āĻĄāĻŋāĻāĻžāĻāύā§āϰ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ, āϝāĻž āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāĻĒāύāĻžāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰāĻā§āĨ¤
āĻĒā§āϰāĻžāϰā§āĻĨā§: āϝā§āϏāĻŦ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻĨā§āϰā§āĻāϞ āĻŦāĻž āĻāĻāĻā§ āĻĻā§āĻā§āĻž āĻšāĻŦā§, āϤāĻžāĻĻā§āϰ āĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰ āĻāύāĻĢāϰā§āĻŽ āĻŦāĻž āĻāĻžāύāĻžāϤ⧠āĻšāĻŦā§? āĻāύā§āĻāĻžāϰāĻāĻŋāĻā§āĻžāϰ: āĻšā§āϝāĻžāĻāĨ¤
āϰāĻŋāĻā§ā§āĻžāϰāĻŽā§āύā§āĻāϏ (Requirements) āĻŦāĻž āĻŽā§āϞ āĻāĻžāĻšāĻŋāĻĻāĻžāϏāĻŽā§āĻš
āϏāĻŋāϏā§āĻā§āĻŽāĻāĻŋāϰ āϰāĻŋāĻā§ā§āĻžāϰāĻŽā§āύā§āĻāĻā§āϞā§āϰ āĻāĻāĻāĻŋ āϏāĻžāϰāϏāĻāĻā§āώā§āĻĒ āύāĻŋāĻā§ āĻĻā§āĻā§āĻž āĻšāϞā§:
- āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āϰāĻŋāĻā§ā§ā§āϏā§āĻāĻā§āϞā§āĻā§ āύāĻŋāĻā§āĻāϤāĻāĻžāĻŦā§ āϏā§āĻŽāĻžāĻŦāĻĻā§āϧ (limit) āĻāϰāĻžāĨ¤
- āϞ⧠āϞā§āϝāĻžāĻā§āύā§āϏāĻŋ (Low latency): āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰā§āϰ āĻāĻžāϰāĻŖā§ āϝā§āύ āĻāĻāĻāĻāĻŋāĻāĻŋāĻĒāĻŋ āϰā§āϏāĻĒāύā§āϏ āĻāĻžāĻāĻŽ (HTTP response time) āϧā§āϰ āύāĻž āĻšā§ā§ āϝāĻžā§āĨ¤
- āϝāϤāĻāĻž āϏāĻŽā§āĻāĻŦ āĻāĻŽ āĻŽā§āĻŽāϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāĨ¤
- āĻĄāĻŋāϏā§āĻā§āϰāĻŋāĻŦāĻŋāĻāĻā§āĻĄ āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻŋāĻ (Distributed rate limiting): āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰāĻāĻŋ āĻāĻāĻžāϧāĻŋāĻ āϏāĻžāϰā§āĻāĻžāϰ āĻŦāĻž āĻĒā§āϰāϏā§āϏā§āϰ āĻŽāϧā§āϝ⧠āĻļā§ā§āĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
- āĻāĻā§āϏā§āĻĒāĻļāύ āĻšā§āϝāĻžāύā§āĻĄā§āϞāĻŋāĻ (Exception handling): āϝāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻĨā§āϰā§āĻāϞ āĻŦāĻž āĻāĻāĻā§ āĻĻā§āĻā§āĻž āĻšāĻŦā§, āϤāĻāύ āϤāĻžāĻĻā§āϰ āĻāĻžāĻā§ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāĻā§āϏā§āĻĒāĻļāύ (exceptions) āĻŦāĻž āĻŦāĻžāϰā§āϤāĻž āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻžāĨ¤
- āĻšāĻžāĻ āĻĢāϞā§āĻ āĻāϞāĻžāϰā§āύā§āϏ (High fault tolerance): āϰā§āĻ āϞāĻŋāĻŽāĻŋāĻāĻžāϰā§āϰ āĻā§āύ⧠āϏāĻŽāϏā§āϝāĻž āĻšāϞ⧠(āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āϝāĻĻāĻŋ āĻā§āϝāĻžāĻļ āϏāĻžāϰā§āĻāĻžāϰ āĻ āĻĢāϞāĻžāĻāύ⧠āĻāϞ⧠āϝāĻžā§), āĻāĻāĻŋ āϝā§āύ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āϏāĻŋāϏā§āĻā§āĻŽāĻā§ āĻĒā§āϰāĻāĻžāĻŦāĻŋāϤ āύāĻž āĻāϰā§āĨ¤