ಸಂಸ್ಕರಣೆ ಮಾತ್ರವಲ್ಲ: ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್‌ಗಳಿಂದ ನಾವು ವಿತರಿಸಿದ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಹೇಗೆ ಮಾಡಿದ್ದೇವೆ ಮತ್ತು ಅದರಿಂದ ಏನಾಯಿತು

ಹಲೋ, ಹಬ್ರ್!

ಪುಸ್ತಕವನ್ನು ಅನುಸರಿಸುವುದನ್ನು ನಾವು ನಿಮಗೆ ನೆನಪಿಸುತ್ತೇವೆ ಕಾಫ್ಕ ನಾವು ಗ್ರಂಥಾಲಯದ ಬಗ್ಗೆ ಅಷ್ಟೇ ಆಸಕ್ತಿದಾಯಕ ಕೃತಿಯನ್ನು ಪ್ರಕಟಿಸಿದ್ದೇವೆ ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್ಸ್ API.

ಸಂಸ್ಕರಣೆ ಮಾತ್ರವಲ್ಲ: ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್‌ಗಳಿಂದ ನಾವು ವಿತರಿಸಿದ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಹೇಗೆ ಮಾಡಿದ್ದೇವೆ ಮತ್ತು ಅದರಿಂದ ಏನಾಯಿತು

ಸದ್ಯಕ್ಕೆ, ಸಮುದಾಯವು ಈ ಶಕ್ತಿಯುತ ಸಾಧನದ ಮಿತಿಗಳನ್ನು ಕಲಿಯುತ್ತಿದೆ. ಆದ್ದರಿಂದ, ಲೇಖನವನ್ನು ಇತ್ತೀಚೆಗೆ ಪ್ರಕಟಿಸಲಾಗಿದೆ, ಅದರ ಅನುವಾದವನ್ನು ನಾವು ನಿಮಗೆ ಪರಿಚಯಿಸಲು ಬಯಸುತ್ತೇವೆ. ತನ್ನ ಸ್ವಂತ ಅನುಭವದಿಂದ, ಲೇಖಕರು ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು ವಿತರಿಸಿದ ಡೇಟಾ ಸಂಗ್ರಹಣೆಯಾಗಿ ಪರಿವರ್ತಿಸುವುದು ಹೇಗೆ ಎಂದು ಹೇಳುತ್ತಾರೆ. ಓದಿ ಆನಂದಿಸಿ!

ಅಪಾಚೆ ಗ್ರಂಥಾಲಯ ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್ಸ್ ಅಪಾಚೆ ಕಾಫ್ಕಾದ ಮೇಲೆ ವಿತರಿಸಲಾದ ಸ್ಟ್ರೀಮ್ ಪ್ರಕ್ರಿಯೆಗಾಗಿ ಉದ್ಯಮಗಳಲ್ಲಿ ವಿಶ್ವಾದ್ಯಂತ ಬಳಸಲಾಗುತ್ತದೆ. ಈ ಚೌಕಟ್ಟಿನ ಕಡಿಮೆ ಮೌಲ್ಯಯುತವಾದ ಅಂಶವೆಂದರೆ ಅದು ಥ್ರೆಡ್ ಪ್ರಕ್ರಿಯೆಯ ಆಧಾರದ ಮೇಲೆ ಉತ್ಪಾದಿಸಲಾದ ಸ್ಥಳೀಯ ಸ್ಥಿತಿಯನ್ನು ಸಂಗ್ರಹಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

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

ನಿಮ್ಮ ವಸ್ತುಗಳ ಔಪಚಾರಿಕ ಸ್ಥಿತಿಯನ್ನು ಬೆಂಬಲಿಸಲು ಒಂದೇ ಕೇಂದ್ರ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಬಳಸಲು ನಿಮಗೆ ಅನುಮತಿಸುವ ಪರ್ಯಾಯ ವಿಧಾನದಲ್ಲಿ ನೀವು ಆಸಕ್ತಿ ಹೊಂದಿದ್ದರೆ, ಅದನ್ನು ಓದಿ, ಅದು ಆಸಕ್ತಿದಾಯಕವಾಗಿರುತ್ತದೆ...

