ಇಸ್ಟಿಯೊ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್: ದೋಷಪೂರಿತ ಧಾರಕಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದು

ರಜಾದಿನಗಳು ಮುಗಿದಿವೆ ಮತ್ತು ನಾವು ಇಸ್ಟಿಯೊ ಸರ್ವಿಸ್ ಮೆಶ್ ಸರಣಿಯಲ್ಲಿ ನಮ್ಮ ಎರಡನೇ ಪೋಸ್ಟ್‌ನೊಂದಿಗೆ ಹಿಂತಿರುಗಿದ್ದೇವೆ.

ಇಸ್ಟಿಯೊ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್: ದೋಷಪೂರಿತ ಧಾರಕಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದು

ಇಂದಿನ ವಿಷಯವೆಂದರೆ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್, ಇದನ್ನು ರಷ್ಯಾದ ಎಲೆಕ್ಟ್ರಿಕಲ್ ಎಂಜಿನಿಯರಿಂಗ್‌ಗೆ ಅನುವಾದಿಸಲಾಗಿದೆ ಎಂದರೆ "ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್", ಸಾಮಾನ್ಯ ಭಾಷೆಯಲ್ಲಿ - "ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್". ಇಸ್ಟಿಯೊದಲ್ಲಿ ಮಾತ್ರ ಈ ಯಂತ್ರವು ಶಾರ್ಟ್ಡ್ ಅಥವಾ ಓವರ್ಲೋಡ್ಡ್ ಸರ್ಕ್ಯೂಟ್ ಅನ್ನು ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸುವುದಿಲ್ಲ, ಆದರೆ ದೋಷಯುಕ್ತ ಧಾರಕಗಳನ್ನು.

ಇದು ಆದರ್ಶಪ್ರಾಯವಾಗಿ ಹೇಗೆ ಕೆಲಸ ಮಾಡಬೇಕು

ಮೈಕ್ರೋಸರ್ವಿಸ್‌ಗಳನ್ನು ಕುಬರ್ನೆಟ್ಸ್ ನಿರ್ವಹಿಸಿದಾಗ, ಉದಾಹರಣೆಗೆ ಓಪನ್‌ಶಿಫ್ಟ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ನಲ್ಲಿ, ಅವು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲೋಡ್ ಅನ್ನು ಅವಲಂಬಿಸಿ ಮೇಲಕ್ಕೆ ಮತ್ತು ಕೆಳಕ್ಕೆ ಅಳೆಯುತ್ತವೆ. ಮೈಕ್ರೋಸರ್ವಿಸ್‌ಗಳು ಪಾಡ್‌ಗಳಲ್ಲಿ ಚಾಲನೆಯಾಗುವುದರಿಂದ, ಒಂದು ಎಂಡ್‌ಪಾಯಿಂಟ್‌ನಲ್ಲಿ ಕಂಟೈನರೈಸ್ಡ್ ಮೈಕ್ರೊ ಸರ್ವಿಸ್‌ನ ಅನೇಕ ನಿದರ್ಶನಗಳು ಇರಬಹುದು, ಮತ್ತು ಕುಬರ್ನೆಟ್ಸ್ ವಿನಂತಿಗಳನ್ನು ರೂಟ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅವುಗಳ ನಡುವೆ ಸಮತೋಲನವನ್ನು ಲೋಡ್ ಮಾಡುತ್ತದೆ. ಮತ್ತು - ಆದರ್ಶಪ್ರಾಯವಾಗಿ - ಇವೆಲ್ಲವೂ ಸಂಪೂರ್ಣವಾಗಿ ಕೆಲಸ ಮಾಡಬೇಕು.

