$lang['tuto'] = "ಟ್ಯುಟೋರಿಯಲ್"; ?> ಡಾಕರೈಸ್ಡ್ ಪರಿಸರದಲ್ಲಿ

ಡಾಕರೈಸ್ಡ್ ಪರಿಸರದಲ್ಲಿ ಎರ್ಲಾಂಗ್/ಎಲಿಕ್ಸಿರ್ ಹಾಟ್ ಕೋಡ್ ವಿನಿಮಯದ ಸಾಧ್ಯತೆ ಮತ್ತು ತೊಂದರೆಗಳು

ಡಾಕರೈಸ್ಡ್ ಪರಿಸರದಲ್ಲಿ ಎರ್ಲಾಂಗ್/ಎಲಿಕ್ಸಿರ್ ಹಾಟ್ ಕೋಡ್ ವಿನಿಮಯದ ಸಾಧ್ಯತೆ ಮತ್ತು ತೊಂದರೆಗಳು
Hot code swap

ಎರ್ಲಾಂಗ್/ಎಲಿಕ್ಸಿರ್ ಮತ್ತು ಡಾಕರ್‌ನೊಂದಿಗೆ ಹಾಟ್ ಕೋಡ್ ವಿನಿಮಯ: ಇದು ಸಾಧ್ಯವೇ?

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

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

ಆದರೆ ಈ ಎರಡು ತೋರಿಕೆಯಲ್ಲಿ ವಿರುದ್ಧವಾದ ವಿಧಾನಗಳನ್ನು ಮದುವೆಯಾಗಲು ಒಂದು ಮಾರ್ಗವಿದ್ದರೆ ಏನು? ಕೆಲವು ಡೆವಲಪರ್‌ಗಳು ಚಾಲನೆಯಲ್ಲಿರುವ ಕಂಟೈನರ್‌ಗಳಾದ್ಯಂತ ನವೀಕರಣಗಳನ್ನು ಪ್ರಚಾರ ಮಾಡಲು ಗುಪ್ತ ನೋಡ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ವಿತರಿಸಿದ ಸಿಸ್ಟಮ್‌ಗಳೊಂದಿಗೆ ಪ್ರಯೋಗಿಸುತ್ತಾರೆ. ಈ ವಿಧಾನವು ಅಪಾಯಕಾರಿ ಆದರೆ ಕುತೂಹಲಕಾರಿ ಎಂದು ತೋರುತ್ತದೆ. ತಡೆರಹಿತ ನವೀಕರಣಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವಾಗ ಈ ವಿಧಾನವು ಸ್ಥಿರತೆಯನ್ನು ಕಾಪಾಡಿಕೊಳ್ಳಬಹುದೇ? 🤔

ಈ ಲೇಖನದಲ್ಲಿ, ಅದನ್ನು ಸಾಧಿಸಲು ಸಾಧ್ಯವೇ ಎಂದು ನಾವು ಅನ್ವೇಷಿಸುತ್ತೇವೆ ಡಾಕರೈಸ್ಡ್ ಎರ್ಲಾಂಗ್/ಎಲಿಕ್ಸಿರ್ ಪರಿಸರದಲ್ಲಿ. ನಾವು ಪ್ರಾಯೋಗಿಕ ಒಳನೋಟಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತೇವೆ, ಮಾಡಬೇಕಾದವುಗಳು ಮತ್ತು ಮಾಡಬಾರದು, ಮತ್ತು ಡಾಕರ್ ಮತ್ತು ಡೈನಾಮಿಕ್ ಕೋಡ್ ನವೀಕರಣಗಳ ನಡುವಿನ ಅಂತರವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಸಾಕಷ್ಟು ಧೈರ್ಯವಿರುವವರಿಗೆ ಸಂಭಾವ್ಯ ಎಚ್ಚರಿಕೆಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸುತ್ತೇವೆ.

