Circuit breaker design pattern
ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಎಂಬುದು ತಂತ್ರಾಂಶ ಅಭಿವೃದ್ಧಿಯಲ್ಲಿ ಬಳಸಲಾಗುವ ವಿನ್ಯಾಸ ಮಾದರಿಯಾಗಿದೆ. ವೈಫಲ್ಯಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಇದನ್ನು ಬಳಸಲಾಗುತ್ತದೆ ಮತ್ತು ನಿರ್ವಹಣೆಯ ಸಮಯದಲ್ಲಿ, ತಾತ್ಕಾಲಿಕ ಬಾಹ್ಯ ವ್ಯವಸ್ಥೆಯ ವೈಫಲ್ಯ ಅಥವಾ ಅನಿರೀಕ್ಷಿತ ವ್ಯವಸ್ಥೆಯ ತೊಂದರೆಗಳು ನಿರಂತರವಾಗಿ ಪುನರಾವರ್ತನೆಯಾಗುವುದನ್ನು ತಡೆಯುವ ತರ್ಕವನ್ನು ಆವರಿಸುತ್ತದೆ. ಒಂದು ಅಪ್ಲಿಕೇಶನ್ ಸೆಕೆಂಡಿಗೆ 100 ಬಾರಿ ಡೇಟಾಬೇಸ್ಗೆ ಸಂಪರ್ಕಗೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಡೇಟಾಬೇಸ್ ವಿಫಲಗೊಳ್ಳುತ್ತದೆ ಎಂದು ಭಾವಿಸಿ. ಅಪ್ಲಿಕೇಶನ್ ಡಿಸೈನರ್ ಅದೇ ದೋಷವನ್ನು ನಿರಂತರವಾಗಿ ಪುನರಾವರ್ತಿಸಲು ಬಯಸುವುದಿಲ್ಲ. ಅವರು ಟಿಸಿಪಿ ಸಂಪರ್ಕದ ಸಮಯಾವಧಿಗಾಗಿ ಕಾಯದೆ ದೋಷವನ್ನು ತ್ವರಿತವಾಗಿ ಮತ್ತು ಸೊಗಸಾಗಿ ನಿಭಾಯಿಸಲು ಬಯಸುತ್ತಾರೆ. ಬಾಹ್ಯ ಸೇವೆಯ ಲಭ್ಯತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಮಾನ್ಯವಾಗಿ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಅನ್ನು ಬಳಸಬಹುದು. ಬಾಹ್ಯ ಸೇವೆಯು ಡೇಟಾಬೇಸ್ ಸರ್ವರ್ ಅಥವಾ ಅಪ್ಲಿಕೇಶನ್ ಬಳಸುವ ವೆಬ್ ಸೇವೆಯಾಗಿರಬಹುದು. ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ವೈಫಲ್ಯಗಳನ್ನು ಪತ್ತೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ವೈಫಲ್ಯಕ್ಕೆ ಗುರಿಯಾಗುವ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸಲು ಅಪ್ಲಿಕೇಶನ್ ಪ್ರಯತ್ನಿಸುವುದನ್ನು ತಡೆಯುತ್ತದೆ (ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಲು ಸುರಕ್ಷಿತವಾಗುವವರೆಗೆ). ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ವಿನ್ಯಾಸ ಮಾದರಿಯ ಅನುಷ್ಠಾನದ ಅನುಷ್ಠಾನವು ವಿನಂತಿಗಳ ಸರಣಿಯಲ್ಲಿ ಸಂಪರ್ಕದ ಸ್ಥಿತಿಯನ್ನು ಉಳಿಸಿಕೊಳ್ಳಬೇಕಾಗುತ್ತದೆ. ನಿಜವಾದ ವಿನಂತಿಗಳಿಂದ ವೈಫಲ್ಯಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಇದು ತರ್ಕವನ್ನು ಆಫ್ ಲೋಡ್ ಮಾಡಬೇಕು. ಆದ್ದರಿಂದ, ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ನೊಳಗಿನ ಸ್ಟೇಟ್ ಯಂತ್ರವು ಅದರ ಮೂಲಕ ಹಾದುಹೋಗುವ ವಿನಂತಿಗಳೊಂದಿಗೆ ಏಕಕಾಲದಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸಬೇಕಾಗುತ್ತದೆ. ಇದನ್ನು ಸಾಧಿಸುವ ಒಂದು ಮಾರ್ಗವೆಂದರೆ ಅಸಿಂಕ್ರೊನಸ್ ಆಗಿರುವುದು. ಬಹು-ನೋಡ್ (ಕ್ಲಸ್ಟರ್ಡ್) ಸರ್ವರ್ನಲ್ಲಿ, ಅಪ್ಸ್ಟ್ರೀಮ್ ಸೇವೆಯ ಸ್ಥಿತಿಯು ಕ್ಲಸ್ಟರ್ನಲ್ಲಿರುವ ಎಲ್ಲಾ ನೋಡ್ಗಳಲ್ಲಿ ಪ್ರತಿಫಲಿಸಬೇಕಾಗುತ್ತದೆ. ಆದ್ದರಿಂದ, ಅನುಷ್ಠಾನಗಳು ನಿರಂತರ ಶೇಖರಣಾ ಪದರವನ್ನು ಬಳಸಬೇಕಾಗಬಹುದು, ಉದಾಹರಣೆಗೆ. ಅಪ್ಲಿಕೇಶನ್ಗೆ ಬಾಹ್ಯ ಸೇವೆಯ ಲಭ್ಯತೆಯನ್ನು ದಾಖಲಿಸಲು ಮೆಮ್ಕ್ಯಾಶ್ಡ್ ಅಥವಾ ರೆಡಿಸ್ನಂತಹ ನೆಟ್ವರ್ಕ್ ಕ್ಯಾಶ್ ಅಥವಾ ಸ್ಥಳೀಯ ಕ್ಯಾಶ್ (ಡಿಸ್ಕ್ ಅಥವಾ ಮೆಮೊರಿ ಆಧಾರಿತ). ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ನಿರ್ದಿಷ್ಟ ಮಧ್ಯಂತರದಲ್ಲಿ ಬಾಹ್ಯ ಸೇವೆಯ ಸ್ಥಿತಿಯನ್ನು ದಾಖಲಿಸುತ್ತದೆ. ಅಪ್ಲಿಕೇಶನ್ನಿಂದ ಬಾಹ್ಯ ಸೇವೆಯನ್ನು ಬಳಸುವ ಮೊದಲು, ಪ್ರಸ್ತುತ ಸ್ಥಿತಿಯನ್ನು ಹಿಂಪಡೆಯಲು ಶೇಖರಣಾ ಪದರವನ್ನು ಪ್ರಶ್ನಿಸಲಾಗುತ್ತದೆ. ಕಾರ್ಯಕ್ಷಮತೆಯ ಪರಿಣಾಮಗಳು ಪ್ರಯೋಜನಗಳು ಪರಿಣಾಮಗಳನ್ನು ಮೀರಿಸುತ್ತವೆ ಎಂದು ಹೇಳುವುದು ಸುರಕ್ಷಿತವಾಗಿದ್ದರೂ, ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವುದರಿಂದ ಶೇಖರಣಾ ಸ್ಥಳ, ಅಪ್ಲಿಕೇಶನ್ ಸಂಕೀರ್ಣತೆ ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಅಪ್ಲಿಕೇಶನ್ಗೆ ಕಂಪ್ಯೂಟೇಶನಲ್ ವೆಚ್ಚದ ಮೇಲೆ ನಕಾರಾತ್ಮಕ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ. ಏಕೆಂದರೆ ಇದು ಸರ್ಕ್ಯೂಟ್ನ ಸ್ಥಿತಿಯನ್ನು ಪರಿಶೀಲಿಸಲು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮಾರ್ಗದಲ್ಲಿ ಹೆಚ್ಚುವರಿ ಕೋಡ್ ಅನ್ನು ಸೇರಿಸುತ್ತದೆ. ಇದನ್ನು ಕೆಳಗಿನ ಪಿಎಚ್ಪಿ ಉದಾಹರಣೆಯಲ್ಲಿ ಕಾಣಬಹುದು, ಅಲ್ಲಿ ಡೇಟಾಬೇಸ್ ಸ್ಥಿತಿಗಾಗಿ ಎಪಿಸಿಯನ್ನು ಪರಿಶೀಲಿಸಲು ಕೆಲವು ಹೆಚ್ಚುವರಿ ಚಕ್ರಗಳು ವೆಚ್ಚವಾಗುತ್ತವೆ. ಅಲ್ಲದೆ, ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಕೋಡ್ ಅನ್ನು ಚಲಾಯಿಸುವುದರಿಂದ ಅದು ಚಾಲನೆಯಲ್ಲಿರುವ ಸಿಸ್ಟಮ್ನಲ್ಲಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸುತ್ತದೆ, ಹೀಗಾಗಿ "ನೈಜ" ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಕಡಿಮೆ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಶಕ್ತಿಯನ್ನು ಬಿಡುತ್ತದೆ. ಬಳಸಿದ ಶೇಖರಣಾ ಪದರ ಮತ್ತು ಸಾಮಾನ್ಯವಾಗಿ ಲಭ್ಯವಿರುವ ಸಂಪನ್ಮೂಲಗಳ ಮೇಲೆ ಎಷ್ಟು ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ. ಈ ನಿಟ್ಟಿನಲ್ಲಿ ಅತಿದೊಡ್ಡ ಅಂಶಗಳು ಕ್ಯಾಶ್ ಪ್ರಕಾರವಾಗಿದೆ, ಉದಾಹರಣೆಗೆ, ಡಿಸ್ಕ್-ಆಧಾರಿತ ವರ್ಸಸ್ ಮೆಮೊರಿ-ಆಧಾರಿತ ಮತ್ತು ಲೋಕಲ್ ವರ್ಸಸ್ ನೆಟ್ವರ್ಕ್. ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ನ ವಿವಿಧ ಸ್ಥಿತಿಗಳು ಮುಚ್ಚಿದ ತೆರೆದ ಅರ್ಧ-ತೆರೆದ ಮುಚ್ಚಿದ ಸ್ಥಿತಿ ಎಲ್ಲವೂ ಸಾಮಾನ್ಯವಾದಾಗ, ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ಗಳು ಮುಚ್ಚಲ್ಪಟ್ಟವು, ಮತ್ತು ಎಲ್ಲಾ ವಿನಂತಿಗಳು ಕೆಳಗೆ ತೋರಿಸಿರುವಂತೆ ಸೇವೆಗಳಿಗೆ ಹಾದುಹೋಗುತ್ತವೆ. ವೈಫಲ್ಯಗಳ ಸಂಖ್ಯೆಯು ಮಿತಿಯನ್ನು ಮೀರಿದರೆ, ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಚಲಿಸುತ್ತದೆ ಮತ್ತು ಮುಕ್ತ ಸ್ಥಿತಿಗೆ ಹೋಗುತ್ತದೆ. ಮುಕ್ತ ಸ್ಥಿತಿಯಲ್ಲಿ ಈ ಸ್ಥಿತಿಯಲ್ಲಿ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಸೇವೆಗಳನ್ನು ಆಹ್ವಾನಿಸದೆಯೇ ತಕ್ಷಣವೇ ದೋಷವನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ. ಟೈಮ್ಔಟ್ ಅವಧಿ ಮುಗಿದ ನಂತರ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ಗಳು ಅರ್ಧ-ತೆರೆದ ಸ್ಥಿತಿಗೆ ಚಲಿಸುತ್ತವೆ. ಸಾಮಾನ್ಯವಾಗಿ, ಇದು ಸಮಯಾವಧಿಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಮೇಲ್ವಿಚಾರಣಾ ವ್ಯವಸ್ಥೆಯನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಅರ್ಧ-ತೆರೆದ ಸ್ಥಿತಿ ಈ ಸ್ಥಿತಿಯಲ್ಲಿ, ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಮೈಕ್ರೋಸರ್ವಿಸ್ನಿಂದ ಸೀಮಿತ ಸಂಖ್ಯೆಯ ವಿನಂತಿಗಳನ್ನು ಪಾಸ್ಸ್ಟ್ರೂ ಮಾಡಲು ಮತ್ತು ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಆಹ್ವಾನಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. ವಿನಂತಿಗಳು ಯಶಸ್ವಿಯಾದರೆ, ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಮುಚ್ಚಿದ ಸ್ಥಿತಿಗೆ ಹೋಗುತ್ತದೆ. ಆದಾಗ್ಯೂ, ವಿನಂತಿಗಳು ವಿಫಲವಾದರೆ, ಅದು ಓಪನ್ ಸ್ಟೇಟ್ಗೆ ಹಿಂತಿರುಗುತ್ತದೆ. ಉದಾಹರಣೆ ಅನುಷ್ಠಾನ ಪಿಎಚ್ಪಿ ಕೆಳಗಿನವು ಪಿಎಚ್ಪಿಯಲ್ಲಿನ ಮಾದರಿ ಅನುಷ್ಠಾನವಾಗಿದೆ. ಪರಿಕಲ್ಪನೆಯ ಪುರಾವೆಯು ಮೈಎಸ್ಕ್ಯೂಎಲ್ ಸರ್ವರ್ನ ಸ್ಥಿತಿಯನ್ನು ಶೇರ್ಡ್ ಮೆಮೊರಿ ಕ್ಯಾಶ್ (ಎಪಿಸಿ) ಆಗಿ ಸಂಗ್ರಹಿಸುತ್ತದೆ. ಈ ಕೆಳಗಿನ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಕ್ರಾಂಟ್ಯಾಬ್ ಮೂಲಕ ನಿಗದಿತ ಮಧ್ಯಂತರದಲ್ಲಿ ಚಲಾಯಿಸಬಹುದು. ("ಲೋಕಲ್ಹೋಸ್ಟ್", "ಬಳಕೆದಾರಹೆಸರು", "ಪಾಸ್ವರ್ಡ್"); ("$Mysqli-> ಕನೆಕ್ಟ್ _ ಎರರ್") {apc _ ಸ್ಟೋರ್ ("dbStatus", "ಡೌನ್");} ಬೇರೆ {apc _ ಸ್ಟೋರ್ ("dbStatus", "ಅಪ್"); $ಕವಲು-> ಕ್ಲೋಸ್ ();} ಒಂದು ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ (apc _ fetch ("dbStatus") = = = "ಡೌನ್") {ಪ್ರತಿಧ್ವನಿ "ಡೇಟಾಬೇಸ್ ಸರ್ವರ್ ಪ್ರಸ್ತುತ ಲಭ್ಯವಿಲ್ಲ. ದಯವಿಟ್ಟು ಒಂದು ನಿಮಿಷದಲ್ಲಿ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ. "; ನಿರ್ಗಮನ;} $ಮೈಸ್ಕ್ವಿಲಿ = ಹೊಸ ಮೈಸ್ಕ್ವಿಲಿ (" "ಸ್ಥಳೀಯ ಹೋಸ್ಟ್", "ಬಳಕೆದಾರಹೆಸರು", "ದತ್ತಸಂಚಯ"); $ಫಲಿತಾಂಶ = $ಮೈಸ್ಕ್ವಿಲಿ-> ಪ್ರಶ್ನೆ ("" ಟೇಬಲ್ನಿಂದ ಆಯ್ಕೆ ಮಾಡಿ "); ಬಾಹ್ಯ ಕೊಂಡಿಗಳು ರೇಖಾಚಿತ್ರಗಳೊಂದಿಗೆ ಪಿಎಚ್ಪಿ ಅನುಷ್ಠಾನದ ಉದಾಹರಣೆ ಸಿ #ಅನ್ನು ಬಳಸಿಕೊಂಡು ಪಾಲಿಯೊಂದಿಗೆ ಮರುಪ್ರಯತ್ನ ಮಾದರಿಯ ಉದಾಹರಣೆ ಪಾಲಿ ಪಾಲಿ ನ್ಯುಗೆಟ್ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಆಂಡರ್ಸ್ ಲೈಬೆಕರ್ಗಳಿಂದ ಸಿ #ಅನುಷ್ಠಾನದ ಉದಾಹರಣೆ ರೆಸ್ಟ್ಫುಲ್ ವಾಸ್ತುಶಿಲ್ಪದಲ್ಲಿ ಅನ್ವಯಿಸಲಾದ ಪೈಥಾನ್ ಸ್ಥಿರತೆಯ ಮಾದರಿಗಳಲ್ಲಿ ಅಲೆಕ್ಸಾಂಡರ್ ನಿಕಿಟಿನ್ ಅನುಷ್ಠಾನದಿಂದ ಸಿ #ಅನುಷ್ಠಾನದ ಉದಾಹರಣೆ ಮಾರ್ಟಿನ್ ಫೌಲರ್ ಬ್ಲಿಕಿ ಸಾಫ್ಟ್ವೇರ್ ವಿನ್ಯಾಸ ಮಾದರಿಗಳು ಉದಾಹರಣೆಗೆ ಪಿಎಚ್ಪಿ ಕೋಡ್ ಹೊಂದಿರುವ ಲೇಖನಗಳು"