ಮೈಕ್ರೋಸರ್ವಿಸ್‌ಗಳು ಚಿಕ್ಕದಾಗಿದೆ ಮತ್ತು ಅಲ್ಪಕಾಲಿಕವಾಗಿವೆ ಎಂದು ನಾವು ನೆನಪಿಸಿಕೊಳ್ಳುತ್ತೇವೆ. ಕ್ಷಣಿಕತೆ ಎಂದರೆ ಇಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುವ ಮತ್ತು ಕಣ್ಮರೆಯಾಗುವ ಸುಲಭ ಎಂದರ್ಥ, ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಕಡಿಮೆ ಅಂದಾಜು ಮಾಡಲಾಗುತ್ತದೆ. ಪಾಡ್‌ನಲ್ಲಿ ಮೈಕ್ರೊ ಸರ್ವಿಸ್‌ನ ಮತ್ತೊಂದು ನಿದರ್ಶನದ ಜನನ ಮತ್ತು ಸಾವು ಸಾಕಷ್ಟು ನಿರೀಕ್ಷಿತ ವಿಷಯಗಳಾಗಿವೆ, ಓಪನ್‌ಶಿಫ್ಟ್ ಮತ್ತು ಕುಬರ್ನೆಟ್ಸ್ ಇದನ್ನು ಉತ್ತಮವಾಗಿ ನಿರ್ವಹಿಸುತ್ತಾರೆ ಮತ್ತು ಎಲ್ಲವೂ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ - ಆದರೆ ಮತ್ತೆ ಸಿದ್ಧಾಂತದಲ್ಲಿ.

ಇದು ನಿಜವಾಗಿಯೂ ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ

ಮೈಕ್ರೊ ಸರ್ವೀಸ್‌ನ ನಿರ್ದಿಷ್ಟ ನಿದರ್ಶನ, ಅಂದರೆ ಕಂಟೇನರ್ ನಿರುಪಯುಕ್ತವಾಗಿದೆ ಎಂದು ಈಗ ಊಹಿಸಿ: ಒಂದೋ ಅದು ಪ್ರತಿಕ್ರಿಯಿಸುವುದಿಲ್ಲ (ದೋಷ 503), ಅಥವಾ ಹೆಚ್ಚು ಅಹಿತಕರವಾದದ್ದು, ಅದು ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತದೆ, ಆದರೆ ತುಂಬಾ ನಿಧಾನವಾಗಿ. ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ಇದು ಗ್ಲಿಚಿ ಆಗುತ್ತದೆ ಅಥವಾ ವಿನಂತಿಗಳಿಗೆ ಪ್ರತಿಕ್ರಿಯಿಸುವುದಿಲ್ಲ, ಆದರೆ ಅದನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪೂಲ್‌ನಿಂದ ತೆಗೆದುಹಾಕಲಾಗುವುದಿಲ್ಲ. ಈ ಸಂದರ್ಭದಲ್ಲಿ ಏನು ಮಾಡಬೇಕು? ಮರುಪ್ರಯತ್ನಿಸಲು? ನಾನು ಅದನ್ನು ರೂಟಿಂಗ್ ಸ್ಕೀಮ್‌ನಿಂದ ತೆಗೆದುಹಾಕಬೇಕೇ? ಮತ್ತು "ತುಂಬಾ ನಿಧಾನ" ಎಂದರೆ ಏನು - ಇದು ಸಂಖ್ಯೆಯಲ್ಲಿ ಎಷ್ಟು, ಮತ್ತು ಅವುಗಳನ್ನು ಯಾರು ನಿರ್ಧರಿಸುತ್ತಾರೆ? ಬಹುಶಃ ವಿರಾಮ ನೀಡಿ ಮತ್ತು ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಬಹುದೇ? ಹಾಗಿದ್ದಲ್ಲಿ, ಎಷ್ಟು ನಂತರ?

ಇಸ್ಟಿಯೊದಲ್ಲಿ ಪೂಲ್ ಎಜೆಕ್ಷನ್ ಎಂದರೇನು

ಮತ್ತು ಇಲ್ಲಿ ಇಸ್ಟಿಯೊ ತನ್ನ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಸಂರಕ್ಷಣಾ ಯಂತ್ರಗಳೊಂದಿಗೆ ಪಾರುಗಾಣಿಕಾಕ್ಕೆ ಬರುತ್ತದೆ, ಇದು ರೂಟಿಂಗ್ ಮತ್ತು ಲೋಡ್ ಬ್ಯಾಲೆನ್ಸಿಂಗ್ ಸಂಪನ್ಮೂಲ ಪೂಲ್‌ನಿಂದ ದೋಷಯುಕ್ತ ಧಾರಕಗಳನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ತೆಗೆದುಹಾಕುತ್ತದೆ, ಪೂಲ್ ಎಜೆಕ್ಷನ್ ವಿಧಾನವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ.