ಆಜ್ಞೆ ಬಳಕೆಯ ಉದಾಹರಣೆ
net_kernel:start/1 ಎರ್ಲಾಂಗ್ ವಿತರಣೆ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಗುಪ್ತ ಅಥವಾ ಗೋಚರ ನೋಡ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. ಇದು ಕ್ಲಸ್ಟರ್‌ನೊಳಗೆ ಸುರಕ್ಷಿತವಾಗಿ ಸಂವಹನ ನಡೆಸಲು ನೋಡ್‌ಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
rpc:call/4 ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ನೋಡ್‌ನಲ್ಲಿ ರಿಮೋಟ್ ಕಾರ್ಯವಿಧಾನದ ಕರೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ, ವಿತರಿಸಿದ ನೋಡ್‌ಗಳಲ್ಲಿ ಕೋಡ್ ನವೀಕರಣಗಳಂತಹ ಕಾರ್ಯಗಳನ್ನು ಪ್ರಚೋದಿಸಲು ಅನುಮತಿಸುತ್ತದೆ.
code:add_patha/1 Erlang ರನ್‌ಟೈಮ್‌ನ ಕೋಡ್ ಹುಡುಕಾಟ ಮಾರ್ಗಗಳಿಗೆ ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಮಾರ್ಗವನ್ನು ಸೇರಿಸುತ್ತದೆ, ನೋಡ್ ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸದೆಯೇ ಹೊಸ ಕೋಡ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಲು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ.
code:load_file/1 ಚಾಲನೆಯಲ್ಲಿರುವ Erlang/Elixir ನೋಡ್‌ಗೆ ನಿರ್ದಿಷ್ಟ ಮಾಡ್ಯೂಲ್ ಫೈಲ್ ಅನ್ನು ಲೋಡ್ ಮಾಡುತ್ತದೆ, ಮಾಡ್ಯೂಲ್‌ನ ನವೀಕರಿಸಿದ ಆವೃತ್ತಿಯು ಕಾರ್ಯರೂಪಕ್ಕೆ ಬರಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
Node.list/0 ಪ್ರಸ್ತುತ ಚಾಲನೆಯಲ್ಲಿರುವ ನೋಡ್‌ಗೆ ಸಂಪರ್ಕಗೊಂಡಿರುವ ನೋಡ್‌ಗಳ ಪಟ್ಟಿಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ವಿತರಿಸಿದ ಸಿಸ್ಟಮ್‌ನಾದ್ಯಂತ ನವೀಕರಣಗಳನ್ನು ಪ್ರಸಾರ ಮಾಡಲು ಮುಖ್ಯವಾಗಿದೆ.
Node.spawn/2 ಕಾರ್ಯವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ರಿಮೋಟ್ ನೋಡ್‌ನಲ್ಲಿ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಹುಟ್ಟುಹಾಕುತ್ತದೆ, ಇತರ ನೋಡ್‌ಗಳಲ್ಲಿ ಕೋಡ್ ನವೀಕರಣಗಳಂತಹ ಕಾರ್ಯಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲು ಉಪಯುಕ್ತವಾಗಿದೆ.
Code.append_path/1 ಎಲಿಕ್ಸಿರ್‌ನ ಕೋಡ್ ಲೋಡರ್‌ಗೆ ಡೈರೆಕ್ಟರಿ ಮಾರ್ಗವನ್ನು ಸೇರಿಸುತ್ತದೆ, ಹೊಸ ಅಥವಾ ನವೀಕರಿಸಿದ ಮಾಡ್ಯೂಲ್‌ಗಳಿಗಾಗಿ ರನ್‌ಟೈಮ್ ಕೋಡ್ ಲುಕಪ್ ಅನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ವಿಸ್ತರಿಸುತ್ತದೆ.
docker build -t ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಡಾಕರ್‌ಫೈಲ್‌ನಿಂದ ಡಾಕರ್ ಚಿತ್ರವನ್ನು ನಿರ್ಮಿಸುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ನಿಯೋಜನೆಗಾಗಿ ಟ್ಯಾಗ್ ಮಾಡುತ್ತದೆ. ನವೀಕರಿಸಿದ ಕೋಡ್ ಚಿತ್ರಗಳನ್ನು ತಯಾರಿಸಲು ಇದು ಅವಶ್ಯಕವಾಗಿದೆ.
docker run -d ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಚಿತ್ರವನ್ನು ಬಳಸಿಕೊಂಡು ಬೇರ್ಪಟ್ಟ ಮೋಡ್‌ನಲ್ಲಿ ಹೊಸ ಕಂಟೇನರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ, ಧಾರಕವು ಕನಿಷ್ಟ ಅಲಭ್ಯತೆಯೊಂದಿಗೆ ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಚಲಿಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
docker stop ಚಾಲನೆಯಲ್ಲಿರುವ ಡಾಕರ್ ಕಂಟೇನರ್ ಅನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ, ನವೀಕರಿಸಿದ ಚಿತ್ರದೊಂದಿಗೆ ಹೊಸ ನಿದರ್ಶನವನ್ನು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನವೀಕರಿಸಲು ಅನುಮತಿಸುತ್ತದೆ.

