Rumah >pembangunan bahagian belakang >Golang >Amalan terbaik untuk kawalan konkurensi fungsi golang dalam seni bina perkhidmatan mikro
Amalan terbaik untuk kawalan konkurensi fungsi Golang dalam seni bina perkhidmatan mikro termasuk: menggunakan WaitGroup untuk menyelaraskan rutin serentak bagi memastikan rutin utama meneruskan pelaksanaan selepas semua rutin dilaksanakan. Gunakan Semaphore untuk mengawal had konkurensi dan mengelakkan beban sistem. Gunakan Mutex untuk menyerikan akses kepada sumber yang dikongsi dan mencegah perlumbaan data. Gunakan saluran Goroutines untuk melaksanakan komunikasi tak segerak antara rutin goroutine dan decouple untuk meningkatkan keselarasan.
Golang Amalan Terbaik untuk Kawalan Keselarasan Fungsi dalam Seni Bina Perkhidmatan Mikro
Dalam seni bina perkhidmatan mikro, kawalan penyelarasan fungsi adalah penting untuk mengoptimumkan prestasi dan kebolehskalaan. Golang menyediakan beberapa mekanisme untuk mengawal keselarasan fungsi dengan berkesan.
Amalan Terbaik:
import ( "sync" "time" ) var wg sync.WaitGroup func main() { for i := 0; i < 10; i++ { wg.Add(1) go func() { time.Sleep(time.Second) wg.Done() }() } wg.Wait() }
import ( "fmt" "sync" ) var sem = make(chan int, 10) func main() { for i := 0; i < 20; i++ { go func(i int) { sem <- 1 fmt.Printf("Routine %d started\n", i) time.Sleep(time.Second) <-sem }(i) } }
import ( "fmt" "sync" ) var m = sync.Mutex{} var counter = 0 func main() { for i := 0; i < 1000; i++ { go func() { m.Lock() counter++ fmt.Printf("Counter: %d\n", counter) m.Unlock() }() } }
import ( "fmt" ) func main() { ch := make(chan int) go func() { ch <- 10 }() v := <-ch fmt.Printf("Received: %d\n", v) }
Contoh praktikal:
Berikut ialah contoh praktikal menggunakan WaitGroup untuk menyelaraskan rutin serentak:
package main import ( "fmt" "sync" "time" ) func main() { var wg sync.WaitGroup for i := 0; i < 10; i++ { wg.Add(1) go func(i int) { defer wg.Done() fmt.Println(i) time.Sleep(time.Second) }(i) } wg.Wait() }
Atas ialah kandungan terperinci Amalan terbaik untuk kawalan konkurensi fungsi golang dalam seni bina perkhidmatan mikro. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!