ಹೊರಗಿನ ಪತ್ತೆ ಕಾರ್ಯತಂತ್ರವನ್ನು ಬಳಸಿಕೊಂಡು, ಇಸ್ಟಿಯೊ ರೇಖೆಯಿಂದ ಹೊರಗಿರುವ ಕರ್ವ್ ಪಾಡ್‌ಗಳನ್ನು ಪತ್ತೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅವುಗಳನ್ನು ಸ್ಲೀಪ್ ವಿಂಡೋ ಎಂದು ಕರೆಯಲಾಗುವ ನಿರ್ದಿಷ್ಟ ಸಮಯದವರೆಗೆ ಸಂಪನ್ಮೂಲ ಪೂಲ್‌ನಿಂದ ತೆಗೆದುಹಾಕುತ್ತದೆ.

ಓಪನ್‌ಶಿಫ್ಟ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ನಲ್ಲಿ ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ ಇದು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ತೋರಿಸಲು, ರೆಪೊಸಿಟರಿಯಲ್ಲಿನ ಉದಾಹರಣೆಯಿಂದ ಸಾಮಾನ್ಯವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗಳ ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ನೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸೋಣ. Red Hat ಡೆವಲಪರ್ ಡೆಮೊಗಳು. ಇಲ್ಲಿ ನಾವು ಎರಡು ಪಾಡ್‌ಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ, v1 ಮತ್ತು v2, ಪ್ರತಿಯೊಂದೂ ಒಂದು ಕಂಟೇನರ್ ಅನ್ನು ಚಾಲನೆ ಮಾಡುತ್ತದೆ. ಇಸ್ಟಿಯೊ ರೂಟಿಂಗ್ ನಿಯಮಗಳನ್ನು ಬಳಸದಿದ್ದಾಗ, ಕುಬರ್ನೆಟ್ಸ್ ಸಮವಾಗಿ ಸಮತೋಲಿತ ರೌಂಡ್-ರಾಬಿನ್ ರೂಟಿಂಗ್‌ಗೆ ಡಿಫಾಲ್ಟ್ ಆಗುತ್ತದೆ:

ಇಸ್ಟಿಯೊ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್: ದೋಷಪೂರಿತ ಧಾರಕಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದು

ವೈಫಲ್ಯಕ್ಕೆ ತಯಾರಿ

ಪೂಲ್ ಎಜೆಕ್ಷನ್ ಮಾಡುವ ಮೊದಲು, ನೀವು ಇಸ್ಟಿಯೊ ರೂಟಿಂಗ್ ನಿಯಮವನ್ನು ರಚಿಸಬೇಕಾಗಿದೆ. ನಾವು 50/50 ಅನುಪಾತದಲ್ಲಿ ಪಾಡ್‌ಗಳ ನಡುವೆ ವಿನಂತಿಗಳನ್ನು ವಿತರಿಸಲು ಬಯಸುತ್ತೇವೆ ಎಂದು ಹೇಳೋಣ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ನಾವು ಈ ರೀತಿಯ v2 ಕಂಟೇನರ್‌ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಒಂದರಿಂದ ಎರಡಕ್ಕೆ ಹೆಚ್ಚಿಸುತ್ತೇವೆ:

oc scale deployment recommendation-v2 --replicas=2 -n tutorial

ಈಗ ನಾವು ರೂಟಿಂಗ್ ನಿಯಮವನ್ನು ಹೊಂದಿಸಿದ್ದೇವೆ ಇದರಿಂದ ಟ್ರಾಫಿಕ್ ಅನ್ನು 50/50 ಅನುಪಾತದಲ್ಲಿ ಪಾಡ್‌ಗಳ ನಡುವೆ ವಿತರಿಸಲಾಗುತ್ತದೆ.

ಇಸ್ಟಿಯೊ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್: ದೋಷಪೂರಿತ ಧಾರಕಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದು
ಈ ನಿಯಮದ ಫಲಿತಾಂಶವು ಹೇಗೆ ಕಾಣುತ್ತದೆ ಎಂಬುದು ಇಲ್ಲಿದೆ:

ಇಸ್ಟಿಯೊ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್: ದೋಷಪೂರಿತ ಧಾರಕಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದು
ಈ ಪರದೆಯು 50/50 ಅಲ್ಲ, ಆದರೆ 14: 9 ಎಂದು ನೀವು ತಪ್ಪನ್ನು ಕಂಡುಹಿಡಿಯಬಹುದು, ಆದರೆ ಕಾಲಾನಂತರದಲ್ಲಿ ಪರಿಸ್ಥಿತಿಯು ಸುಧಾರಿಸುತ್ತದೆ.

ಗ್ಲಿಚ್ ಮಾಡುವುದು

ಈಗ ನಾವು ಎರಡು v2 ಕಂಟೇನರ್‌ಗಳಲ್ಲಿ ಒಂದನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸೋಣ ಇದರಿಂದ ನಾವು ಒಂದು ಆರೋಗ್ಯಕರ v1 ಕಂಟೇನರ್, ಒಂದು ಆರೋಗ್ಯಕರ v2 ಕಂಟೇನರ್ ಮತ್ತು ಒಂದು ದೋಷಯುಕ್ತ v2 ಕಂಟೇನರ್ ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ:

ಇಸ್ಟಿಯೊ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್: ದೋಷಪೂರಿತ ಧಾರಕಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದು

ಗ್ಲಿಚ್ ಅನ್ನು ಸರಿಪಡಿಸುವುದು

ಆದ್ದರಿಂದ, ನಾವು ದೋಷಪೂರಿತ ಕಂಟೇನರ್ ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ ಮತ್ತು ಇದು ಪೂಲ್ ಎಜೆಕ್ಷನ್ಗೆ ಸಮಯವಾಗಿದೆ. ಅತ್ಯಂತ ಸರಳವಾದ ಸಂರಚನೆಯನ್ನು ಬಳಸಿಕೊಂಡು, ಈ ವಿಫಲವಾದ ಕಂಟೇನರ್ ಅನ್ನು ಯಾವುದೇ ರೂಟಿಂಗ್ ಸ್ಕೀಮ್‌ಗಳಿಂದ 15 ಸೆಕೆಂಡುಗಳ ಕಾಲ ನಾವು ಹೊರಗಿಡುತ್ತೇವೆ, ಅದು ಆರೋಗ್ಯಕರ ಸ್ಥಿತಿಗೆ ಮರಳುತ್ತದೆ (ಮರುಪ್ರಾರಂಭಿಸಿ ಅಥವಾ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಮರುಸ್ಥಾಪಿಸುತ್ತದೆ). ಈ ಸಂರಚನೆಯು ಹೇಗೆ ಕಾಣುತ್ತದೆ ಮತ್ತು ಅದರ ಕೆಲಸದ ಫಲಿತಾಂಶಗಳು:

ಇಸ್ಟಿಯೊ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್: ದೋಷಪೂರಿತ ಧಾರಕಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದು
ಇಸ್ಟಿಯೊ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್: ದೋಷಪೂರಿತ ಧಾರಕಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದು
ನೀವು ನೋಡುವಂತೆ, ವಿಫಲವಾದ v2 ಕಂಟೇನರ್ ಅನ್ನು ರೂಟಿಂಗ್ ವಿನಂತಿಗಳಿಗಾಗಿ ಇನ್ನು ಮುಂದೆ ಬಳಸಲಾಗುವುದಿಲ್ಲ ಏಕೆಂದರೆ ಅದನ್ನು ಪೂಲ್‌ನಿಂದ ತೆಗೆದುಹಾಕಲಾಗಿದೆ. ಆದರೆ 15 ಸೆಕೆಂಡುಗಳ ನಂತರ ಅದು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪೂಲ್‌ಗೆ ಹಿಂತಿರುಗುತ್ತದೆ. ವಾಸ್ತವವಾಗಿ, ಪೂಲ್ ಎಜೆಕ್ಷನ್ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ನಾವು ತೋರಿಸಿದ್ದೇವೆ.

ವಾಸ್ತುಶಿಲ್ಪವನ್ನು ನಿರ್ಮಿಸಲು ಪ್ರಾರಂಭಿಸೋಣ