ಡಾಕರ್‌ನಲ್ಲಿ ಎರ್ಲಾಂಗ್/ಎಲಿಕ್ಸಿರ್‌ಗಾಗಿ ಹಾಟ್ ಕೋಡ್ ವಿನಿಮಯವನ್ನು ಸಾಧಿಸುವುದು

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

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

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

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

ಡಾಕರ್ ಕಂಟೈನರ್‌ಗಳಲ್ಲಿ ಎರ್ಲಾಂಗ್/ಎಲಿಕ್ಸಿರ್‌ನೊಂದಿಗೆ ಹಾಟ್ ಕೋಡ್ ವಿನಿಮಯ: ಮಾಡ್ಯುಲರ್ ಪರಿಹಾರಗಳು

ವಿತರಿಸಿದ ನವೀಕರಣಗಳಿಗಾಗಿ ಹಿಡನ್ ನೋಡ್‌ನೊಂದಿಗೆ Erlang/Elixir ಅನ್ನು ಬಳಸಿಕೊಂಡು ಬ್ಯಾಕೆಂಡ್ ಪರಿಹಾರ

% Define the Erlang distributed system setup
-module(hot_code_swap).
-export([start_hidden_node/0, distribute_update/1]).

% Start a hidden node for code updates
start_hidden_node() ->
    NodeName = "hidden_node@127.0.0.1",
    Cookie = mycookie,
    {ok, _} = net_kernel:start([{hidden, NodeName}, Cookie]),
    io:format("Hidden node started successfully~n").

% Distribute new code to other nodes
distribute_update(CodePath) ->
    Nodes = nodes(),
    io:format("Distributing code update to nodes: ~p~n", [Nodes]),
    lists:foreach(fun(Node) ->
        rpc:call(Node, code, add_patha, [CodePath]),
        rpc:call(Node, code, load_file, [my_module])
    end, Nodes).

% Example usage
% hot_code_swap:start_hidden_node().
% hot_code_swap:distribute_update("/path/to/new/code").

ಹಾಟ್-ಸ್ವಾಪ್ ಮಾಡಬಹುದಾದ ಡಾಕರ್-ಆಧಾರಿತ ಸೆಟಪ್‌ನೊಂದಿಗೆ ಎಲಿಕ್ಸಿರ್ ಕೋಡ್ ಅನ್ನು ನವೀಕರಿಸಲಾಗುತ್ತಿದೆ

ಕೋಡ್ ಮರುಲೋಡ್ ಮತ್ತು ನೋಡ್ ನಿರ್ವಹಣೆಯೊಂದಿಗೆ ಎಲಿಕ್ಸಿರ್ ಬಳಸಿ ಬ್ಯಾಕೆಂಡ್ ಪರಿಹಾರ

defmodule HotCodeSwap do
  @moduledoc "Handles hot code swapping in a distributed environment."

  # Start a hidden node for managing updates
  def start_hidden_node do
    :net_kernel.start([:"hidden_node@127.0.0.1", :hidden])
    IO.puts("Hidden node started.")
  end

  # Function to push updates to other nodes
  def distribute_update(code_path) do
    nodes = Node.list()
    IO.puts("Updating nodes: #{inspect(nodes)}")

    Enum.each(nodes, fn node ->
      :rpc.call(node, Code, :append_path, [code_path])
      :rpc.call(node, Code, :load_file, ["my_module.ex"])
    end)
  end
end

# Example usage
HotCodeSwap.start_hidden_node()
HotCodeSwap.distribute_update("/path/to/new/code")

ಹಾಟ್ ಕೋಡ್ ನವೀಕರಣಗಳಿಗಾಗಿ ಡಾಕರ್ ಬಿಲ್ಡ್ ಮತ್ತು ಮರುಪ್ರಾರಂಭವನ್ನು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸುವುದು

ಕನಿಷ್ಠ ಅಲಭ್ಯತೆಯೊಂದಿಗೆ ಡಾಕರ್ ಕಂಟೇನರ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಸ್ಕ್ರಿಪ್ಟ್

#!/bin/bash
# Script to automate Docker-based hot code swapping

APP_NAME="my_elixir_app"
NEW_TAG="my_app:latest"
CONTAINER_NAME="elixir_app_container"

echo "Building new Docker image..."
docker build -t $NEW_TAG .

echo "Checking running container..."
RUNNING_CONTAINER=$(docker ps -q -f name=$CONTAINER_NAME)

if [ -n "$RUNNING_CONTAINER" ]; then
    echo "Stopping current container..."
    docker stop $CONTAINER_NAME
fi

echo "Starting updated container..."
docker run -d --name $CONTAINER_NAME $NEW_TAG
echo "Hot swap completed!"

ವಿತರಿಸಲಾದ ಎರ್ಲಾಂಗ್ ಹಾಟ್ ಕೋಡ್ ಸ್ವಾಪ್ಗಾಗಿ ಘಟಕ ಪರೀಕ್ಷೆಗಳು

ಕೋಡ್ ವಿತರಣೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಎರ್ಲಾಂಗ್‌ನಲ್ಲಿ ಬರೆಯಲಾದ ಘಟಕ ಪರೀಕ್ಷಾ ಸೂಟ್

-module(hot_code_swap_tests).
-include_lib("eunit/include/eunit.hrl").

start_hidden_node_test() ->
    ?assertMatch({ok, _}, net_kernel:start([{hidden, "test_node@127.0.0.1"}, test_cookie])).

distribute_update_test() ->
    CodePath = "/tmp/new_code",
    Nodes = [node1@127.0.0.1, node2@127.0.0.1],
    lists:foreach(fun(Node) ->
        ?assertEqual(ok, rpc:call(Node, code, add_patha, [CodePath]))
    end, Nodes).

