Golang
Verilənlər bazasında eyni vaxtda məlumatlara giriş ilə işlədinizmi? Hansı mexanizmlər, məsələn, əməliyyatlar və kilidlər, istifadə etdiniz? Bu problemi verilənlər bazasını daxil etmədən həll etmək yolları varmı?
// ən yaxşı() funksiyası üçün kod parçası // backend mövcud olmadıqda xəta idarəetməsi ilə
Kubernetes-də xidməti yerləşdirmək üçün tələbləri DevOps komandasına necə çatdırdınız: xidməti necə sənədləşdirdiniz və qarşılıqlı əlaqə necə quruldu?
Go-da dəyər qəbul edən və göstərici qəbul edən metodlar arasında nə fərq var və hər birini nə vaxt seçmək lazımdır?
// ən yaxşı() funksiyası üçün kod parçası // backend mövcud olmadıqda xəta idarəetməsi ilə
// ən yaxşı() funksiyası üçün kod parçası // backend mövcud olmadıqda xəta idarəetməsi ilə
Go-da obyekt yönümlü proqramlaşdırma mövcuddurmu? Əgər bəli, necə həyata keçirilir; yoxdursa, niyə?
İşdə sizin üçün ən vacib olan nədir?
Bağlı kanaldan oxuma nə qaytarır?
Miqyaslandırmanı necə təşkil etdiniz və hansı mikroxidmət memariləri ilə işlədiniz?
Goroutine sızması nə vaxt baş verir?
ID ilə tapşırığın vəziyyətini almaq üçün Status metodunu necə həyata keçirmək olar?
Əgər ayrı bir goroutine-də panik baş verərsə, proqram nə olur?
Bunun kodda necə idarə olunduğu necədir?
type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr содержит ip:port конкретной экземпляра func NewBackend(addr string) *BackendImpl type backentry struct { backend Backend inflight int64 } type Balancer struct { backends []*backentry mu *sync.Mutex } var _ Backend = &Balancer{} // addrs содержат адреса всех балансируемых экземпляров func NewBalancer(addrs []string) *Balancer { data := make([]*backentry,len(addrs)) for i,addr := range addrs{ data[i] = &backentry{ backend: NewBackend(addr), inflight: 0, } } return &Balancer{backends:data} } func(b *Balancer)Invoke(ctx context.Context, req Request) (Response, error){ b.mu.Lock() entry := b.best() atomic.AddInt64(&entry.inflight,1) b.mu.Unlock() defer atomic.AddInt64(&entry.inflight,-1) return entry.backend.Invoke(ctx,req) } func(b *Balancer) best() *backentry{ var best *backentry for _,entry := b.backends{ if best == nil || atomic.LoadInt64(&entry.inflight) < atomic.LoadInt64(&best.inflight){ best = entry } } return best }
sync.Mutex ilə sync.RWMutex arasındakı fərq nədir?
Yeni xidməti inkişaf etdirmək və yerləşdirmək prosesinizi təsvir edin: tələblərin toplanmasından inkişaf və test mühitlərinə yerləşdirməyə qədər.
Xidmətlərin yerləşdirilməsi necə həyata keçirildi?
Queue metodunu həyata keçirin
Bu məlumatların yüklənməsi və ya qurulması prosesi necə dəqiq qurulmuşdu?