API ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಕುರಿತು ಒಂದು ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿ. ಇದು ಅದರ ಪ್ರಾಮುಖ್ಯತೆ, ವಿಭಿನ್ನ ಅನುಷ್ಠಾನ ತಂತ್ರಗಳು, ಮತ್ತು ದೃಢವಾದ ಹಾಗೂ ಸ್ಕೇಲೆಬಲ್ APIಗಳನ್ನು ನಿರ್ಮಿಸಲು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.
API ರೇಟ್ ಲಿಮಿಟಿಂಗ್: ಸ್ಕೇಲೆಬಲ್ APIಗಳಿಗಾಗಿ ಅನುಷ್ಠಾನ ತಂತ್ರಗಳು
ಇಂದಿನ ಅಂತರ್ಸಂಪರ್ಕಿತ ಜಗತ್ತಿನಲ್ಲಿ, APIಗಳು (ಅಪ್ಲಿಕೇಶನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಇಂಟರ್ಫೇಸ್ಗಳು) ಅಸಂಖ್ಯಾತ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಮತ್ತು ಸೇವೆಗಳ ಬೆನ್ನೆಲುಬಾಗಿವೆ. ಅವು ವಿಭಿನ್ನ ಸಿಸ್ಟಂಗಳ ನಡುವೆ ಸುಗಮ ಸಂವಹನ ಮತ್ತು ಡೇಟಾ ವಿನಿಮಯವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತವೆ. ಆದಾಗ್ಯೂ, APIಗಳ ಮೇಲಿನ ಹೆಚ್ಚುತ್ತಿರುವ ಅವಲಂಬನೆಯು ಸವಾಲುಗಳನ್ನು ಸಹ ಪರಿಚ-ಯಿಸುತ್ತದೆ, ವಿಶೇಷವಾಗಿ ಅವುಗಳ ಸ್ಕೇಲೆಬಿಲಿಟಿ ಮತ್ತು ಭದ್ರತೆಗೆ ಸಂಬಂಧಿಸಿದಂತೆ. API ನಿರ್ವಹಣೆಯ ಒಂದು ನಿರ್ಣಾಯಕ ಅಂಶವೆಂದರೆ ರೇಟ್ ಲಿಮಿಟಿಂಗ್, ಇದು ದುರುಪಯೋಗವನ್ನು ತಡೆಯಲು, ನ್ಯಾಯೋಚಿತ ಬಳಕೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಮತ್ತು ನಿಮ್ಮ API ಮೂಲಸೌಕರ್ಯದ ಒಟ್ಟಾರೆ ಸ್ಥಿರತೆಯನ್ನು ಕಾಪಾಡಿಕೊಳ್ಳುವಲ್ಲಿ ಪ್ರಮುಖ ಪಾತ್ರ ವಹಿಸುತ್ತದೆ.
API ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಎಂದರೇನು?
API ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಎನ್ನುವುದು ಒಂದು ನಿರ್ದಿಷ್ಟ ಸಮಯದ ವಿಂಡೋದಲ್ಲಿ ಕ್ಲೈಂಟ್ API ಗೆ ಮಾಡಬಹುದಾದ ವಿನಂತಿಗಳ ಸಂಖ್ಯೆಯನ್ನು ನಿಯಂತ್ರಿಸಲು ಬಳಸುವ ಒಂದು ತಂತ್ರವಾಗಿದೆ. ಇದು ಗೇಟ್ಕೀಪರ್ನಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಡಿನೈಯಲ್ ಆಫ್ ಸರ್ವಿಸ್ (DoS) ಮತ್ತು ಡಿಸ್ಟ್ರಿಬ್ಯೂಟೆಡ್ ಡಿನೈಯಲ್ ಆಫ್ ಸರ್ವಿಸ್ (DDoS) ನಂತಹ ದುರುದ್ದೇಶಪೂರಿತ ದಾಳಿಗಳನ್ನು ತಡೆಯುತ್ತದೆ, ಜೊತೆಗೆ ಕಳಪೆಯಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಿದ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಂದ ಉಂಟಾಗುವ ಅನಿರೀಕ್ಷಿತ ಓವರ್ಲೋಡ್ ಅನ್ನು ತಡೆಯುತ್ತದೆ. ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮೂಲಕ, ನೀವು ನಿಮ್ಮ API ಸಂಪನ್ಮೂಲಗಳನ್ನು ರಕ್ಷಿಸಬಹುದು, ಸ್ಥಿರವಾದ ಬಳಕೆದಾರ ಅನುಭವವನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬಹುದು ಮತ್ತು ಸೇವಾ ಅಡಚಣೆಗಳನ್ನು ತಡೆಯಬಹುದು.
ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಏಕೆ ಮುಖ್ಯ?
ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಹಲವಾರು ಕಾರಣಗಳಿಗಾಗಿ ಅತ್ಯಗತ್ಯ:
- ದುರುಪಯೋಗ ತಡೆಗಟ್ಟುವಿಕೆ: ದುರುದ್ದೇಶಪೂರಿತ ವ್ಯಕ್ತಿಗಳು ನಿಮ್ಮ API ಅನ್ನು ಅತಿಯಾದ ವಿನಂತಿಗಳಿಂದ ತುಂಬಿ, ನಿಮ್ಮ ಸರ್ವರ್ಗಳನ್ನು ಕ್ರ್ಯಾಶ್ ಮಾಡುವ ಅಥವಾ ಗಮನಾರ್ಹ ವೆಚ್ಚಗಳನ್ನು ಉಂಟುಮಾಡುವ ಸಾಧ್ಯತೆಯನ್ನು ಇದು ತಡೆಯುತ್ತದೆ.
- ನ್ಯಾಯೋಚಿತ ಬಳಕೆ ಖಚಿತಪಡಿಸುವುದು: ಇದು ಎಲ್ಲಾ ಬಳಕೆದಾರರಿಗೆ ನಿಮ್ಮ API ಸಂಪನ್ಮೂಲಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ನ್ಯಾಯಯುತ ಅವಕಾಶವನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ, ಯಾವುದೇ ಒಬ್ಬ ಬಳಕೆದಾರರು ಸೇವೆಯನ್ನು ಏಕಸ್ವಾಮ್ಯಗೊಳಿಸುವುದನ್ನು ತಡೆಯುತ್ತದೆ.
- API ಸ್ಥಿರತೆಯನ್ನು ಕಾಪಾಡಿಕೊಳ್ಳುವುದು: ವಿನಂತಿಯ ದರವನ್ನು ನಿಯಂತ್ರಿಸುವ ಮೂಲಕ, ನಿಮ್ಮ API ಓವರ್ಲೋಡ್ ಆಗುವುದನ್ನು ತಡೆಯಬಹುದು, ಸ್ಥಿರವಾದ ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ಲಭ್ಯತೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬಹುದು.
- ಮೂಲಸೌಕರ್ಯವನ್ನು ರಕ್ಷಿಸುವುದು: ಇದು ನಿಮ್ಮ ಆಧಾರವಾಗಿರುವ ಮೂಲಸೌಕರ್ಯವನ್ನು ಅತಿಯಾದ ಟ್ರಾಫಿಕ್ನಿಂದ ರಕ್ಷಿಸುತ್ತದೆ, ಸಂಭವನೀಯ ನಿಲುಗಡೆಗಳು ಮತ್ತು ಡೇಟಾ ನಷ್ಟವನ್ನು ತಡೆಯುತ್ತದೆ.
- ನಗದೀಕರಣ ಮತ್ತು ಶ್ರೇಣೀಕೃತ ಪ್ರವೇಶ: ಬಳಕೆಯ ಆಧಾರದ ಮೇಲೆ ವಿಭಿನ್ನ ಹಂತದ API ಪ್ರವೇಶವನ್ನು ನೀಡಲು ಇದು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ನಿಮ್ಮ API ಅನ್ನು ನಗದೀಕರಿಸಲು ಮತ್ತು ವಿಭಿನ್ನ ಗ್ರಾಹಕರ ಅಗತ್ಯಗಳನ್ನು ಪೂರೈಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
ಅನುಷ್ಠಾನ ತಂತ್ರಗಳು
API ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಹಲವಾರು ವಿಭಿನ್ನ ವಿಧಾನಗಳಿವೆ, ಪ್ರತಿಯೊಂದಕ್ಕೂ ತನ್ನದೇ ಆದ ಅನುಕೂಲಗಳು ಮತ್ತು ಅನಾನುಕೂಲತೆಗಳಿವೆ. ಇಲ್ಲಿ ಕೆಲವು ಸಾಮಾನ್ಯ ತಂತ್ರಗಳನ್ನು ನೀಡಲಾಗಿದೆ:
1. ಟೋಕನ್ ಬಕೆಟ್ ಅಲ್ಗಾರಿದಮ್
ಟೋಕನ್ ಬಕೆಟ್ ಅಲ್ಗಾರಿದಮ್ ರೇಟ್ ಲಿಮಿಟಿಂಗ್ಗೆ ಜನಪ್ರಿಯ ಮತ್ತು ಹೊಂದಿಕೊಳ್ಳುವ ವಿಧಾನವಾಗಿದೆ. ಟೋಕನ್ಗಳನ್ನು ಹೊಂದಿರುವ ಬಕೆಟ್ ಅನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಪ್ರತಿ ವಿನಂತಿಯು ಒಂದು ಟೋಕನ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. ಟೋಕನ್ಗಳು ಲಭ್ಯವಿದ್ದರೆ, ವಿನಂತಿಯನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗುತ್ತದೆ; ಇಲ್ಲದಿದ್ದರೆ, ಅದನ್ನು ತಿರಸ್ಕರಿಸಲಾಗುತ್ತದೆ ಅಥವಾ ವಿಳಂಬಗೊಳಿಸಲಾಗುತ್ತದೆ. ಬಕೆಟ್ ಅನ್ನು ನಿಯತಕಾಲಿಕವಾಗಿ ನಿರ್ದಿಷ್ಟ ದರದಲ್ಲಿ ಟೋಕನ್ಗಳಿಂದ ಮರುಪೂರಣ ಮಾಡಲಾಗುತ್ತದೆ.
ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ:
- ಪ್ರತಿ ಕ್ಲೈಂಟ್ಗೆ ಗರಿಷ್ಠ ಸಾಮರ್ಥ್ಯ ಮತ್ತು ಮರುಪೂರಣ ದರದೊಂದಿಗೆ ಬಕೆಟ್ ಅನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ.
- ಪ್ರತಿ ಬಾರಿ ಕ್ಲೈಂಟ್ ವಿನಂತಿಯನ್ನು ಮಾಡಿದಾಗ, ಬಕೆಟ್ನಿಂದ ಒಂದು ಟೋಕನ್ ಅನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ.
- ಬಕೆಟ್ ಖಾಲಿಯಾಗಿದ್ದರೆ, ಟೋಕನ್ಗಳು ಲಭ್ಯವಾಗುವವರೆಗೆ ವಿನಂತಿಯನ್ನು ತಿರಸ್ಕರಿಸಲಾಗುತ್ತದೆ ಅಥವಾ ವಿಳಂಬಗೊಳಿಸಲಾಗುತ್ತದೆ.
- ಬಕೆಟ್ ಅನ್ನು ಸ್ಥಿರ ದರದಲ್ಲಿ, ಅದರ ಗರಿಷ್ಠ ಸಾಮರ್ಥ್ಯದವರೆಗೆ ಟೋಕನ್ಗಳಿಂದ ಮರುಪೂರಣ ಮಾಡಲಾಗುತ್ತದೆ.
ಪ್ರಯೋಜನಗಳು:
- ಹೊಂದಿಕೊಳ್ಳುವಿಕೆ: ವಿಭಿನ್ನ API ಅವಶ್ಯಕತೆಗಳಿಗೆ ಸರಿಹೊಂದುವಂತೆ ಮರುಪೂರಣ ದರ ಮತ್ತು ಬಕೆಟ್ ಗಾತ್ರವನ್ನು ಸರಿಹೊಂದಿಸಬಹುದು.
- ಬರ್ಸ್ಟ್ ಅನುಮತಿ: ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಅನ್ನು ಪ್ರಚೋದಿಸದೆ ಸಾಂದರ್ಭಿಕ ಟ್ರಾಫಿಕ್ ಬರ್ಸ್ಟ್ಗಳಿಗೆ ಅನುಮತಿಸುತ್ತದೆ.
- ಅನುಷ್ಠಾನಕ್ಕೆ ಸುಲಭ: ಕಾರ್ಯಗತಗೊಳಿಸಲು ಮತ್ತು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ತುಲನಾತ್ಮಕವಾಗಿ ಸರಳವಾಗಿದೆ.
ಅನಾನುಕೂಲಗಳು:
- ಸಂಕೀರ್ಣತೆ: ಪ್ರತಿ ಕ್ಲೈಂಟ್ಗೆ ಬಕೆಟ್ಗಳು ಮತ್ತು ಟೋಕನ್ಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಅಗತ್ಯವಿದೆ.
- ಕಾನ್ಫಿಗರೇಶನ್: ಮರುಪೂರಣ ದರ ಮತ್ತು ಬಕೆಟ್ ಗಾತ್ರದ ಎಚ್ಚರಿಕೆಯ ಸಂರಚನೆಯ ಅಗತ್ಯವಿದೆ.
ಉದಾಹರಣೆ:
ನೀವು ಪ್ರತಿ ಬಳಕೆದಾರರಿಗೆ ಪ್ರತಿ ಸೆಕೆಂಡಿಗೆ 10 ವಿನಂತಿಗಳ ದರ ಮಿತಿಯನ್ನು ಹೊಂದಿರುವ API ಅನ್ನು ಹೊಂದಿದ್ದೀರಿ ಎಂದು ಭಾವಿಸೋಣ, ಟೋಕನ್ ಬಕೆಟ್ ಅಲ್ಗಾರಿದಮ್ ಬಳಸಿ. ಪ್ರತಿ ಬಳಕೆದಾರರು 10 ಟೋಕನ್ಗಳನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಬಲ್ಲ ಬಕೆಟ್ ಅನ್ನು ಹೊಂದಿರುತ್ತಾರೆ. ಪ್ರತಿ ಸೆಕೆಂಡಿಗೆ, ಬಕೆಟ್ 10 ಟೋಕನ್ಗಳಿಂದ (ಗರಿಷ್ಠ ಸಾಮರ್ಥ್ಯದವರೆಗೆ) ಮರುಪೂರಣಗೊಳ್ಳುತ್ತದೆ. ಒಬ್ಬ ಬಳಕೆದಾರ ಒಂದು ಸೆಕೆಂಡಿನಲ್ಲಿ 15 ವಿನಂತಿಗಳನ್ನು ಮಾಡಿದರೆ, ಮೊದಲ 10 ವಿನಂತಿಗಳು ಟೋಕನ್ಗಳನ್ನು ಬಳಸುತ್ತವೆ, ಮತ್ತು ಉಳಿದ 5 ವಿನಂತಿಗಳನ್ನು ತಿರಸ್ಕರಿಸಲಾಗುತ್ತದೆ ಅಥವಾ ವಿಳಂಬಗೊಳಿಸಲಾಗುತ್ತದೆ.
2. ಲೀಕಿ ಬಕೆಟ್ ಅಲ್ಗಾರಿದಮ್
ಲೀಕಿ ಬಕೆಟ್ ಅಲ್ಗಾರಿದಮ್ ಟೋಕನ್ ಬಕೆಟ್ಗೆ ಹೋಲುತ್ತದೆ, ಆದರೆ ಇದು ವಿನಂತಿಗಳ ಹೊರಹರಿವನ್ನು ನಿಯಂತ್ರಿಸುವುದರ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುತ್ತದೆ. ಸ್ಥಿರ ಸೋರಿಕೆ ದರವನ್ನು ಹೊಂದಿರುವ ಬಕೆಟ್ ಅನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಒಳಬರುವ ವಿನಂತಿಗಳನ್ನು ಬಕೆಟ್ಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ, ಮತ್ತು ಬಕೆಟ್ ಸ್ಥಿರ ದರದಲ್ಲಿ ವಿನಂತಿಗಳನ್ನು ಸೋರಿಕೆ ಮಾಡುತ್ತದೆ. ಬಕೆಟ್ ತುಂಬಿ ಹೋದರೆ, ವಿನಂತಿಗಳನ್ನು ಕೈಬಿಡಲಾಗುತ್ತದೆ.
ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ:
- ಪ್ರತಿ ಕ್ಲೈಂಟ್ಗೆ ಗರಿಷ್ಠ ಸಾಮರ್ಥ್ಯ ಮತ್ತು ಸೋರಿಕೆ ದರದೊಂದಿಗೆ ಬಕೆಟ್ ಅನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ.
- ಒಳಬರುವ ಪ್ರತಿಯೊಂದು ವಿನಂತಿಯನ್ನು ಬಕೆಟ್ಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ.
- ಬಕೆಟ್ ಸ್ಥಿರ ದರದಲ್ಲಿ ವಿನಂತಿಗಳನ್ನು ಸೋರಿಕೆ ಮಾಡುತ್ತದೆ.
- ಬಕೆಟ್ ತುಂಬಿದ್ದರೆ, ಒಳಬರುವ ವಿನಂತಿಗಳನ್ನು ಕೈಬಿಡಲಾಗುತ್ತದೆ.
ಪ್ರಯೋಜನಗಳು:
- ಸುಗಮ ಟ್ರಾಫಿಕ್: ವಿನಂತಿಗಳ ಸುಗಮ ಹೊರಹರಿವನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ, ಟ್ರಾಫಿಕ್ ಬರ್ಸ್ಟ್ಗಳನ್ನು ತಡೆಯುತ್ತದೆ.
- ಸರಳ ಅನುಷ್ಠಾನ: ಕಾರ್ಯಗತಗೊಳಿಸಲು ತುಲನಾತ್ಮಕವಾಗಿ ಸರಳವಾಗಿದೆ.
ಅನಾನುಕೂಲಗಳು:
- ಸೀಮಿತ ಬರ್ಸ್ಟ್ ಅನುಮತಿ: ಟೋಕನ್ ಬಕೆಟ್ ಅಲ್ಗಾರಿದಮ್ನಂತೆ ಸುಲಭವಾಗಿ ಬರ್ಸ್ಟ್ ಟ್ರಾಫಿಕ್ಗೆ ಅನುಮತಿಸುವುದಿಲ್ಲ.
- ಕೈಬಿಟ್ಟ ವಿನಂತಿಗಳ ಸಾಧ್ಯತೆ: ಬಕೆಟ್ ತುಂಬಿ ಹೋದರೆ ವಿನಂತಿಗಳನ್ನು ಕೈಬಿಡಲು ಕಾರಣವಾಗಬಹುದು.
ಉದಾಹರಣೆ:
ಚಿತ್ರಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವ API ಅನ್ನು ಪರಿಗಣಿಸಿ. ಸೇವೆಯು ಓವರ್ಲೋಡ್ ಆಗುವುದನ್ನು ತಡೆಯಲು, ಪ್ರತಿ ಸೆಕೆಂಡಿಗೆ 5 ಚಿತ್ರಗಳ ಸೋರಿಕೆ ದರದೊಂದಿಗೆ ಲೀಕಿ ಬಕೆಟ್ ಅನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ. ಈ ದರವನ್ನು ಮೀರಿದ ಯಾವುದೇ ಚಿತ್ರ ಅಪ್ಲೋಡ್ಗಳನ್ನು ಕೈಬಿಡಲಾಗುತ್ತದೆ. ಇದು ಚಿತ್ರ ಸಂಸ್ಕರಣಾ ಸೇವೆಯು ಸುಗಮವಾಗಿ ಮತ್ತು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ.
3. ಫಿಕ್ಸೆಡ್ ವಿಂಡೋ ಕೌಂಟರ್
ಫಿಕ್ಸೆಡ್ ವಿಂಡೋ ಕೌಂಟರ್ ಅಲ್ಗಾರಿದಮ್ ಸಮಯವನ್ನು ಸ್ಥಿರ-ಗಾತ್ರದ ವಿಂಡೋಗಳಾಗಿ (ಉದಾ., 1 ನಿಮಿಷ, 1 ಗಂಟೆ) ವಿಭಜಿಸುತ್ತದೆ. ಪ್ರತಿ ಕ್ಲೈಂಟ್ಗೆ, ಇದು ಪ್ರಸ್ತುತ ವಿಂಡೋದಲ್ಲಿ ಮಾಡಿದ ವಿನಂತಿಗಳ ಸಂಖ್ಯೆಯನ್ನು ಎಣಿಕೆ ಮಾಡುತ್ತದೆ. ಎಣಿಕೆಯು ಮಿತಿಯನ್ನು ಮೀರಿದರೆ, ವಿಂಡೋ ಮರುಹೊಂದಿಸುವವರೆಗೆ ನಂತರದ ವಿನಂತಿಗಳನ್ನು ತಿರಸ್ಕರಿಸಲಾಗುತ್ತದೆ.
ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ:
- ಸಮಯವನ್ನು ಸ್ಥಿರ-ಗಾತ್ರದ ವಿಂಡೋಗಳಾಗಿ ವಿಂಗಡಿಸಲಾಗಿದೆ.
- ಪ್ರತಿ ಕ್ಲೈಂಟ್ಗೆ ಒಂದು ಕೌಂಟರ್ ಅನ್ನು ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ, ಪ್ರಸ್ತುತ ವಿಂಡೋದಲ್ಲಿನ ವಿನಂತಿಗಳ ಸಂಖ್ಯೆಯನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡುತ್ತದೆ.
- ಕೌಂಟರ್ ಮಿತಿಯನ್ನು ಮೀರಿದರೆ, ವಿಂಡೋ ಮರುಹೊಂದಿಸುವವರೆಗೆ ನಂತರದ ವಿನಂತಿಗಳನ್ನು ತಿರಸ್ಕರಿಸಲಾಗುತ್ತದೆ.
- ವಿಂಡೋ ಮರುಹೊಂದಿಸಿದಾಗ, ಕೌಂಟರ್ ಅನ್ನು ಶೂನ್ಯಕ್ಕೆ ಮರುಹೊಂದಿಸಲಾಗುತ್ತದೆ.
ಪ್ರಯೋಜನಗಳು:
- ಸರಳತೆ: ಕಾರ್ಯಗತಗೊಳಿಸಲು ತುಂಬಾ ಸುಲಭ.
- ಕಡಿಮೆ ಓವರ್ಹೆಡ್: ಕನಿಷ್ಠ ಸಂಪನ್ಮೂಲಗಳ ಅಗತ್ಯವಿದೆ.
ಅನಾನುಕೂಲಗಳು:
- ಬರ್ಸ್ಟ್ ಟ್ರಾಫಿಕ್ನ ಸಂಭಾವ್ಯತೆ: ವಿಂಡೋಗಳ ಅಂಚುಗಳಲ್ಲಿ ಟ್ರಾಫಿಕ್ ಬರ್ಸ್ಟ್ಗಳಿಗೆ ಅವಕಾಶ ನೀಡಬಹುದು. ಒಬ್ಬ ಬಳಕೆದಾರರು ವಿಂಡೋ ಮರುಹೊಂದಿಸುವ ಮೊದಲು ಅನುಮತಿಸಲಾದ ವಿನಂತಿಗಳನ್ನು ಮಾಡಬಹುದು, ಮತ್ತು ನಂತರ ಹೊಸ ವಿಂಡೋದ ಪ್ರಾರಂಭದಲ್ಲಿ ತಕ್ಷಣವೇ ಮತ್ತೊಂದು ಪೂರ್ಣ ವಿನಂತಿಗಳನ್ನು ಮಾಡಬಹುದು, ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಅವರ ಅನುಮತಿಸಲಾದ ದರವನ್ನು ದ್ವಿಗುಣಗೊಳಿಸುತ್ತದೆ.
- ತಪ್ಪಾದ ರೇಟ್ ಲಿಮಿಟಿಂಗ್: ವಿಂಡೋದ ಆರಂಭದಲ್ಲಿ ಅಥವಾ ಕೊನೆಯಲ್ಲಿ ವಿನಂತಿಗಳು ಕೇಂದ್ರೀಕೃತವಾಗಿದ್ದರೆ ತಪ್ಪಾಗಿರಬಹುದು.
ಉದಾಹರಣೆ:
ಫಿಕ್ಸೆಡ್ ವಿಂಡೋ ಕೌಂಟರ್ ಅಲ್ಗಾರಿದಮ್ ಬಳಸಿ, ಪ್ರತಿ ನಿಮಿಷಕ್ಕೆ 100 ವಿನಂತಿಗಳ ದರ ಮಿತಿಯನ್ನು ಹೊಂದಿರುವ API ಅನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಒಬ್ಬ ಬಳಕೆದಾರ ಸೈದ್ಧಾಂತಿಕವಾಗಿ ಒಂದು ನಿಮಿಷದ ಕೊನೆಯ ಸೆಕೆಂಡಿನಲ್ಲಿ 100 ವಿನಂತಿಗಳನ್ನು ಮಾಡಬಹುದು ಮತ್ತು ನಂತರ ಮುಂದಿನ ನಿಮಿಷದ ಮೊದಲ ಸೆಕೆಂಡಿನಲ್ಲಿ ಮತ್ತೊಂದು 100 ವಿನಂತಿಗಳನ್ನು ಮಾಡಬಹುದು, ಪರಿಣಾಮಕಾರಿಯಾಗಿ ತಮ್ಮ ಅನುಮತಿಸಲಾದ ದರವನ್ನು ದ್ವಿಗುಣಗೊಳಿಸಬಹುದು.
4. ಸ್ಲೈಡಿಂಗ್ ವಿಂಡೋ ಲಾಗ್
ಸ್ಲೈಡಿಂಗ್ ವಿಂಡೋ ಲಾಗ್ ಅಲ್ಗಾರಿದಮ್ ಸ್ಲೈಡಿಂಗ್ ಟೈಮ್ ವಿಂಡೋದಲ್ಲಿ ಮಾಡಿದ ಎಲ್ಲಾ ವಿನಂತಿಗಳ ಲಾಗ್ ಅನ್ನು ಇರಿಸುತ್ತದೆ. ಪ್ರತಿ ಬಾರಿ ವಿನಂತಿಯನ್ನು ಮಾಡಿದಾಗ, ಅಲ್ಗಾರಿದಮ್ ಲಾಗ್ನಲ್ಲಿನ ವಿನಂತಿಗಳ ಸಂಖ್ಯೆ ಮಿತಿಯನ್ನು ಮೀರಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಹಾಗಿದ್ದರೆ, ವಿನಂತಿಯನ್ನು ತಿರಸ್ಕರಿಸಲಾಗುತ್ತದೆ.
ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ:
- ಪ್ರತಿ ಕ್ಲೈಂಟ್ಗೆ ಲಾಗ್ ಅನ್ನು ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ, ಸ್ಲೈಡಿಂಗ್ ವಿಂಡೋದಲ್ಲಿ ಮಾಡಿದ ಎಲ್ಲಾ ವಿನಂತಿಗಳ ಟೈಮ್ಸ್ಟ್ಯಾಂಪ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ.
- ಹೊಸ ವಿನಂತಿಯನ್ನು ಮಾಡಿದಾಗ, ವಿಂಡೋದಲ್ಲಿನ ವಿನಂತಿಗಳ ಸಂಖ್ಯೆ ಮಿತಿಯನ್ನು ಮೀರಿದೆಯೇ ಎಂದು ನೋಡಲು ಲಾಗ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ.
- ಮಿತಿಯನ್ನು ಮೀರಿದರೆ, ವಿನಂತಿಯನ್ನು ತಿರಸ್ಕರಿಸಲಾಗುತ್ತದೆ.
- ಹಳೆಯ ನಮೂದುಗಳು ಸ್ಲೈಡಿಂಗ್ ವಿಂಡೋದಿಂದ ಹೊರಬಿದ್ದಂತೆ ಲಾಗ್ನಿಂದ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ.
ಪ್ರಯೋಜನಗಳು:
- ನಿಖರತೆ: ಫಿಕ್ಸೆಡ್ ವಿಂಡೋ ಕೌಂಟರ್ಗಿಂತ ಹೆಚ್ಚು ನಿಖರವಾದ ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ.
- ವಿಂಡೋ ಬೌಂಡರಿ ಸಮಸ್ಯೆಗಳಿಲ್ಲ: ವಿಂಡೋಗಳ ಅಂಚುಗಳಲ್ಲಿ ಬರ್ಸ್ಟ್ ಟ್ರಾಫಿಕ್ನ ಸಾಧ್ಯತೆಯನ್ನು ತಪ್ಪಿಸುತ್ತದೆ.
ಅನಾನುಕೂಲಗಳು:
- ಹೆಚ್ಚಿನ ಓವರ್ಹೆಡ್: ಫಿಕ್ಸೆಡ್ ವಿಂಡೋ ಕೌಂಟರ್ಗಿಂತ ಹೆಚ್ಚಿನ ಸಂಗ್ರಹಣೆ ಮತ್ತು ಸಂಸ್ಕರಣಾ ಶಕ್ತಿಯ ಅಗತ್ಯವಿದೆ.
- ಸಂಕೀರ್ಣತೆ: ಕಾರ್ಯಗತಗೊಳಿಸಲು ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿದೆ.
ಉದಾಹರಣೆ:
ಒಂದು ಸಾಮಾಜಿಕ ಮಾಧ್ಯಮ API ಪ್ರತಿ ಗಂಟೆಗೆ 500 ಪೋಸ್ಟ್ಗಳಿಗೆ ಬಳಕೆದಾರರನ್ನು ಸೀಮಿತಗೊಳಿಸಲು ಸ್ಲೈಡಿಂಗ್ ವಿಂಡೋ ಲಾಗ್ ಅನ್ನು ಬಳಸಬಹುದು. ಲಾಗ್ ಕಳೆದ 500 ಪೋಸ್ಟ್ಗಳ ಟೈಮ್ಸ್ಟ್ಯಾಂಪ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ. ಒಬ್ಬ ಬಳಕೆದಾರರು ಹೊಸ ಸಂದೇಶವನ್ನು ಪೋಸ್ಟ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದಾಗ, ಅಲ್ಗಾರಿದಮ್ ಕಳೆದ ಗಂಟೆಯಲ್ಲಿ ಈಗಾಗಲೇ 500 ಪೋಸ್ಟ್ಗಳಿವೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಹಾಗಿದ್ದರೆ, ಪೋಸ್ಟ್ ಅನ್ನು ತಿರಸ್ಕರಿಸಲಾಗುತ್ತದೆ.
5. ಸ್ಲೈಡಿಂಗ್ ವಿಂಡೋ ಕೌಂಟರ್
ಸ್ಲೈಡಿಂಗ್ ವಿಂಡೋ ಕೌಂಟರ್ ಫಿಕ್ಸೆಡ್ ವಿಂಡೋ ಕೌಂಟರ್ ಮತ್ತು ಸ್ಲೈಡಿಂಗ್ ವಿಂಡೋ ಲಾಗ್ ಎರಡರ ಪ್ರಯೋಜನಗಳನ್ನು ಸಂಯೋಜಿಸುವ ಒಂದು ಹೈಬ್ರಿಡ್ ವಿಧಾನವಾಗಿದೆ. ಇದು ವಿಂಡೋವನ್ನು ಸಣ್ಣ ವಿಭಾಗಗಳಾಗಿ ವಿಂಗಡಿಸುತ್ತದೆ ಮತ್ತು ದರ ಮಿತಿಯನ್ನು ನಿರ್ಧರಿಸಲು ತೂಕದ ಲೆಕ್ಕಾಚಾರವನ್ನು ಬಳಸುತ್ತದೆ. ಇದು ಫಿಕ್ಸೆಡ್ ವಿಂಡೋ ಕೌಂಟರ್ಗೆ ಹೋಲಿಸಿದರೆ ಹೆಚ್ಚು ನಿಖರವಾದ ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ ಮತ್ತು ಸ್ಲೈಡಿಂಗ್ ವಿಂಡೋ ಲಾಗ್ಗಿಂತ ಕಡಿಮೆ ಸಂಪನ್ಮೂಲ-ತೀವ್ರವಾಗಿರುತ್ತದೆ.
ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ:
- ಟೈಮ್ ವಿಂಡೋವನ್ನು ಸಣ್ಣ ವಿಭಾಗಗಳಾಗಿ ವಿಂಗಡಿಸುತ್ತದೆ (ಉದಾ., ಒಂದು ನಿಮಿಷದೊಳಗೆ ಸೆಕೆಂಡುಗಳು).
- ಪ್ರತಿ ವಿಭಾಗಕ್ಕೆ ಕೌಂಟರ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ.
- ಪೂರ್ಣಗೊಂಡ ವಿಭಾಗಗಳು ಮತ್ತು ಪ್ರಸ್ತುತ ವಿಭಾಗವನ್ನು ಪರಿಗಣಿಸಿ ಪ್ರಸ್ತುತ ವಿನಂತಿ ದರವನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತದೆ.
- ಲೆಕ್ಕಾಚಾರ ಮಾಡಿದ ದರವು ಮಿತಿಯನ್ನು ಮೀರಿದರೆ, ವಿನಂತಿಯನ್ನು ತಿರಸ್ಕರಿಸಲಾಗುತ್ತದೆ.
ಪ್ರಯೋಜನಗಳು:
- ಸುಧಾರಿತ ನಿಖರತೆ: ಫಿಕ್ಸೆಡ್ ವಿಂಡೋ ಕೌಂಟರ್ಗೆ ಹೋಲಿಸಿದರೆ ಉತ್ತಮ ನಿಖರತೆಯನ್ನು ನೀಡುತ್ತದೆ.
- ಕಡಿಮೆ ಓವರ್ಹೆಡ್: ಸ್ಲೈಡಿಂಗ್ ವಿಂಡೋ ಲಾಗ್ಗಿಂತ ಕಡಿಮೆ ಸಂಪನ್ಮೂಲ-ತೀವ್ರವಾಗಿರುತ್ತದೆ.
- ಸಂಕೀರ್ಣತೆ ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸಮತೋಲನಗೊಳಿಸುತ್ತದೆ: ನಿಖರತೆ ಮತ್ತು ಸಂಪನ್ಮೂಲ ಬಳಕೆಯ ನಡುವೆ ಉತ್ತಮ ರಾಜಿ.
ಅನಾನುಕೂಲಗಳು:
- ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾದ ಅನುಷ್ಠಾನ: ಫಿಕ್ಸೆಡ್ ವಿಂಡೋ ಕೌಂಟರ್ಗಿಂತ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿದೆ.
- ಇನ್ನೂ ಅಂದಾಜು: ಇದು ಇನ್ನೂ ಅಂದಾಜು, ಆದರೂ ಫಿಕ್ಸೆಡ್ ವಿಂಡೋಗಿಂತ ಹೆಚ್ಚು ನಿಖರವಾಗಿದೆ.
ಉದಾಹರಣೆ:
ಒಂದು ಇ-ಕಾಮರ್ಸ್ API ಪ್ರತಿ ನಿಮಿಷಕ್ಕೆ 200 ವಿನಂತಿಗಳ ದರ ಮಿತಿಯೊಂದಿಗೆ ಸ್ಲೈಡಿಂಗ್ ವಿಂಡೋ ಕೌಂಟರ್ ಅನ್ನು ಬಳಸಬಹುದು, ನಿಮಿಷವನ್ನು 10-ಸೆಕೆಂಡ್ ವಿಭಾಗಗಳಾಗಿ ವಿಂಗಡಿಸುತ್ತದೆ. ಬಳಕೆದಾರರು ತಮ್ಮ ದರ ಮಿತಿಯನ್ನು ಮೀರಿದ್ದಾರೆಯೇ ಎಂದು ನಿರ್ಧರಿಸಲು ಅಲ್ಗಾರಿದಮ್ ಹಿಂದಿನ ಪೂರ್ಣ ವಿಭಾಗಗಳು ಮತ್ತು ಪ್ರಸ್ತುತ ವಿಭಾಗದ ವಿನಂತಿಗಳ ತೂಕದ ಸರಾಸರಿಯನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತದೆ.
ಸರಿಯಾದ ತಂತ್ರವನ್ನು ಆರಿಸುವುದು
ನಿಮ್ಮ API ಗೆ ಉತ್ತಮ ರೇಟ್-ಲಿಮಿಟಿಂಗ್ ತಂತ್ರವು ನಿಮ್ಮ ನಿರ್ದಿಷ್ಟ ಅವಶ್ಯಕತೆಗಳು ಮತ್ತು ನಿರ್ಬಂಧಗಳನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ. ಈ ಕೆಳಗಿನ ಅಂಶಗಳನ್ನು ಪರಿಗಣಿಸಿ:
- ನಿಖರತೆ: ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಎಷ್ಟು ನಿಖರವಾಗಿರಬೇಕು? ಸಣ್ಣ ಟ್ರಾಫಿಕ್ ಬರ್ಸ್ಟ್ಗಳನ್ನು ಸಹ ನೀವು ತಡೆಯಬೇಕೇ?
- ಕಾರ್ಯಕ್ಷಮತೆ: ರೇಟ್-ಲಿಮಿಟಿಂಗ್ ಅಲ್ಗಾರಿದಮ್ನ ಕಾರ್ಯಕ್ಷಮತೆಯ ಪ್ರಭಾವ ಏನು? ಇದು ನಿರೀಕ್ಷಿತ ಟ್ರಾಫಿಕ್ ಪ್ರಮಾಣವನ್ನು ನಿಭಾಯಿಸಬಲ್ಲದೇ?
- ಸಂಕೀರ್ಣತೆ: ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಮತ್ತು ನಿರ್ವಹಿಸಲು ಎಷ್ಟು ಸಂಕೀರ್ಣವಾಗಿದೆ?
- ಸಂಪನ್ಮೂಲ ಬಳಕೆ: ಅಲ್ಗಾರಿದಮ್ ಎಷ್ಟು ಸಂಗ್ರಹಣೆ ಮತ್ತು ಸಂಸ್ಕರಣಾ ಶಕ್ತಿಯನ್ನು ಬಳಸುತ್ತದೆ?
- ಹೊಂದಿಕೊಳ್ಳುವಿಕೆ: ಬದಲಾಗುತ್ತಿರುವ ಅವಶ್ಯಕತೆಗಳಿಗೆ ಹೊಂದಿಕೊಳ್ಳಲು ಅಲ್ಗಾರಿದಮ್ ಎಷ್ಟು ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ?
- ಬಳಕೆಯ ಪ್ರಕರಣ: ನಿಮ್ಮ API ಯ ನಿರ್ದಿಷ್ಟ ಅಗತ್ಯಗಳು, ಉದಾಹರಣೆಗೆ, ಇದು ಒಂದು ನಿರ್ಣಾಯಕ ಸೇವೆಯಾಗಿದ್ದರೆ, ನಿಖರತೆ ಹೆಚ್ಚಾಗಿರಬೇಕು, ಆದರೆ ವಿಶ್ಲೇಷಣಾತ್ಮಕ API ಗೆ ಹೋಲಿಸಿದರೆ ಕೆಲವು ಸಣ್ಣ ತಪ್ಪುಗಳು ಸ್ವೀಕಾರಾರ್ಹವಾಗಿರಬಹುದು.
ಸಾಮಾನ್ಯವಾಗಿ, ಫಿಕ್ಸೆಡ್ ವಿಂಡೋ ಕೌಂಟರ್ನಂತಹ ಸರಳ ಅಲ್ಗಾರಿದಮ್ಗಳು ಕಡಿಮೆ ಕಠಿಣ ಅವಶ್ಯಕತೆಗಳನ್ನು ಹೊಂದಿರುವ APIಗಳಿಗೆ ಸೂಕ್ತವಾಗಿವೆ, ಆದರೆ ಸ್ಲೈಡಿಂಗ್ ವಿಂಡೋ ಲಾಗ್ ಅಥವಾ ಸ್ಲೈಡಿಂಗ್ ವಿಂಡೋ ಕೌಂಟರ್ನಂತಹ ಹೆಚ್ಚು ಅತ್ಯಾಧುನಿಕ ಅಲ್ಗಾರಿದಮ್ಗಳು ಹೆಚ್ಚು ನಿಖರವಾದ ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಅಗತ್ಯವಿರುವ APIಗಳಿಗೆ ಹೆಚ್ಚು ಸೂಕ್ತವಾಗಿವೆ.
ಅನುಷ್ಠಾನದ ಪರಿಗಣನೆಗಳು
API ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವಾಗ, ಈ ಕೆಳಗಿನ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ಪರಿಗಣಿಸಿ:
- ಕ್ಲೈಂಟ್ಗಳನ್ನು ಗುರುತಿಸಿ: ಕ್ಲೈಂಟ್ಗಳನ್ನು ಗುರುತಿಸಲು API ಕೀಗಳು, ದೃಢೀಕರಣ ಟೋಕನ್ಗಳು, ಅಥವಾ IP ವಿಳಾಸಗಳನ್ನು ಬಳಸಿ.
- ದರ ಮಿತಿಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ: ಪ್ರತಿ ಕ್ಲೈಂಟ್ ಅಥವಾ API ಎಂಡ್ಪಾಯಿಂಟ್ಗೆ ಸೂಕ್ತವಾದ ದರ ಮಿತಿಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ.
- ದರ ಮಿತಿ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಿ: ದರ ಮಿತಿ ಡೇಟಾಗಾಗಿ ಸೂಕ್ತವಾದ ಶೇಖರಣಾ ಯಾಂತ್ರಿಕತೆಯನ್ನು ಆರಿಸಿ, ಉದಾಹರಣೆಗೆ ಇನ್-ಮೆಮೊರಿ ಕ್ಯಾಶ್ (Redis, Memcached), ಡೇಟಾಬೇಸ್ಗಳು, ಅಥವಾ ವಿತರಿಸಿದ ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಸೇವೆಗಳು.
- ಮಾಹಿತಿಯುಕ್ತ ದೋಷ ಸಂದೇಶಗಳನ್ನು ಒದಗಿಸಿ: ಕ್ಲೈಂಟ್ಗಳು ದರ ಮಿತಿಯನ್ನು ಮೀರಿದಾಗ ಅವರಿಗೆ ಮಾಹಿತಿಯುಕ್ತ ದೋಷ ಸಂದೇಶಗಳನ್ನು ಹಿಂತಿರುಗಿಸಿ. ಮರುಪ್ರಯತ್ನಿಸುವ ಮೊದಲು ಅವರು ಎಷ್ಟು ಸಮಯ ಕಾಯಬೇಕು ಎಂಬ ವಿವರಗಳನ್ನು ಸೇರಿಸಿ (ಉದಾ., `Retry-After` ಹೆಡರ್ ಬಳಸಿ).
- ಮೇಲ್ವಿಚಾರಣೆ ಮತ್ತು ವಿಶ್ಲೇಷಣೆ: ಸಂಭಾವ್ಯ ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸಲು ಮತ್ತು ದರ ಮಿತಿಗಳನ್ನು ಉತ್ತಮಗೊಳಿಸಲು ದರ ಮಿತಿ ಡೇಟಾವನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಿ ಮತ್ತು ವಿಶ್ಲೇಷಿಸಿ.
- API ಆವೃತ್ತಿಯನ್ನು ಪರಿಗಣಿಸಿ: ವಿಭಿನ್ನ API ಆವೃತ್ತಿಗಳಿಗೆ ವಿಭಿನ್ನ ದರ ಮಿತಿಗಳು ಬೇಕಾಗಬಹುದು.
- ಜಾರಿಗೊಳಿಸುವ ಸ್ಥಳ: ನೀವು ವಿಭಿನ್ನ ಪದರಗಳಲ್ಲಿ ದರ ಮಿತಿಗಳನ್ನು ಜಾರಿಗೊಳಿಸಬಹುದು (ಉದಾ., API ಗೇಟ್ವೇ, ಅಪ್ಲಿಕೇಶನ್ ಸರ್ವರ್). API ಗೇಟ್ವೇ ಹೆಚ್ಚಾಗಿ ಆದ್ಯತೆಯ ಆಯ್ಕೆಯಾಗಿದೆ.
- ಜಾಗತಿಕ vs. ಸ್ಥಳೀಯ ರೇಟ್ ಲಿಮಿಟಿಂಗ್: ದರ ಮಿತಿಯನ್ನು ಎಲ್ಲಾ ಸರ್ವರ್ಗಳಾದ್ಯಂತ ಜಾಗತಿಕವಾಗಿ ಅನ್ವಯಿಸಬೇಕೇ ಅಥವಾ ಪ್ರತಿ ಸರ್ವರ್ಗೆ ಸ್ಥಳೀಯವಾಗಿ ಅನ್ವಯಿಸಬೇಕೇ ಎಂದು ನಿರ್ಧರಿಸಿ. ಜಾಗತಿಕ ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಹೆಚ್ಚು ನಿಖರವಾಗಿರುತ್ತದೆ ಆದರೆ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿರುತ್ತದೆ.
- ಗ್ರೇಸ್ಫುಲ್ ಡಿಗ್ರೇಡೇಶನ್: ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಸೇವೆ ವಿಫಲವಾದಲ್ಲಿ ಗ್ರೇಸ್ಫುಲ್ ಡಿಗ್ರೇಡೇಶನ್ಗಾಗಿ ಒಂದು ತಂತ್ರವನ್ನು ಪರಿಗಣಿಸಿ.
- ಡೈನಾಮಿಕ್ ಕಾನ್ಫಿಗರೇಶನ್: ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಡೈನಾಮಿಕ್ ಆಗಿ ನವೀಕರಿಸಬಹುದೆಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ, ಇದರಿಂದ ಸೇವಾ ಅಡಚಣೆಯಿಲ್ಲದೆ ಅಗತ್ಯವಿರುವಂತೆ ದರ ಮಿತಿಗಳನ್ನು ಮಾರ್ಪಡಿಸಬಹುದು.
ಉದಾಹರಣೆ: Redis ಮತ್ತು API ಗೇಟ್ವೇಯೊಂದಿಗೆ ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದು
ಈ ಉದಾಹರಣೆಯು ದರ ಮಿತಿ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲು Redis ಬಳಸಿ ಮತ್ತು ಮಿತಿಗಳನ್ನು ಜಾರಿಗೊಳಿಸಲು API ಗೇಟ್ವೇ (ಕಾಂಗ್, ಟೈಕ್, ಅಥವಾ AWS, Azure, ಅಥವಾ Google Cloud ನಂತಹ ಕ್ಲೌಡ್ ಪೂರೈಕೆದಾರರಿಂದ API ನಿರ್ವಹಣಾ ಸೇವೆಗಳು) ಬಳಸಿ ಸರಳೀಕೃತ ಅನುಷ್ಠಾನವನ್ನು ವಿವರಿಸುತ್ತದೆ.
- ಕ್ಲೈಂಟ್ ದೃಢೀಕರಣ: API ಗೇಟ್ವೇ ಒಂದು ವಿನಂತಿಯನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ ಮತ್ತು API ಕೀ ಅಥವಾ JWT ಬಳಸಿ ಕ್ಲೈಂಟ್ ಅನ್ನು ದೃಢೀಕರಿಸುತ್ತದೆ.
- ದರ ಮಿತಿ ಪರಿಶೀಲನೆ: ಗೇಟ್ವೇ ಕ್ಲೈಂಟ್ನ ID ಅನ್ನು (ಉದಾ., API ಕೀ) ಹಿಂಪಡೆಯುತ್ತದೆ ಮತ್ತು ಆ ಕ್ಲೈಂಟ್ಗೆ ಮತ್ತು ನಿರ್ದಿಷ್ಟ API ಎಂಡ್ಪಾಯಿಂಟ್ಗಾಗಿ Redis ನಲ್ಲಿನ ಪ್ರಸ್ತುತ ವಿನಂತಿ ಎಣಿಕೆಯನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ. Redis ಕೀ `rate_limit:api_key:{api_key}:endpoint:{endpoint}` ನಂತೆ ಇರಬಹುದು.
- ಎಣಿಕೆಯನ್ನು ಹೆಚ್ಚಿಸಿ: ವಿನಂತಿ ಎಣಿಕೆಯು ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಮಿತಿಗಿಂತ ಕಡಿಮೆಯಿದ್ದರೆ, ಗೇಟ್ವೇ ಅಟಾಮಿಕ್ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಬಳಸಿ Redis ನಲ್ಲಿ ಕೌಂಟರ್ ಅನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ (ಉದಾ., Redis ನಲ್ಲಿ `INCR` ಮತ್ತು `EXPIRE` ಕಮಾಂಡ್ಗಳು).
- ಅನುಮತಿಸಿ ಅಥವಾ ತಿರಸ್ಕರಿಸಿ: ಹೆಚ್ಚಿದ ಎಣಿಕೆಯು ಮಿತಿಯನ್ನು ಮೀರಿದರೆ, ಗೇಟ್ವೇ `429 Too Many Requests` ದೋಷದೊಂದಿಗೆ ವಿನಂತಿಯನ್ನು ತಿರಸ್ಕರಿಸುತ್ತದೆ. ಇಲ್ಲದಿದ್ದರೆ, ವಿನಂತಿಯನ್ನು ಬ್ಯಾಕೆಂಡ್ API ಗೆ ಫಾರ್ವರ್ಡ್ ಮಾಡಲಾಗುತ್ತದೆ.
- ದೋಷ ನಿರ್ವಹಣೆ: ಗೇಟ್ವೇ ಉಪಯುಕ್ತ ದೋಷ ಸಂದೇಶವನ್ನು ಒದಗಿಸುತ್ತದೆ, ಇದರಲ್ಲಿ ಕ್ಲೈಂಟ್ ಮರುಪ್ರಯತ್ನಿಸುವ ಮೊದಲು ಎಷ್ಟು ಸಮಯ ಕಾಯಬೇಕು ಎಂಬುದನ್ನು ಸೂಚಿಸುವ `Retry-After` ಹೆಡರ್ ಅನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.
- Redis ಕಾನ್ಫಿಗರೇಶನ್: ಪರ್ಸಿಸ್ಟೆನ್ಸ್ ಮತ್ತು ಹೆಚ್ಚಿನ ಲಭ್ಯತೆಗಾಗಿ ಸೂಕ್ತ ಸೆಟ್ಟಿಂಗ್ಗಳೊಂದಿಗೆ Redis ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ.
ಉದಾಹರಣೆ ದೋಷ ಸಂದೇಶ:
`HTTP/1.1 429 Too Many Requests` `Content-Type: application/json` `Retry-After: 60` `{"error": "Rate limit exceeded. Please try again in 60 seconds."}`
ಕ್ಲೌಡ್ ಪ್ರೊವೈಡರ್ ಪರಿಹಾರಗಳು
AWS, Azure, ಮತ್ತು Google Cloud ನಂತಹ ಪ್ರಮುಖ ಕ್ಲೌಡ್ ಪೂರೈಕೆದಾರರು ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಅಂತರ್ನಿರ್ಮಿತ API ನಿರ್ವಹಣಾ ಸೇವೆಗಳನ್ನು ನೀಡುತ್ತಾರೆ. ಈ ಸೇವೆಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಹೆಚ್ಚು ಸುಧಾರಿತ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಒದಗಿಸುತ್ತವೆ:
- ಗ್ರಾಫಿಕಲ್ ಯೂಸರ್ ಇಂಟರ್ಫೇಸ್: ದರ ಮಿತಿಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಬಳಸಲು ಸುಲಭವಾದ ಇಂಟರ್ಫೇಸ್.
- ವಿಶ್ಲೇಷಣೆ: API ಬಳಕೆ ಮತ್ತು ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಕುರಿತು ವಿವರವಾದ ವಿಶ್ಲೇಷಣೆ.
- ಏಕೀಕರಣ: ಇತರ ಕ್ಲೌಡ್ ಸೇವೆಗಳೊಂದಿಗೆ ತಡೆರಹಿತ ಏಕೀಕರಣ.
- ಸ್ಕೇಲೆಬಿಲಿಟಿ: ಹೆಚ್ಚು ಸ್ಕೇಲೆಬಲ್ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹ ಮೂಲಸೌಕರ್ಯ.
- ನೀತಿ ಜಾರಿ: ಅತ್ಯಾಧುನಿಕ ನೀತಿ ಜಾರಿ ಎಂಜಿನ್ಗಳು.
ಉದಾಹರಣೆಗಳು:
- AWS API ಗೇಟ್ವೇ: ಬಳಕೆಯ ಯೋಜನೆಗಳು ಮತ್ತು ಥ್ರೊಟ್ಲಿಂಗ್ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ರೇಟ್ ಲಿಮಿಟಿಂಗ್ಗೆ ಅಂತರ್ನಿರ್ಮಿತ ಬೆಂಬಲವನ್ನು ಒದಗಿಸುತ್ತದೆ.
- Azure API ನಿರ್ವಹಣೆ: APIಗಳಿಗೆ ಅನ್ವಯಿಸಬಹುದಾದ ವಿವಿಧ ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ನೀತಿಗಳನ್ನು ನೀಡುತ್ತದೆ.
- Google Cloud API ಗೇಟ್ವೇ: ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಮತ್ತು ಕೋಟಾ ನಿರ್ವಹಣಾ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.
ತೀರ್ಮಾನ
ದೃಢವಾದ ಮತ್ತು ಸ್ಕೇಲೆಬಲ್ APIಗಳನ್ನು ನಿರ್ಮಿಸುವಲ್ಲಿ API ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ಒಂದು ನಿರ್ಣಾಯಕ ಅಂಶವಾಗಿದೆ. ಸೂಕ್ತವಾದ ರೇಟ್-ಲಿಮಿಟಿಂಗ್ ತಂತ್ರಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮೂಲಕ, ನೀವು ನಿಮ್ಮ API ಸಂಪನ್ಮೂಲಗಳನ್ನು ರಕ್ಷಿಸಬಹುದು, ನ್ಯಾಯೋಚಿತ ಬಳಕೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬಹುದು, ಮತ್ತು ನಿಮ್ಮ API ಮೂಲಸೌಕರ್ಯದ ಒಟ್ಟಾರೆ ಸ್ಥಿರತೆಯನ್ನು ಕಾಪಾಡಿಕೊಳ್ಳಬಹುದು. ಸರಿಯಾದ ತಂತ್ರವನ್ನು ಆರಿಸುವುದು ನಿಮ್ಮ ನಿರ್ದಿಷ್ಟ ಅವಶ್ಯಕತೆಗಳು ಮತ್ತು ನಿರ್ಬಂಧಗಳನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ, ಮತ್ತು ಅನುಷ್ಠಾನದ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳಿಗೆ ಎಚ್ಚರಿಕೆಯ ಪರಿಗಣನೆಯನ್ನು ನೀಡಬೇಕು. ಕ್ಲೌಡ್ ಪೂರೈಕೆದಾರರ ಪರಿಹಾರಗಳನ್ನು ಅಥವಾ ತೃತೀಯ API ನಿರ್ವಹಣಾ ವೇದಿಕೆಗಳನ್ನು ಬಳಸುವುದರಿಂದ ಅನುಷ್ಠಾನವನ್ನು ಸರಳಗೊಳಿಸಬಹುದು ಮತ್ತು ಹೆಚ್ಚು ಸುಧಾರಿತ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಒದಗಿಸಬಹುದು.
ವಿವಿಧ ರೇಟ್-ಲಿಮಿಟಿಂಗ್ ಅಲ್ಗಾರಿದಮ್ಗಳು ಮತ್ತು ಅನುಷ್ಠಾನದ ಪರಿಗಣನೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ, ನೀವು ಇಂದಿನ ಅಂತರ್ಸಂಪರ್ಕಿತ ಜಗತ್ತಿನ ಬೇಡಿಕೆಗಳನ್ನು ಪೂರೈಸುವ, ಸ್ಥಿತಿಸ್ಥಾಪಕ, ಸುರಕ್ಷಿತ ಮತ್ತು ಸ್ಕೇಲೆಬಲ್ APIಗಳನ್ನು ನಿರ್ಮಿಸಬಹುದು. ನಿಮ್ಮ ದರ ಮಿತಿಗಳನ್ನು ಸರಿಹೊಂದಿಸಲು ಮತ್ತು ಅತ್ಯುತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ನಿಮ್ಮ API ಟ್ರಾಫಿಕ್ ಅನ್ನು ನಿರಂತರವಾಗಿ ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ಮತ್ತು ವಿಶ್ಲೇಷಿಸಲು ಮರೆಯದಿರಿ. ಉತ್ತಮವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಿದ ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ತಂತ್ರವು ಸಕಾರಾತ್ಮಕ ಡೆವಲಪರ್ ಅನುಭವ ಮತ್ತು ಸ್ಥಿರವಾದ ಅಪ್ಲಿಕೇಶನ್ ಪರಿಸರ ವ್ಯವಸ್ಥೆಗೆ ಗಮನಾರ್ಹವಾಗಿ ಕೊಡುಗೆ ನೀಡುತ್ತದೆ.