ಎರ್ಲಾಂಗ್/ಎಲಿಕ್ಸಿರ್ ಹಾಟ್ ಕೋಡ್ ವಿನಿಮಯದೊಂದಿಗೆ ಡಾಕರ್ ಇಮ್ಯುಟಬಿಲಿಟಿಯನ್ನು ಸಮತೋಲನಗೊಳಿಸುವುದು

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

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

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

  1. ಎರ್ಲಾಂಗ್/ಎಲಿಕ್ಸಿರ್‌ನಲ್ಲಿ ಹಾಟ್ ಕೋಡ್ ವಿನಿಮಯ ಎಂದರೇನು?
  2. ಹಾಟ್ ಕೋಡ್ ವಿನಿಮಯವು ಡೆವಲಪರ್‌ಗಳಿಗೆ ಚಾಲನೆಯಲ್ಲಿರುವ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿಲ್ಲಿಸದೆಯೇ ನವೀಕರಿಸಲು ಅನುಮತಿಸುತ್ತದೆ, ಆಜ್ಞೆಗಳನ್ನು ಬಳಸಿ .
  3. ಹಾಟ್ ಕೋಡ್ ವಿನಿಮಯದೊಂದಿಗೆ ಡಾಕರ್ ಏಕೆ ಸಂಘರ್ಷಿಸುತ್ತದೆ?
  4. ಡಾಕರ್ ಅಸ್ಥಿರತೆಯ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುತ್ತದೆ, ಅಂತಹ ಆಜ್ಞೆಗಳನ್ನು ಬಳಸಿಕೊಂಡು ತಾಜಾ ಕಂಟೇನರ್‌ನೊಂದಿಗೆ ನವೀಕರಣಗಳನ್ನು ನಿಯೋಜಿಸುವ ಅಗತ್ಯವಿದೆ ಮತ್ತು .
  5. ಹಾಟ್ ಕೋಡ್ ವಿನಿಮಯದಲ್ಲಿ ಗುಪ್ತ ನೋಡ್‌ನ ಪಾತ್ರವೇನು?
  6. ಗುಪ್ತ ನೋಡ್, ಇದರೊಂದಿಗೆ ಪ್ರಾರಂಭವಾಗಿದೆ , ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿ ಸಾರ್ವಜನಿಕವಾಗಿ ಗೋಚರಿಸದೆ ಇತರ ನೋಡ್‌ಗಳಿಗೆ ನವೀಕರಣಗಳನ್ನು ವಿತರಿಸಬಹುದು.
  7. ಹಾಟ್ ಕೋಡ್ ವಿನಿಮಯವು ಡಾಕರ್ ಕಂಟೇನರ್‌ಗಳ ಜೊತೆಗೆ ಕೆಲಸ ಮಾಡಬಹುದೇ?
  8. ಹೌದು, ನವೀಕರಣಗಳನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ತಳ್ಳಲು ನಿಯಂತ್ರಣ ನೋಡ್ ಅನ್ನು ಬಳಸುವ ಮೂಲಕ ಅಥವಾ ಕಂಟೈನರ್ ನಿರ್ವಹಣೆ ಪ್ರಕ್ರಿಯೆಗಳಿಂದ ಅಪ್ಲಿಕೇಶನ್ ನವೀಕರಣಗಳನ್ನು ಬೇರ್ಪಡಿಸುವ ಮೂಲಕ.
  9. ಹಾಟ್ ಕೋಡ್ ವಿನಿಮಯದ ಮಿತಿಗಳು ಯಾವುವು?
  10. ಶಕ್ತಿಯುತವಾಗಿದ್ದರೂ, ಆವೃತ್ತಿ ಘರ್ಷಣೆಗಳನ್ನು ತಪ್ಪಿಸಲು ಎಚ್ಚರಿಕೆಯ ಯೋಜನೆ ಅಗತ್ಯವಿರುತ್ತದೆ ಮತ್ತು ಸಂಕೀರ್ಣ ನವೀಕರಣಗಳು ಇನ್ನೂ ಪೂರ್ಣ ಕಂಟೇನರ್ ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಬೇಕಾಗಬಹುದು.
  11. ನವೀಕರಣಗಳಲ್ಲಿ ಡಾಕರ್ ವಿಶ್ವಾಸಾರ್ಹತೆಯನ್ನು ಹೇಗೆ ಖಚಿತಪಡಿಸುತ್ತದೆ?
  12. ಡಾಕರ್ ರೀತಿಯ ಆಜ್ಞೆಗಳನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ಕನಿಷ್ಠ ಅಲಭ್ಯತೆಯೊಂದಿಗೆ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಸ್ವಚ್ಛವಾಗಿ ಮರುಪ್ರಾರಂಭಿಸಲು.
  13. ಡಾಕರ್ ಮತ್ತು ಹಾಟ್ ಕೋಡ್ ವಿನಿಮಯವನ್ನು ಸಂಯೋಜಿಸುವ ಪ್ರಯೋಜನಗಳೇನು?
  14. ಈ ಸಂಯೋಜನೆಯು ನವೀಕರಣಗಳಿಗಾಗಿ ಶೂನ್ಯ ಡೌನ್‌ಟೈಮ್ ಅನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ, ಪಾವತಿ ಗೇಟ್‌ವೇಗಳು ಅಥವಾ ನೈಜ-ಸಮಯದ ಸಂವಹನ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಂತಹ ನಿರ್ಣಾಯಕ ವ್ಯವಸ್ಥೆಗಳಿಗೆ ಸೂಕ್ತವಾಗಿದೆ.
  15. ವಿತರಿಸಿದ ಕೋಡ್ ನವೀಕರಣಗಳನ್ನು ನೀವು ಹೇಗೆ ಮೌಲ್ಯೀಕರಿಸಬಹುದು?
  16. ಮುಂತಾದ ಆಜ್ಞೆಗಳನ್ನು ಬಳಸಿ ನೋಡ್‌ಗಳಾದ್ಯಂತ ನವೀಕರಣಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಮತ್ತು ಸುರಕ್ಷತೆಗಾಗಿ ಸ್ವಯಂಚಾಲಿತ ಘಟಕ ಪರೀಕ್ಷೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು.
  17. ಹಾಟ್ ಕೋಡ್ ವಿನಿಮಯದಿಂದ ಯಾವ ರೀತಿಯ ಯೋಜನೆಗಳು ಹೆಚ್ಚು ಪ್ರಯೋಜನ ಪಡೆಯುತ್ತವೆ?
  18. ಲೈವ್ ಸ್ಟ್ರೀಮಿಂಗ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಳು, IoT ಸಿಸ್ಟಮ್‌ಗಳು ಅಥವಾ ಮಲ್ಟಿಪ್ಲೇಯರ್ ಆಟಗಳಂತಹ ಹೆಚ್ಚಿನ ಲಭ್ಯತೆಯ ಅಗತ್ಯವಿರುವ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಗಮನಾರ್ಹವಾಗಿ ಪ್ರಯೋಜನ ಪಡೆಯುತ್ತವೆ.
  19. ನವೀಕರಣಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಹೈಬ್ರಿಡ್ ವಿಧಾನಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದೇ?
  20. ಹೌದು, ಬೇಸ್ ನಿಯೋಜನೆಗಳಿಗಾಗಿ ಡಾಕರ್ ಅನ್ನು ಬಳಸುವ ಮೂಲಕ ಮತ್ತು ಲೈವ್ ಅಪ್‌ಡೇಟ್‌ಗಳಿಗಾಗಿ ಹಾಟ್ ಸ್ವ್ಯಾಪಿಂಗ್ ಮಾಡುವ ಮೂಲಕ, ನೀವು ಸುರಕ್ಷತೆ ಮತ್ತು ನಮ್ಯತೆ ಎರಡನ್ನೂ ಸಾಧಿಸಬಹುದು.

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