ಹಂಚಿಕೆಯ ಸ್ಥಿತಿಯೊಂದಿಗೆ ನಾವು ಕೆಲಸ ಮಾಡುವ ವಿಧಾನವನ್ನು ಬದಲಾಯಿಸುವ ಸಮಯ ಬಂದಿದೆ ಎಂದು ನಾವು ಏಕೆ ಭಾವಿಸಿದ್ದೇವೆ

ಏಜೆಂಟ್ ವರದಿಗಳ ಆಧಾರದ ಮೇಲೆ ನಾವು ವಿವಿಧ ವಸ್ತುಗಳ ಸ್ಥಿತಿಯನ್ನು ನಿರ್ವಹಿಸುವ ಅಗತ್ಯವಿದೆ (ಉದಾಹರಣೆಗೆ: ಸೈಟ್ ಆಕ್ರಮಣದಲ್ಲಿದೆ)? ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್‌ಗಳಿಗೆ ವಲಸೆ ಹೋಗುವ ಮೊದಲು, ನಾವು ರಾಜ್ಯ ನಿರ್ವಹಣೆಗಾಗಿ ಒಂದೇ ಕೇಂದ್ರೀಯ ಡೇಟಾಬೇಸ್ (+ ಸೇವಾ API) ಅನ್ನು ಹೆಚ್ಚಾಗಿ ಅವಲಂಬಿಸಿದ್ದೇವೆ. ಈ ವಿಧಾನವು ಅದರ ನ್ಯೂನತೆಗಳನ್ನು ಹೊಂದಿದೆ: ದಿನಾಂಕ ತೀವ್ರ ಸಂದರ್ಭಗಳಲ್ಲಿ ಸ್ಥಿರತೆ ಮತ್ತು ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಅನ್ನು ನಿರ್ವಹಿಸುವುದು ನಿಜವಾದ ಸವಾಲಾಗಿದೆ. ಡೇಟಾಬೇಸ್ ಅಡಚಣೆಯಾಗಬಹುದು ಅಥವಾ ಅಂತ್ಯಗೊಳ್ಳಬಹುದು ಜನಾಂಗದ ಸ್ಥಿತಿ ಮತ್ತು ಅನಿರೀಕ್ಷಿತತೆಯಿಂದ ಬಳಲುತ್ತಿದ್ದಾರೆ.

ಸಂಸ್ಕರಣೆ ಮಾತ್ರವಲ್ಲ: ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್‌ಗಳಿಂದ ನಾವು ವಿತರಿಸಿದ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಹೇಗೆ ಮಾಡಿದ್ದೇವೆ ಮತ್ತು ಅದರಿಂದ ಏನಾಯಿತು

ಚಿತ್ರ 1: ಪರಿವರ್ತನೆಯ ಮೊದಲು ಕಂಡುಬರುವ ಒಂದು ವಿಶಿಷ್ಟವಾದ ವಿಭಜಿತ ಸ್ಥಿತಿಯ ಸನ್ನಿವೇಶ
ಕಾಫ್ಕಾ ಮತ್ತು ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್‌ಗಳು: ಏಜೆಂಟರು ತಮ್ಮ ಅಭಿಪ್ರಾಯಗಳನ್ನು API ಮೂಲಕ ಸಂವಹನ ಮಾಡುತ್ತಾರೆ, ನವೀಕರಿಸಿದ ಸ್ಥಿತಿಯನ್ನು ಕೇಂದ್ರ ಡೇಟಾಬೇಸ್ ಮೂಲಕ ಲೆಕ್ಕಹಾಕಲಾಗುತ್ತದೆ

ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು ಭೇಟಿ ಮಾಡಿ, ಹಂಚಿದ ಸ್ಟೇಟ್ ಮೈಕ್ರೊ ಸರ್ವೀಸ್‌ಗಳನ್ನು ರಚಿಸಲು ಸುಲಭವಾಗುತ್ತದೆ

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