ಪೂಲ್ ಎಜೆಕ್ಷನ್, Istio ನ ಮೇಲ್ವಿಚಾರಣಾ ಸಾಮರ್ಥ್ಯಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸಲ್ಪಟ್ಟಿದೆ, ಅಲಭ್ಯತೆ ಮತ್ತು ವೈಫಲ್ಯಗಳನ್ನು ಕಡಿಮೆ ಮಾಡಲು ದೋಷಯುಕ್ತ ಧಾರಕಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಬದಲಿಸಲು ಚೌಕಟ್ಟನ್ನು ನಿರ್ಮಿಸಲು ಪ್ರಾರಂಭಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ನಾಸಾ ಒಂದು ದೊಡ್ಡ ಧ್ಯೇಯವಾಕ್ಯವನ್ನು ಹೊಂದಿದೆ - ವೈಫಲ್ಯವು ಒಂದು ಆಯ್ಕೆಯಾಗಿಲ್ಲ, ಅದರ ಲೇಖಕರನ್ನು ವಿಮಾನ ನಿರ್ದೇಶಕ ಎಂದು ಪರಿಗಣಿಸಲಾಗಿದೆ ಜೀನ್ ಕ್ರಾಂಜ್. ಇದನ್ನು ರಷ್ಯನ್ ಭಾಷೆಗೆ "ವೈಫಲ್ಯವು ಒಂದು ಆಯ್ಕೆಯಾಗಿಲ್ಲ" ಎಂದು ಅನುವಾದಿಸಬಹುದು ಮತ್ತು ಇಲ್ಲಿ ಅರ್ಥವು ನಿಮಗೆ ಸಾಕಷ್ಟು ಇಚ್ಛೆಯನ್ನು ಹೊಂದಿದ್ದರೆ ಎಲ್ಲವನ್ನೂ ಕೆಲಸ ಮಾಡಬಹುದು. ಆದಾಗ್ಯೂ, ನಿಜ ಜೀವನದಲ್ಲಿ, ವೈಫಲ್ಯಗಳು ಕೇವಲ ಸಂಭವಿಸುವುದಿಲ್ಲ, ಅವು ಅನಿವಾರ್ಯ, ಎಲ್ಲೆಡೆ ಮತ್ತು ಎಲ್ಲದರಲ್ಲೂ. ಮತ್ತು ಸೂಕ್ಷ್ಮ ಸೇವೆಗಳ ಸಂದರ್ಭದಲ್ಲಿ ಅವರೊಂದಿಗೆ ಹೇಗೆ ವ್ಯವಹರಿಸುವುದು? ನಮ್ಮ ಅಭಿಪ್ರಾಯದಲ್ಲಿ, ಇಚ್ಛಾಶಕ್ತಿಯ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿಲ್ಲ, ಆದರೆ ಧಾರಕಗಳ ಸಾಮರ್ಥ್ಯಗಳ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ, ಕುಬರ್ನೆಟ್ಸ್, Red Hat ಓಪನ್‌ಶಿಫ್ಟ್ಮತ್ತು ಇಸ್ಟಿಯೊ.

ಇಸ್ಟಿಯೊ, ನಾವು ಮೇಲೆ ಬರೆದಂತೆ, ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ಗಳ ಪರಿಕಲ್ಪನೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ, ಇದು ಭೌತಿಕ ಜಗತ್ತಿನಲ್ಲಿ ಸ್ವತಃ ಚೆನ್ನಾಗಿ ಸಾಬೀತಾಗಿದೆ. ಮತ್ತು ಎಲೆಕ್ಟ್ರಿಕಲ್ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಸರ್ಕ್ಯೂಟ್‌ನ ಸಮಸ್ಯೆಯ ವಿಭಾಗವನ್ನು ಆಫ್ ಮಾಡಿದಂತೆ, ಇಸ್ಟಿಯೊ ಸಾಫ್ಟ್‌ವೇರ್ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಎಂಡ್‌ಪಾಯಿಂಟ್‌ನಲ್ಲಿ ಏನಾದರೂ ತಪ್ಪಾದಾಗ ವಿನಂತಿಗಳ ಸ್ಟ್ರೀಮ್ ಮತ್ತು ಸಮಸ್ಯೆ ಧಾರಕದ ನಡುವಿನ ಸಂಪರ್ಕವನ್ನು ತೆರೆಯುತ್ತದೆ, ಉದಾಹರಣೆಗೆ, ಸರ್ವರ್ ಕ್ರ್ಯಾಶ್ ಮಾಡಿದಾಗ ಅಥವಾ ಪ್ರಾರಂಭಿಸಿದಾಗ ನಿಧಾನವಾಗಿ.

