Untuk fungsi di Golang, strategi toleransi kesalahan boleh dilaksanakan untuk menangani kegagalan dalam sistem teragih: Cuba Semula: Cuba semula mudah bagi panggilan gagal, sesuai untuk fungsi idempoten. Percubaan semula berundur eksponen: Perkenalkan kelewatan sebelum mencuba semula untuk mengelakkan percubaan semula intensif. Pemutus Litar: Memantau panggilan dan menyekat дальнейшие panggilan apabila gagal, menghalang gelung percubaan semula yang melampau. Tamat masa: Tetapkan had tamat masa untuk panggilan. Penemuan perkhidmatan: Gunakan rangka kerja untuk bertukar secara automatik kepada kejadian yang tersedia.
Melaksanakan strategi toleransi kesalahan dalam fungsi Golang
Dalam sistem teragih, panggilan fungsi mungkin gagal disebabkan oleh isu rangkaian atau kegagalan pelayan. Untuk memastikan kebolehpercayaan dan ketersediaan aplikasi, adalah penting untuk mereka bentuk strategi toleransi kesalahan. Artikel ini akan memperkenalkan cara menggunakan Golang untuk melaksanakan strategi toleransi kesalahan yang berbeza untuk fungsi dan menyediakan kes praktikal.
Strategi Toleransi Kesalahan
Kes Praktikal
Mari kita pertimbangkan fungsi Golang yang memanggil API luaran menggunakan HTTP. Menggunakan strategi percubaan semula berundur eksponen, kita boleh mencapai toleransi kesalahan seperti berikut:
import ( "context" "fmt" "io" "net/http" "time" ) // callAPI 拨打外部 API func callAPI(ctx context.Context, client *http.Client, url string) (io.ReadCloser, error) { req, err := http.NewRequestWithContext(ctx, "GET", url, nil) if err != nil { return nil, fmt.Errorf("无法创建请求: %w", err) } for retries := 1; ; retries++ { resp, err := client.Do(req) if err != nil { if retries >= maxRetries { return nil, err } delay := time.Duration(retries * 100 * time.Millisecond) time.Sleep(delay) continue } return resp.Body, nil } } // maxRetries 是允许的最大重试次数 const maxRetries = 3
Fungsi ini akan dipanggil sehingga 3 kali untuk mencuba semula kegagalan, dengan kelewatan 100ms, 200ms dan 300ms antara setiap percubaan semula. Jika semua percubaan semula gagal, fungsi mengembalikan ralat.
Kesimpulan
Dengan melaksanakan strategi toleransi kesalahan yang sesuai, kami dapat memastikan fungsi Golang berdaya tahan dalam sistem teragih. Adalah penting untuk memilih strategi yang sesuai berdasarkan keperluan aplikasi dan melaksanakan mekanisme degradasi automatik untuk mengendalikan keadaan kegagalan yang melampau.
Atas ialah kandungan terperinci Strategi toleransi kesalahan untuk fungsi Golang dalam sistem teragih. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!