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 غا باغلاڭ. Mutex تاللاش تەرتىپىنى قوشۇمچە قايتۇرۇش چاقىرىقلىرى ئارىسىدا قوغدايدۇ. ئاستا تور تەلىپى تاماملانغاندا قۇلۇپ تۇتۇشنى تەلەپ قىلمايدۇ.
يولدىن پەقەت بېسىپ چىقىرىش ئۈچۈن پايدىلانماڭ
دىئاگنوزلۇق ئۇچۇر ئۈچۈن تاللىغۇچنى قايتا چاقىرىش سانلىقنى يەنە ئىلگىرى سۈرىدۇ. بۇ چىقىرىش سىز تەكشۈرۈۋاتقان تەلەپ ئىشلەتكەن نامزاتنىڭ ئورنىغا كېيىنكى نامزاتنى تەسۋىرلىشى مۇمكىن. تاللاشنى ھەقىقىي قايتۇرۇش چاقىرىقى ئىچىدە بىخەتەر ئاخىرلاش نۇقتىسى كىملىكى بىلەن خاتىرىلەڭ.
قايتۇرۇش چاقىرىقىنى چاقىرىش تەلەپنىڭ مۇۋەپپەقىيەتلىك يەتكۈزۈلگەنلىكىنىڭ ئىسپاتى ئەمەس. قايتا نىشانلاش ياكى قوشۇمچە يۆتكەش سىناقلىرى «بىر پروگرامما چاقىرىقى، بىر تاللاش» دېگەن ئاددىي پەرەزنى مۇرەككەپلەشتۈرۈشى مۇمكىن. ئەگەر خىزمەت ئېقىمى بىر قانچە مەشغۇلات داۋامىدا بىر يولنى ساقلىشى كېرەك بولسا، دۇنياۋى ئايلانما قايتۇرۇش چاقىرىقىنى ئىشلىتىش ئورنىغا شۇ يولنى خىزمەت ئېقىمىنىڭ چېگرىسىدا تاللاڭ.
ئايلانما نۆۋەت ئوخشىمىغان ئورتاق چىقىشلارغا كاپالەتلىك قىلمايدۇ. ئۇ ئاخىرلاش نۇقتىلىرىنى پىلانلايدۇ. ئاخىرقى كىملىك ھەر بىر ئاخىرلاش نۇقتىسى تەمىنلىگەن يولنىڭ خاسلىقى بولۇپ قالىدۇ.