ಇದಲ್ಲದೆ, ಎರಡನೆಯ ಪ್ರಕರಣದಲ್ಲಿ ಕೇವಲ ಹೆಚ್ಚಿನ ಸಮಸ್ಯೆಗಳಿವೆ, ಏಕೆಂದರೆ ಒಂದು ಕಂಟೇನರ್‌ನ ಬ್ರೇಕ್‌ಗಳು ಅದನ್ನು ಪ್ರವೇಶಿಸುವ ಸೇವೆಗಳಲ್ಲಿ ವಿಳಂಬದ ಕ್ಯಾಸ್ಕೇಡ್ ಅನ್ನು ಉಂಟುಮಾಡುವುದಿಲ್ಲ ಮತ್ತು ಇದರ ಪರಿಣಾಮವಾಗಿ, ಒಟ್ಟಾರೆಯಾಗಿ ಸಿಸ್ಟಮ್ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ, ಆದರೆ ಪುನರಾವರ್ತಿತವಾಗಿ ಉತ್ಪಾದಿಸುತ್ತದೆ. ಈಗಾಗಲೇ ನಿಧಾನವಾಗಿ ಚಾಲನೆಯಲ್ಲಿರುವ ಸೇವೆಗೆ ವಿನಂತಿಗಳು, ಇದು ಪರಿಸ್ಥಿತಿಯನ್ನು ಉಲ್ಬಣಗೊಳಿಸುತ್ತದೆ .

ಸಿದ್ಧಾಂತದಲ್ಲಿ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್

ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಒಂದು ಪ್ರಾಕ್ಸಿಯಾಗಿದ್ದು ಅದು ಅಂತಿಮ ಬಿಂದುವಿಗೆ ವಿನಂತಿಗಳ ಹರಿವನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ. ಈ ಹಂತವು ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿದಾಗ ಅಥವಾ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಅವಲಂಬಿಸಿ, ನಿಧಾನಗೊಳಿಸಲು ಪ್ರಾರಂಭಿಸಿದಾಗ, ಪ್ರಾಕ್ಸಿಯು ಕಂಟೇನರ್‌ನೊಂದಿಗೆ ಸಂಪರ್ಕವನ್ನು ಮುರಿಯುತ್ತದೆ. ಲೋಡ್ ಬ್ಯಾಲೆನ್ಸಿಂಗ್ ಕಾರಣದಿಂದಾಗಿ ಟ್ರಾಫಿಕ್ ಅನ್ನು ಇತರ ಕಂಟೈನರ್‌ಗಳಿಗೆ ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತದೆ. ಕೊಟ್ಟಿರುವ ನಿದ್ರೆಯ ವಿಂಡೋಗೆ ಸಂಪರ್ಕವು ತೆರೆದಿರುತ್ತದೆ, ಎರಡು ನಿಮಿಷಗಳನ್ನು ಹೇಳಿ, ಮತ್ತು ನಂತರ ಅರ್ಧ-ತೆರೆದಿದೆ ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. ಮುಂದಿನ ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುವ ಪ್ರಯತ್ನವು ಸಂಪರ್ಕದ ಮುಂದಿನ ಸ್ಥಿತಿಯನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ. ಸೇವೆಯೊಂದಿಗೆ ಎಲ್ಲವೂ ಸರಿಯಾಗಿದ್ದರೆ, ಸಂಪರ್ಕವು ಕೆಲಸದ ಸ್ಥಿತಿಗೆ ಮರಳುತ್ತದೆ ಮತ್ತು ಮತ್ತೆ ಮುಚ್ಚಲ್ಪಡುತ್ತದೆ. ಸೇವೆಯಲ್ಲಿ ಇನ್ನೂ ಏನಾದರೂ ತಪ್ಪಾಗಿದ್ದರೆ, ಸಂಪರ್ಕವನ್ನು ಕಡಿತಗೊಳಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ನಿದ್ರೆ ವಿಂಡೋವನ್ನು ಮರು-ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ. ಸರಳೀಕೃತ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಸ್ಥಿತಿಯ ರೇಖಾಚಿತ್ರವು ಹೇಗೆ ಕಾಣುತ್ತದೆ ಎಂಬುದು ಇಲ್ಲಿದೆ:

ಇಸ್ಟಿಯೊ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್: ದೋಷಪೂರಿತ ಧಾರಕಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದು
ಇದೆಲ್ಲವೂ ಸಿಸ್ಟಮ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಮಟ್ಟದಲ್ಲಿ ನಡೆಯುತ್ತದೆ ಎಂಬುದನ್ನು ಇಲ್ಲಿ ಗಮನಿಸಬೇಕು. ಆದ್ದರಿಂದ ಕೆಲವು ಹಂತದಲ್ಲಿ ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಕಲಿಸಬೇಕಾಗುತ್ತದೆ, ಉದಾಹರಣೆಗೆ ಪ್ರತಿಕ್ರಿಯೆಯಾಗಿ ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯವನ್ನು ಒದಗಿಸುವುದು ಅಥವಾ ಸಾಧ್ಯವಾದರೆ, ಸೇವೆಯ ಅಸ್ತಿತ್ವವನ್ನು ನಿರ್ಲಕ್ಷಿಸುವುದು. ಇದಕ್ಕಾಗಿ ಬಲ್ಕ್‌ಹೆಡ್ ಮಾದರಿಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ, ಆದರೆ ಇದು ಈ ಲೇಖನದ ವ್ಯಾಪ್ತಿಯನ್ನು ಮೀರಿದೆ.

ಆಚರಣೆಯಲ್ಲಿ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್

ಉದಾಹರಣೆಗೆ, ನಾವು OpenShift ನಲ್ಲಿ ನಮ್ಮ ಶಿಫಾರಸು ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ನ ಎರಡು ಆವೃತ್ತಿಗಳನ್ನು ರನ್ ಮಾಡುತ್ತೇವೆ. ಆವೃತ್ತಿ 1 ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಆದರೆ v2 ನಲ್ಲಿ ನಾವು ಸರ್ವರ್‌ನಲ್ಲಿ ನಿಧಾನಗತಿಯನ್ನು ಅನುಕರಿಸಲು ವಿಳಂಬವನ್ನು ನಿರ್ಮಿಸುತ್ತೇವೆ. ಫಲಿತಾಂಶಗಳನ್ನು ವೀಕ್ಷಿಸಲು, ಉಪಕರಣವನ್ನು ಬಳಸಿ ಮುತ್ತಿಗೆ:

siege -r 2 -c 20 -v customer-tutorial.$(minishift ip).nip.io

ಇಸ್ಟಿಯೊ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್: ದೋಷಪೂರಿತ ಧಾರಕಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದು
ಎಲ್ಲವೂ ಕೆಲಸ ಮಾಡಲು ತೋರುತ್ತದೆ, ಆದರೆ ಯಾವ ವೆಚ್ಚದಲ್ಲಿ? ಮೊದಲ ನೋಟದಲ್ಲಿ, ನಾವು 100% ಲಭ್ಯತೆಯನ್ನು ಹೊಂದಿದ್ದೇವೆ, ಆದರೆ ಹತ್ತಿರದಿಂದ ನೋಡೋಣ - ಗರಿಷ್ಠ ವಹಿವಾಟಿನ ಅವಧಿಯು 12 ಸೆಕೆಂಡುಗಳು. ಇದು ಸ್ಪಷ್ಟವಾಗಿ ಅಡಚಣೆಯಾಗಿದೆ ಮತ್ತು ಅದನ್ನು ವಿಸ್ತರಿಸಬೇಕಾಗಿದೆ.

ಇದನ್ನು ಮಾಡಲು, ನಿಧಾನ ಧಾರಕಗಳಿಗೆ ಕರೆಗಳನ್ನು ತೆಗೆದುಹಾಕಲು ನಾವು ಇಸ್ಟಿಯೊವನ್ನು ಬಳಸುತ್ತೇವೆ. ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಅನುಗುಣವಾದ ಸಂರಚನೆಯು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

