Go ನಲ್ಲಿ ಹಂಚಿಕೊಂಡ ಸುತ್ತು-ಸುತ್ತು ಪ್ರಾಕ್ಸಿ ಆಯ್ಕೆಗಾರ
Go ಪ್ರಾಕ್ಸಿ ಆಯ್ಕೆಗಾರವನ್ನು ವಿನಂತಿಗಳ ನಡುವೆ ಜೀವಂತವಾಗಿ ಇರಿಸಿ, ಹಂಚಿಕೊಂಡ ಆಯ್ಕೆ ಸ್ಥಿತಿಯನ್ನು ರಕ್ಷಿಸಿ ಮತ್ತು ಮಾರ್ಗವನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದನ್ನು ಅದರ ನಿರ್ಗಮನವನ್ನು ಗಮನಿಸುವುದರಿಂದ ಬೇರ್ಪಡಿಸಿ.
ಆಯ್ಕೆಗಾರವು ಪರಿಪೂರ್ಣವಾಗಿ ಸುತ್ತಬಹುದು ಮತ್ತು ಆದರೂ ಮೊದಲ ಪ್ರಾಕ್ಸಿಯನ್ನೇ ಆಯ್ಕೆ ಮಾಡುತ್ತಿರಬಹುದು. ತಪ್ಪು ಎಂದರೆ ಪ್ರತಿ ವಿನಂತಿಗೂ ಆಕಸ್ಮಿಕವಾಗಿ ಹೊಸ ಆಯ್ಕೆಗಾರವನ್ನು ರಚಿಸುವುದು, ಅದು ಎರಡನೇ ಆಯ್ಕೆ ಮಾಡುವ ಮೊದಲೇ ಅದರ ಎಣಿಕೆಯನ್ನು ಮರುಹೊಂದಿಸುತ್ತದೆ.
ಆಯ್ಕೆಗಾರವನ್ನು ಒಮ್ಮೆ ನಿರ್ಮಿಸಿ ಮತ್ತು ಅದನ್ನು ಸಾಗಣೆಯೊಂದಿಗೆ ಇರಿಸಿಕೊಳ್ಳಿ. HTTP ಪ್ರಾಕ್ಸಿ ಪಟ್ಟಿಯು ವಿನಂತಿಗಳು ಸಾರ್ವಜನಿಕ ಮಧ್ಯವರ್ತಿಗಳನ್ನು ಅನುಮತಿಸಿದಾಗ URL ಗುಂಪಿಗೆ ಸಾರ್ವಜನಿಕ HTTP ಅಭ್ಯರ್ಥಿಗಳನ್ನು ಒದಗಿಸಬಹುದು. ಈಗಾಗಲೇ ಪರಿಶೀಲಿಸಿದ, ಖಾಲಿಯಲ್ಲದ ಪ್ರಾಕ್ಸಿ URL ಪಟ್ಟಿಯಿಂದ ಪ್ರಾರಂಭಿಸಿ:
func rotatingProxy(urls []*url.URL) func(*http.Request) (*url.URL, error) {
var mu sync.Mutex
next := 0
return func(*http.Request) (*url.URL, error) {
mu.Lock()
selected := urls[next]
next = (next + 1) % len(urls)
mu.Unlock()
return selected, nil
}
}
ಸುತ್ತಮುತ್ತಲಿನ ಅಪ್ಲಿಕೇಶನ್ ಖಾಲಿ ಪಟ್ಟಿಯನ್ನು ತಿರಸ್ಕರಿಸಬೇಕು, URL ಗಳನ್ನು ಪರಿಶೀಲಿಸಬೇಕು ಮತ್ತು ಸಾಮಾನ್ಯ net/http, net/url ಮತ್ತು sync ಆಮದುಗಳನ್ನು ಬಳಸಬೇಕು. ಈ ಆಯ್ಕೆಗಾರವು ಅದನ್ನು ಬಳಸುವವರೆಗೆ ಪಟ್ಟಿ ಬದಲಾಗದೆ ಇರಬೇಕು, ಅಥವಾ ಪ್ರತ್ಯೇಕವಾಗಿ ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡಿದ ವಿನ್ಯಾಸದ ಮೂಲಕ ಬದಲಾಯಿಸಬೇಕು.
ಹಿಂತಿರುಗಿಸಿದ ಕಾರ್ಯವನ್ನು ಒಂದು ಉಳಿಸಿಕೊಂಡ http.Transport ಗೆ ಜೋಡಿಸಿ. ಮ್ಯೂಟೆಕ್ಸ್ ಏಕಕಾಲಿಕ ಕಾಲ್ಬ್ಯಾಕ್ಗಳ ನಡುವೆ ಆಯ್ಕೆಯ ಕ್ರಮವನ್ನು ರಕ್ಷಿಸುತ್ತದೆ. ನಿಧಾನವಾದ ನೆಟ್ವರ್ಕ್ ವಿನಂತಿ ಪೂರ್ಣಗೊಳ್ಳುವಾಗ ಲಾಕ್ ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುವ ಅಗತ್ಯವಿಲ್ಲ.
ಕೇವಲ ಮುದ್ರಿಸಲು ಮಾರ್ಗವನ್ನು ವ್ಯಯಿಸಬೇಡಿ
ರೋಗನಿರ್ಣಯ ಸಂದೇಶಕ್ಕಾಗಿ ಆಯ್ಕೆಗಾರವನ್ನು ಮತ್ತೆ ಕರೆಯುವುದು ಎಣಿಕೆಯನ್ನು ಮತ್ತೆ ಮುಂದೆ ಸಾಗಿಸುತ್ತದೆ. ಆ ಔಟ್ಪುಟ್ ನೀವು ತನಿಖೆ ಮಾಡುತ್ತಿರುವ ವಿನಂತಿ ಬಳಸಿದ ಅಭ್ಯರ್ಥಿಯ ಬದಲು ಮುಂದಿನ ಅಭ್ಯರ್ಥಿಯನ್ನು ವಿವರಿಸಬಹುದು. ನಿಜವಾದ ಕಾಲ್ಬ್ಯಾಕ್ ಒಳಗೆ ಸುರಕ್ಷಿತ ಎಂಡ್ಪಾಯಿಂಟ್ ಗುರುತಿಸುವಿಕೆಯೊಂದಿಗೆ ಆಯ್ಕೆಯನ್ನು ದಾಖಲಿಸಿ.
ಕಾಲ್ಬ್ಯಾಕ್ ಕರೆಯುವುದು ವಿನಂತಿ ಯಶಸ್ವಿಯಾಗಿ ತಲುಪಿದೆ ಎಂಬುದಕ್ಕೆ ಸಾಕ್ಷಿಯಲ್ಲ. ಮರುನಿರ್ದೇಶನಗಳು ಅಥವಾ ಹೆಚ್ಚುವರಿ ಸಾಗಣೆ ಪ್ರಯತ್ನಗಳು “ಒಂದು ಅಪ್ಲಿಕೇಶನ್ ಕರೆ, ಒಂದು ಆಯ್ಕೆ” ಎಂಬ ಸರಳ ಊಹೆಯನ್ನು ಸಂಕೀರ್ಣಗೊಳಿಸಬಹುದು. ಕಾರ್ಯಹರಿವು ಹಲವು ಕಾರ್ಯಾಚರಣೆಗಳ ಉದ್ದಕ್ಕೂ ಒಂದು ಮಾರ್ಗವನ್ನು ಇರಿಸಿಕೊಳ್ಳಬೇಕಾದರೆ, ಜಾಗತಿಕ ತಿರುಗುವ ಕಾಲ್ಬ್ಯಾಕ್ ಬಳಸುವ ಬದಲು ಕಾರ್ಯಹರಿವಿನ ಗಡಿಯಲ್ಲಿ ಆ ಮಾರ್ಗವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ.
ಸುತ್ತು-ಸುತ್ತು ವಿಭಿನ್ನ ಸಾರ್ವಜನಿಕ ನಿರ್ಗಮನಗಳನ್ನೂ ಭರವಸೆ ನೀಡುವುದಿಲ್ಲ. ಅದು ಎಂಡ್ಪಾಯಿಂಟ್ಗಳನ್ನು ನಿಗದಿಪಡಿಸುತ್ತದೆ. ಅಂತಿಮ ಗುರುತು ಪ್ರತಿ ಎಂಡ್ಪಾಯಿಂಟ್ ಒದಗಿಸುವ ಮಾರ್ಗದ ಗುಣವಾಗಿಯೇ ಉಳಿಯುತ್ತದೆ.