ನಾವು ರಚಿಸಿದ ಪ್ರತಿಯೊಂದು ಸ್ಟೇಟ್‌ಫುಲ್ ಮೈಕ್ರೊ ಸರ್ವೀಸ್‌ಗಳನ್ನು ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್ಸ್ ನಿದರ್ಶನದ ಮೇಲೆ ಸಾಕಷ್ಟು ಸರಳವಾದ ಟೋಪೋಲಜಿಯೊಂದಿಗೆ ನಿರ್ಮಿಸಲಾಗಿದೆ. ಇದು 1) ಮೂಲ 2) ನಿರಂತರ ಕೀ-ಮೌಲ್ಯದ ಅಂಗಡಿಯೊಂದಿಗೆ ಪ್ರೊಸೆಸರ್ 3) ಸಿಂಕ್ ಅನ್ನು ಒಳಗೊಂಡಿದೆ:

ಸಂಸ್ಕರಣೆ ಮಾತ್ರವಲ್ಲ: ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್‌ಗಳಿಂದ ನಾವು ವಿತರಿಸಿದ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಹೇಗೆ ಮಾಡಿದ್ದೇವೆ ಮತ್ತು ಅದರಿಂದ ಏನಾಯಿತು

ಚಿತ್ರ 2: ಸ್ಟೇಟ್‌ಫುಲ್ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗಳಿಗಾಗಿ ನಮ್ಮ ಸ್ಟ್ರೀಮಿಂಗ್ ನಿದರ್ಶನಗಳ ಡೀಫಾಲ್ಟ್ ಟೋಪೋಲಜಿ. ಯೋಜನಾ ಮೆಟಾಡೇಟಾವನ್ನು ಒಳಗೊಂಡಿರುವ ರೆಪೊಸಿಟರಿ ಕೂಡ ಇಲ್ಲಿರುವುದನ್ನು ಗಮನಿಸಿ.

ಈ ಹೊಸ ವಿಧಾನದಲ್ಲಿ, ಏಜೆಂಟರು ಮೂಲ ವಿಷಯಕ್ಕೆ ನೀಡಲಾದ ಸಂದೇಶಗಳನ್ನು ರಚಿಸುತ್ತಾರೆ ಮತ್ತು ಗ್ರಾಹಕರು-ಸೇ, ಮೇಲ್ ಅಧಿಸೂಚನೆ ಸೇವೆ-ಸಿಂಕ್ (ಔಟ್‌ಪುಟ್ ವಿಷಯ) ಮೂಲಕ ಕಂಪ್ಯೂಟೆಡ್ ಹಂಚಿಕೆಯ ಸ್ಥಿತಿಯನ್ನು ಸ್ವೀಕರಿಸುತ್ತಾರೆ.

ಸಂಸ್ಕರಣೆ ಮಾತ್ರವಲ್ಲ: ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್‌ಗಳಿಂದ ನಾವು ವಿತರಿಸಿದ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಹೇಗೆ ಮಾಡಿದ್ದೇವೆ ಮತ್ತು ಅದರಿಂದ ಏನಾಯಿತು

ಚಿತ್ರ 3: ಹಂಚಿದ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗಳೊಂದಿಗಿನ ಸನ್ನಿವೇಶಕ್ಕೆ ಹೊಸ ಉದಾಹರಣೆ ಕಾರ್ಯದ ಹರಿವು: 1) ಏಜೆಂಟ್ ಕಾಫ್ಕಾ ಮೂಲ ವಿಷಯಕ್ಕೆ ಬರುವ ಸಂದೇಶವನ್ನು ರಚಿಸುತ್ತಾನೆ; 2) ಹಂಚಿದ ಸ್ಥಿತಿಯೊಂದಿಗೆ (ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು) ಮೈಕ್ರೋ ಸರ್ವಿಸ್ ಅದನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಅಂತಿಮ ಕಾಫ್ಕಾ ವಿಷಯಕ್ಕೆ ಲೆಕ್ಕಹಾಕಿದ ಸ್ಥಿತಿಯನ್ನು ಬರೆಯುತ್ತದೆ; ಅದರ ನಂತರ 3) ಗ್ರಾಹಕರು ಹೊಸ ರಾಜ್ಯವನ್ನು ಸ್ವೀಕರಿಸುತ್ತಾರೆ