ಇಸ್ಟಿಯೊ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್: ದೋಷಪೂರಿತ ಧಾರಕಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದು
httpMaxRequestsPerConnection ಪ್ಯಾರಾಮೀಟರ್‌ನೊಂದಿಗಿನ ಕೊನೆಯ ಸಾಲು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸಂಪರ್ಕಕ್ಕೆ ಹೆಚ್ಚುವರಿಯಾಗಿ ಇನ್ನೊಂದನ್ನು ರಚಿಸಲು ಪ್ರಯತ್ನಿಸುವಾಗ ಸಂಪರ್ಕವನ್ನು ಕಡಿತಗೊಳಿಸಬೇಕು ಎಂದು ಸಂಕೇತಿಸುತ್ತದೆ. ನಮ್ಮ ಕಂಟೇನರ್ ನಿಧಾನವಾದ ಸೇವೆಯನ್ನು ಅನುಕರಿಸುವ ಕಾರಣ, ಅಂತಹ ಸಂದರ್ಭಗಳು ನಿಯತಕಾಲಿಕವಾಗಿ ಉದ್ಭವಿಸುತ್ತವೆ, ಮತ್ತು ನಂತರ ಇಸ್ಟಿಯೊ 503 ದೋಷವನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ, ಆದರೆ ಇದು ಮುತ್ತಿಗೆ ತೋರಿಸುತ್ತದೆ:

ಇಸ್ಟಿಯೊ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್: ದೋಷಪೂರಿತ ಧಾರಕಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದು

ಸರಿ, ನಮ್ಮಲ್ಲಿ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಇದೆ, ಮುಂದೇನು?

ಆದ್ದರಿಂದ, ನಾವು ಸೇವೆಗಳ ಮೂಲ ಕೋಡ್ ಅನ್ನು ಸ್ಪರ್ಶಿಸದೆಯೇ ಸ್ವಯಂಚಾಲಿತ ಸ್ಥಗಿತಗೊಳಿಸುವಿಕೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ್ದೇವೆ. ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಮತ್ತು ಮೇಲೆ ವಿವರಿಸಿದ ಪೂಲ್ ಎಜೆಕ್ಷನ್ ವಿಧಾನವನ್ನು ಬಳಸಿಕೊಂಡು, ನಾವು ಸಂಪನ್ಮೂಲ ಪೂಲ್‌ನಿಂದ ಬ್ರೇಕ್ ಕಂಟೇನರ್‌ಗಳನ್ನು ಸಾಮಾನ್ಯ ಸ್ಥಿತಿಗೆ ಬರುವವರೆಗೆ ತೆಗೆದುಹಾಕಬಹುದು ಮತ್ತು ನಿರ್ದಿಷ್ಟ ಆವರ್ತನದಲ್ಲಿ ಅವುಗಳ ಸ್ಥಿತಿಯನ್ನು ಪರಿಶೀಲಿಸಬಹುದು - ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ, ಇದು ಎರಡು ನಿಮಿಷಗಳು (ಸ್ಲೀಪ್‌ವಿಂಡೋ ಪ್ಯಾರಾಮೀಟರ್).

503 ದೋಷಕ್ಕೆ ಪ್ರತಿಕ್ರಿಯಿಸುವ ಅಪ್ಲಿಕೇಶನ್‌ನ ಸಾಮರ್ಥ್ಯವನ್ನು ಇನ್ನೂ ಮೂಲ ಕೋಡ್ ಮಟ್ಟದಲ್ಲಿ ಹೊಂದಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ. ಪರಿಸ್ಥಿತಿಗೆ ಅನುಗುಣವಾಗಿ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಅನ್ನು ಬಳಸಲು ಹಲವು ತಂತ್ರಗಳಿವೆ.

ಮುಂದಿನ ಪೋಸ್ಟ್‌ನಲ್ಲಿ: ನಾವು ಈಗಾಗಲೇ ಅಂತರ್ನಿರ್ಮಿತ ಅಥವಾ ಸುಲಭವಾಗಿ Istio ಗೆ ಸೇರಿಸಲಾದ ಪತ್ತೆಹಚ್ಚುವಿಕೆ ಮತ್ತು ಮೇಲ್ವಿಚಾರಣೆಯ ಕುರಿತು ಮಾತನಾಡುತ್ತೇವೆ, ಹಾಗೆಯೇ ಸಿಸ್ಟಂನಲ್ಲಿ ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ದೋಷಗಳನ್ನು ಹೇಗೆ ಪರಿಚಯಿಸುವುದು.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