ଏକ ଚୟନକର୍ତ୍ତା ସମ୍ପୂର୍ଣ୍ଣ ଭାବରେ ଘୂରି ମଧ୍ୟ ପ୍ରଥମ ପ୍ରକ୍ସି ବାଛିବା ଜାରି ରଖିପାରେ। ତ୍ରୁଟି ହେଉଛି ପ୍ରତ୍ୟେକ ଅନୁରୋଧ ପାଇଁ ହଠାତ୍ ଏକ ନୂଆ ଚୟନକର୍ତ୍ତା ସୃଷ୍ଟି କରିବା, ଯାହା ଦ୍ୱିତୀୟ ଚୟନ କରିବା ପୂର୍ବରୁ ଏହାର ଗଣକକୁ ପୁନଃସେଟ କରିଦିଏ।

ଚୟନକର୍ତ୍ତାକୁ ଥରେ ନିର୍ମାଣ କରନ୍ତୁ ଏବଂ ପରିବହନ ସହିତ ରଖନ୍ତୁ। 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 ସମସାମୟିକ କଲବ୍ୟାକ୍ ମଧ୍ୟରେ ଚୟନ କ୍ରମକୁ ସୁରକ୍ଷା ଦିଏ। ମନ୍ଥର ନେଟୱର୍କ ଅନୁରୋଧ ସମ୍ପୂର୍ଣ୍ଣ ହେବା ସମୟରେ ଲକ୍ ଧରି ରଖିବା ଆବଶ୍ୟକ ନୁହେଁ।

କେବଳ ଛାପିବା ପାଇଁ ଏକ ପଥ ବ୍ୟବହାର କରନ୍ତୁ ନାହିଁ

ନିଦାନ ସନ୍ଦେଶ ପାଇଁ ଚୟନକର୍ତ୍ତାକୁ ପୁନର୍ବାର ଡାକିବା ଗଣକକୁ ପୁଣି ଆଗକୁ ବଢ଼ାଏ। ସେହି ଫଳାଫଳ ଆପଣ ଅନୁସନ୍ଧାନ କରୁଥିବା ଅନୁରୋଧ ବ୍ୟବହାର କରିଥିବା ପ୍ରାର୍ଥୀ ବଦଳେ ପରବର୍ତ୍ତୀ ପ୍ରାର୍ଥୀକୁ ବର୍ଣ୍ଣନା କରିପାରେ। ପ୍ରକୃତ କଲବ୍ୟାକ୍ ଭିତରେ ସୁରକ୍ଷିତ ଏଣ୍ଡପଏଣ୍ଟ ପରିଚାୟକ ସହିତ ଚୟନ ରେକର୍ଡ କରନ୍ତୁ।

କଲବ୍ୟାକ୍ ଆହ୍ୱାନ କରିବା ଏକ ଅନୁରୋଧ ସଫଳତାର ସହିତ ପହଞ୍ଚିଛି ବୋଲି ପ୍ରମାଣ ନୁହେଁ। ରିଡାଇରେକ୍ଟ କିମ୍ବା ଅତିରିକ୍ତ ପରିବହନ ପ୍ରୟାସ “ଏକ ଆପ୍ଲିକେସନ୍ କଲ, ଏକ ଚୟନ” ଭଳି ସରଳ ଧାରଣାକୁ ଜଟିଳ କରିପାରେ। ଯଦି ଏକ ୱାର୍କଫ୍ଲୋ ଅନେକ କାର୍ଯ୍ୟ ମଧ୍ୟରେ ଏକ ପଥ ରଖିବାକୁ ପଡ଼େ, ତେବେ ବିଶ୍ୱସ୍ତରୀୟ ଘୂର୍ଣ୍ଣାୟମାନ କଲବ୍ୟାକ୍ ବ୍ୟବହାର ନକରି ୱାର୍କଫ୍ଲୋର ସୀମାରେ ସେହି ପଥ ବାଛନ୍ତୁ।

ରାଉଣ୍ଡ-ରୋବିନ ଅଲଗା ସାର୍ବଜନୀନ ନିର୍ଗମର ପ୍ରତିଶ୍ରୁତି ମଧ୍ୟ ଦିଏ ନାହିଁ। ଏହା ଏଣ୍ଡପଏଣ୍ଟଗୁଡ଼ିକୁ ସମୟସୂଚୀବଦ୍ଧ କରେ। ଅନ୍ତିମ ପରିଚୟ ପ୍ରତ୍ୟେକ ଏଣ୍ଡପଏଣ୍ଟ ଯୋଗାଉଥିବା ପଥର ଏକ ଗୁଣ ହୋଇ ରହେ।

ସମ୍ପର୍କିତ ପ୍ରବନ୍ଧ