ಹೇ, ಈ ಅಂತರ್ನಿರ್ಮಿತ ಕೀ-ಮೌಲ್ಯದ ಅಂಗಡಿಯು ನಿಜವಾಗಿಯೂ ತುಂಬಾ ಉಪಯುಕ್ತವಾಗಿದೆ!

ಮೇಲೆ ತಿಳಿಸಿದಂತೆ, ನಮ್ಮ ಹಂಚಿದ ರಾಜ್ಯದ ಟೋಪೋಲಜಿಯು ಪ್ರಮುಖ ಮೌಲ್ಯದ ಅಂಗಡಿಯನ್ನು ಒಳಗೊಂಡಿದೆ. ಇದನ್ನು ಬಳಸಲು ನಾವು ಹಲವಾರು ಆಯ್ಕೆಗಳನ್ನು ಕಂಡುಕೊಂಡಿದ್ದೇವೆ ಮತ್ತು ಅವುಗಳಲ್ಲಿ ಎರಡು ಕೆಳಗೆ ವಿವರಿಸಲಾಗಿದೆ.

ಆಯ್ಕೆ #1: ಲೆಕ್ಕಾಚಾರಗಳಿಗಾಗಿ ಕೀ-ಮೌಲ್ಯದ ಅಂಗಡಿಯನ್ನು ಬಳಸಿ

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

ಸಂಸ್ಕರಣೆ ಮಾತ್ರವಲ್ಲ: ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್‌ಗಳಿಂದ ನಾವು ವಿತರಿಸಿದ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಹೇಗೆ ಮಾಡಿದ್ದೇವೆ ಮತ್ತು ಅದರಿಂದ ಏನಾಯಿತು

ವಿವರಣೆ 4: ಪ್ರೊಸೆಸರ್‌ನ ಸಂಸ್ಕರಣಾ ವಿಧಾನಕ್ಕಾಗಿ ನಾವು ಕೀ-ಮೌಲ್ಯ ಸ್ಟೋರ್‌ಗೆ ಪ್ರವೇಶವನ್ನು ತೆರೆಯುತ್ತೇವೆ (ಇದರ ನಂತರ, ಹಂಚಿಕೆಯ ಸ್ಥಿತಿಯೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಪ್ರತಿಯೊಂದು ಸ್ಕ್ರಿಪ್ಟ್ ವಿಧಾನವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕು doProcess)

ಆಯ್ಕೆ #2: ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್‌ಗಳ ಮೇಲೆ CRUD API ಅನ್ನು ರಚಿಸುವುದು

ನಮ್ಮ ಮೂಲಭೂತ ಕಾರ್ಯದ ಹರಿವನ್ನು ಸ್ಥಾಪಿಸಿದ ನಂತರ, ನಾವು ನಮ್ಮ ಹಂಚಿಕೊಂಡ ರಾಜ್ಯದ ಮೈಕ್ರೋಸರ್ವಿಸ್‌ಗಳಿಗಾಗಿ RESTful CRUD API ಅನ್ನು ಬರೆಯಲು ಪ್ರಯತ್ನಿಸಲು ಪ್ರಾರಂಭಿಸಿದ್ದೇವೆ. ಕೆಲವು ಅಥವಾ ಎಲ್ಲಾ ವಸ್ತುಗಳ ಸ್ಥಿತಿಯನ್ನು ಹಿಂಪಡೆಯಲು ನಾವು ಬಯಸುತ್ತೇವೆ, ಹಾಗೆಯೇ ವಸ್ತುವಿನ ಸ್ಥಿತಿಯನ್ನು ಹೊಂದಿಸುವುದು ಅಥವಾ ತೆಗೆದುಹಾಕುವುದು (ಬ್ಯಾಕೆಂಡ್ ಬೆಂಬಲಕ್ಕಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ).

