𝗣𝗿𝗼𝗹𝗼𝗴𝘂𝗲 𝗮𝗻𝗱 𝗘𝗽𝗶𝗹𝗼𝗴𝘂𝗲 𝗠𝗮𝗰𝗿𝗼𝘀 𝗶𝗻 𝗛𝘆𝗽𝗲𝗿𝗹𝗮𝗻𝗲
Hyperlane ನಲ್ಲಿ ರಿಕ್ವೆಸ್ಟ್ ಪ್ರೊಸೆಸಿಂಗ್ನ ಬೆನ್ನೆಲುಬು Middleware ಆಗಿದೆ. ಹೆಚ್ಚಿನ ಜನರು ಸ್ಟ್ಯಾಂಡರ್ಡ್ ರಿಕ್ವೆಸ್ಟ್ ಮತ್ತು ರೆಸ್ಪಾನ್ಸ್ middleware ಅನ್ನು ಬಳಸುತ್ತಾರೆ. ಆದಾಗ್ಯೂ, ಹೆಚ್ಚಿನ ನಿಯಂತ್ರಣಕ್ಕಾಗಿ Hyperlane ವಿಶೇಷ prologue ಮತ್ತು epilogue macros ಅನ್ನು ನೀಡುತ್ತದೆ.
ಈ macros ರಿಕ್ವೆಸ್ಟ್ ಲೈಫ್ಸೈಕಲ್ನ ಆರಂಭದಲ್ಲಿ ಮತ್ತು ಕೊನೆಯಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ. ಡೇಟಾ ನಿಖರವಾಗಿ ಯಾವಾಗ ಕ್ಲೈಂಟ್ಗೆ ತಲುಪುತ್ತದೆ ಎಂಬುದನ್ನು ನಿಯಂತ್ರಿಸಲು ಇವು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತವೆ.
ರಿಕ್ವೆಸ್ಟ್ ಲೈಫ್ಸೈಕಲ್ (The Request Lifecycle):
• ರಿಕ್ವೆಸ್ಟ್ ಬರುತ್ತದೆ: ಸರ್ವರ್ HTTP ರಿಕ್ವೆಸ್ಟ್ ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ. • Prologue ಹಂತ: ನೀವು ಹೆಡರ್ಸ್ ಅಥವಾ ಸ್ಟೇಟಸ್ ಕೋಡ್ಗಳಂತಹ ಆರಂಭಿಕ ಡೇಟಾವನ್ನು ಕಳುಹಿಸುತ್ತೀರಿ. • Middleware ಚೈನ್: ಫಂಕ್ಷನ್ಗಳು ರಿಕ್ವೆಸ್ಟ್ ಅನ್ನು ಪ್ರೊಸೆಸ್ ಮಾಡುತ್ತವೆ. • Route handler: ಸಿಸ್ಟಮ್ ರೆಸ್ಪಾನ್ಸ್ ಅನ್ನು ನಿರ್ಮಿಸುತ್ತದೆ. • Response middleware: ಫಂಕ್ಷನ್ಗಳು ರೆಸ್ಪಾನ್ಸ್ ಅನ್ನು ಪ್ರೊಸೆಸ್ ಮಾಡುತ್ತವೆ. • Epilogue ಹಂತ: ಅಂತಿಮ ಡೇಟಾ ಕ್ಲೈಂಟ್ಗೆ ಫ್ಲಶ್ ಆಗುತ್ತದೆ ಮತ್ತು ಕನೆಕ್ಷನ್ಗಳು ಮುಚ್ಚಲ್ಪಡುತ್ತವೆ.
ಹಂತ 2 ಮತ್ತು 6 ಅನ್ನು ನಿರ್ವಹಿಸಲು ಈ macros ಬಳಸಿ.
Send Macros:
ಅತಿ ಮುಖ್ಯವಲ್ಲದ (non-critical) ಡೇಟಾಕ್ಕಾಗಿ #[try_send] ಬಳಸಿ. ಒಂದು ವೇಳೆ ಕನೆಕ್ಷನ್ ಕಡಿತಗೊಂಡರೆ, ಇದು ಸಿಸ್ಟಮ್ ಕ್ರ್ಯಾಶ್ ಆಗದಂತೆ ಎರರ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ಇದು ಸ್ಟ್ರೀಮಿಂಗ್ಗೆ ಉತ್ತಮವಾಗಿದೆ, ಅಲ್ಲಿ ಒಂದು ಚಂಕ್ ಕಳೆಗುಟ್ಟಿದರೂ ಪರವಾಗಿಲ್ಲ.
ಅತಿ ಮುಖ್ಯವಾದ (critical) ಡೇಟಾಕ್ಕಾಗಿ #[send] ಬಳಸಿ. ಇದು ಡೇಟಾ ಖಂಡಿತವಾಗಿಯೂ ತಲುಪುವಂತೆ ಮಾಡುತ್ತದೆ.
Flush Macros:
ಬಫರ್ ಅನ್ನು ಕ್ಲಿಯರ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಲು ಮತ್ತು ಎರರ್ಗಳನ್ನು ಸುಗಮವಾಗಿ ನಿರ್ವಹಿಸಲು #[try_flush] ಬಳಸಿ.
ಎಲ್ಲಾ ಬಫರ್ಡ್ ಡೇಟಾವನ್ನು ಕ್ಲೈಂಟ್ಗೆ ಕಳುಹಿಸಲು (force) #[flush] ಬಳಸಿ. ಕನೆಕ್ಷನ್ ಮುಚ್ಚುವ ಮೊದಲು ಡೇಟಾ ನಷ್ಟವನ್ನು ತಡೆಯಲು ಇದನ್ನು ಬಳಸಿ.
ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು (Best Practices):
- ಕನೆಕ್ಷನ್ ಕಡಿತಗೊಂಡಾಗ ಕ್ರ್ಯಾಶ್ ಆಗುವುದನ್ನು ತಪ್ಪಿಸಲು ಸ್ಟ್ರೀಮಿಂಗ್ ಡೇಟಾಕ್ಕಾಗಿ #[try_send] ಬಳಸಿ.
- ಡೇಟಾ ವಿತರಣೆಯು ಕಡ್ಡಾಯವಾಗಿದ್ದಾಗ #[send] ಬಳಸಿ.
- ಕನೆಕ್ಷನ್ ಮುಚ್ಚುವ ಮೊದಲು ಯಾವಾಗಲೂ ನಿಮ್ಮ ಬಫರ್ ಅನ್ನು ಫ್ಲಶ್ ಮಾಡಿ.
- ಕನೆಕ್ಷನ್ ಮರುಬಳಕೆಯನ್ನು ನಿರ್ವಹಿಸಲು ನಿಮ್ಮ epilogue ನಲ್ಲಿ
stream.is_keep_alive()ಅನ್ನು ಪರಿಶೀಲಿಸಿ. - ರಿಯಲ್-ಟೈಮ್ ಅಪ್ಡೇಟ್ಗಳನ್ನು ಪೋಷಿಸಲು (push) Server-Sent Events (SSE) ಗಾಗಿ ಈ macros ಬಳಸಿ.
- ಸಿಸ್ಟಮ್ ವೈಫಲ್ಯಗಳನ್ನು ತಡೆಯಲು ಎಲ್ಲಾ send ಮತ್ತು flush ಎರರ್ಗಳನ್ನು ನಿರ್ವಹಿಸಿ.
ಈ ಪರಿಕರಗಳು ಡೇಟಾ ಹರಿವು ಮತ್ತು ರೆಸ್ಪಾನ್ಸ್ ಸಮಯದ ಮೇಲೆ ನಿಖರವಾದ ನಿಯಂತ್ರಣವನ್ನು ನೀಡುತ್ತವೆ.
Source: https://dev.to/tengxgfyrz67s/prologue-and-epilogue-macros-1n29 Project Code: https://github.com/hyperlane-dev/hyperlane