ಬದಲಾವಣೆಗಳನ್ನು ಪ್ರಸಾರ ಮಾಡಲು ಗುಪ್ತ ನೋಡ್‌ಗಳನ್ನು ಬಳಸುವುದರಿಂದ ತಂಡಗಳು ನಿರ್ಣಾಯಕ ವ್ಯವಸ್ಥೆಗಳಿಗೆ ಸಮಯವನ್ನು ಕಾಪಾಡಿಕೊಳ್ಳಲು ಅನುಮತಿಸುತ್ತದೆ. ಸರಳವಾದ ಕೆಲಸದ ಹರಿವುಗಳಿಗಾಗಿ, ಕಾರ್ಯತಂತ್ರದ ಬಿಸಿ ಸ್ವಾಪ್‌ಗಳೊಂದಿಗೆ ಕಂಟೇನರ್ ಮರುಪ್ರಾರಂಭಗಳನ್ನು ಸಂಯೋಜಿಸುವುದು ವಿಶ್ವಾಸಾರ್ಹ ಪರಿಹಾರವನ್ನು ನೀಡುತ್ತದೆ, ಅಡ್ಡಿಗಳನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ. 🔧

  1. ಎರ್ಲಾಂಗ್ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಹಾಟ್ ಕೋಡ್ ವಿನಿಮಯದ ಅನುಷ್ಠಾನವನ್ನು ವಿವರಿಸುತ್ತದೆ: ಎರ್ಲಾಂಗ್ ಕೋಡ್ ರಿಪ್ಲೇಸ್ಮೆಂಟ್ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ .
  2. ಡಾಕರ್‌ನ ಬದಲಾಗದ ಮೂಲಸೌಕರ್ಯ ಮತ್ತು ಕಂಟೈನರೈಸೇಶನ್ ಅಭ್ಯಾಸಗಳನ್ನು ಚರ್ಚಿಸುತ್ತದೆ: ಡಾಕರ್ ಅಧಿಕೃತ ದಾಖಲೆ .
  3. ವಿತರಿಸಿದ ವ್ಯವಸ್ಥೆಗಳು ಮತ್ತು ಲೈವ್ ಕೋಡ್ ನವೀಕರಣಗಳೊಂದಿಗೆ ಎರ್ಲಾಂಗ್/ಎಲಿಕ್ಸಿರ್ ಅನ್ನು ಸಂಯೋಜಿಸುವುದು: ಎಲಿಕ್ಸಿರ್ ವಿತರಣಾ ಕಾರ್ಯಗಳ ಮಾರ್ಗದರ್ಶಿ .
  4. ನವೀಕರಣಗಳಿಗಾಗಿ ವಿತರಿಸಲಾದ ಎರ್ಲಾಂಗ್ ಗುಪ್ತ ನೋಡ್‌ಗಳಿಗೆ ನೈಜ-ಪ್ರಪಂಚದ ಒಳನೋಟಗಳು: ಇದು ಖಾತರಿಗಳ ಬಗ್ಗೆ .