ಎಲ್ಲಾ ಪಡೆಯಿರಿ ಸ್ಟೇಟ್ API ಗಳನ್ನು ಬೆಂಬಲಿಸಲು, ಪ್ರಕ್ರಿಯೆಯ ಸಮಯದಲ್ಲಿ ನಾವು ಸ್ಥಿತಿಯನ್ನು ಮರು ಲೆಕ್ಕಾಚಾರ ಮಾಡಬೇಕಾದಾಗ, ನಾವು ಅದನ್ನು ದೀರ್ಘಕಾಲದವರೆಗೆ ಅಂತರ್ನಿರ್ಮಿತ ಕೀ-ಮೌಲ್ಯದ ಅಂಗಡಿಯಲ್ಲಿ ಸಂಗ್ರಹಿಸಿದ್ದೇವೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಕೆಳಗಿನ ಪಟ್ಟಿಯಲ್ಲಿ ತೋರಿಸಿರುವಂತೆ ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್‌ಗಳ ಒಂದು ನಿದರ್ಶನವನ್ನು ಬಳಸಿಕೊಂಡು ಅಂತಹ API ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ತುಂಬಾ ಸರಳವಾಗುತ್ತದೆ:

ಸಂಸ್ಕರಣೆ ಮಾತ್ರವಲ್ಲ: ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್‌ಗಳಿಂದ ನಾವು ವಿತರಿಸಿದ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಹೇಗೆ ಮಾಡಿದ್ದೇವೆ ಮತ್ತು ಅದರಿಂದ ಏನಾಯಿತು

ಚಿತ್ರ 5: ವಸ್ತುವಿನ ಪೂರ್ವ ಕಂಪ್ಯೂಟೆಡ್ ಸ್ಥಿತಿಯನ್ನು ಪಡೆಯಲು ಅಂತರ್ನಿರ್ಮಿತ ಕೀ-ಮೌಲ್ಯದ ಅಂಗಡಿಯನ್ನು ಬಳಸುವುದು

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

ಸಂಸ್ಕರಣೆ ಮಾತ್ರವಲ್ಲ: ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್‌ಗಳಿಂದ ನಾವು ವಿತರಿಸಿದ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಹೇಗೆ ಮಾಡಿದ್ದೇವೆ ಮತ್ತು ಅದರಿಂದ ಏನಾಯಿತು

ಚಿತ್ರ 6: ನೀವು ಕಾಫ್ಕಾ ಉತ್ಪಾದಕವನ್ನು ಬಳಸಿಕೊಂಡು ವಸ್ತುವಿನ ಸ್ಥಿತಿಯನ್ನು ಹೊಂದಿಸಬಹುದು

ಸಣ್ಣ ತೊಡಕು: ಕಾಫ್ಕಾ ಅನೇಕ ವಿಭಾಗಗಳನ್ನು ಹೊಂದಿದೆ

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

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

ಹಂಚಿದ ಸ್ಥಿತಿಯೊಂದಿಗೆ ಒಂದೇ ಮೈಕ್ರೋ ಸರ್ವಿಸ್‌ನಿಂದ ಮೈಕ್ರೊ ಸರ್ವೀಸ್‌ಗಳ ಕ್ಲಸ್ಟರ್‌ಗೆ ಚಲಿಸುವಾಗ, Get State API ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಇದು ಕಡಿಮೆ ಕ್ಷುಲ್ಲಕವಾಗುತ್ತದೆ. ಹೊಸ ಪರಿಸ್ಥಿತಿಯಲ್ಲಿ, ಪ್ರತಿ ಮೈಕ್ರೊ ಸರ್ವಿಸ್‌ನ ಸ್ಟೇಟ್ ಸ್ಟೋರ್ ಒಟ್ಟಾರೆ ಚಿತ್ರದ ಭಾಗವನ್ನು ಮಾತ್ರ ಹೊಂದಿರುತ್ತದೆ (ಅದರ ಕೀಲಿಗಳನ್ನು ನಿರ್ದಿಷ್ಟ ವಿಭಾಗಕ್ಕೆ ಮ್ಯಾಪ್ ಮಾಡಲಾಗಿದೆ). ನಮಗೆ ಅಗತ್ಯವಿರುವ ವಸ್ತುವಿನ ಸ್ಥಿತಿಯನ್ನು ಯಾವ ನಿದರ್ಶನ ಒಳಗೊಂಡಿದೆ ಎಂಬುದನ್ನು ನಾವು ನಿರ್ಧರಿಸಬೇಕಾಗಿತ್ತು ಮತ್ತು ಕೆಳಗೆ ತೋರಿಸಿರುವಂತೆ ಥ್ರೆಡ್ ಮೆಟಾಡೇಟಾವನ್ನು ಆಧರಿಸಿ ನಾವು ಇದನ್ನು ಮಾಡಿದ್ದೇವೆ:

ಸಂಸ್ಕರಣೆ ಮಾತ್ರವಲ್ಲ: ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್‌ಗಳಿಂದ ನಾವು ವಿತರಿಸಿದ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಹೇಗೆ ಮಾಡಿದ್ದೇವೆ ಮತ್ತು ಅದರಿಂದ ಏನಾಯಿತು

ಚಿತ್ರ 7: ಸ್ಟ್ರೀಮ್ ಮೆಟಾಡೇಟಾವನ್ನು ಬಳಸಿಕೊಂಡು, ಬಯಸಿದ ವಸ್ತುವಿನ ಸ್ಥಿತಿಯನ್ನು ಯಾವ ನಿದರ್ಶನದಿಂದ ಪ್ರಶ್ನಿಸಬೇಕೆಂದು ನಾವು ನಿರ್ಧರಿಸುತ್ತೇವೆ; GET ALL API ಯೊಂದಿಗೆ ಇದೇ ವಿಧಾನವನ್ನು ಬಳಸಲಾಗಿದೆ

ಪ್ರಮುಖ ಸಂಶೋಧನೆಗಳು

ಕಾಫ್ಕಾ ಸ್ಟ್ರೀಮ್‌ಗಳಲ್ಲಿನ ಸ್ಟೇಟ್ ಸ್ಟೋರ್‌ಗಳು ವಾಸ್ತವಿಕವಾಗಿ ವಿತರಿಸಿದ ಡೇಟಾಬೇಸ್ ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ,

  • ಕಾಫ್ಕಾದಲ್ಲಿ ನಿರಂತರವಾಗಿ ಪುನರಾವರ್ತಿಸಲಾಗುತ್ತದೆ
  • ಅಂತಹ ವ್ಯವಸ್ಥೆಯ ಮೇಲೆ CRUD API ಅನ್ನು ಸುಲಭವಾಗಿ ನಿರ್ಮಿಸಬಹುದು
  • ಬಹು ವಿಭಾಗಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿದೆ
  • ಸಹಾಯಕ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲು ಸ್ಟ್ರೀಮಿಂಗ್ ಟೋಪೋಲಜಿಗೆ ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಸ್ಟೇಟ್ ಸ್ಟೋರ್‌ಗಳನ್ನು ಸೇರಿಸಲು ಸಹ ಸಾಧ್ಯವಿದೆ. ಈ ಆಯ್ಕೆಯನ್ನು ಇದಕ್ಕಾಗಿ ಬಳಸಬಹುದು:
  • ಸ್ಟ್ರೀಮ್ ಪ್ರಕ್ರಿಯೆಯ ಸಮಯದಲ್ಲಿ ಲೆಕ್ಕಾಚಾರಗಳಿಗೆ ಅಗತ್ಯವಿರುವ ಡೇಟಾದ ದೀರ್ಘಾವಧಿಯ ಸಂಗ್ರಹಣೆ
  • ಮುಂದಿನ ಬಾರಿ ಸ್ಟ್ರೀಮಿಂಗ್ ನಿದರ್ಶನವನ್ನು ಒದಗಿಸಿದಾಗ ಉಪಯುಕ್ತವಾದ ಡೇಟಾದ ದೀರ್ಘಾವಧಿಯ ಸಂಗ್ರಹಣೆ
  • ಇನ್ನೂ ಹೆಚ್ಚು...

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

ಮೂಲ: www.habr.com

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