Yadda saxlanılan ən böyük məlumat həcmi nə qədər idi?
Golang
Hansı verilənlər bazaları və digər məlumat saxlama sistemləri ilə işlədiniz?
// ən yaxşı() funksiyası üçün kod parçası // backend mövcud olmadıqda xəta idarəetməsi ilə
Vəzifələr və karyera vektoru baxımından hansı istiqamətdə inkişaf etmək istəyirsiniz?
// ən yaxşı() funksiyası üçün kod parçası // backend mövcud olmadıqda xəta idarəetməsi ilə
Niyə yeni təklifləri nəzərdən keçirirsiniz və niyə əvvəlki şirkətinizdən ayrıldınız?
Process metodlarının eyni vaxtda 'threads' sayından çox işləməməsini necə məhdudlaşdırmaq olar? Kanaldan tapşırıqları kim çıxaracaq?
// ə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ə
Kim nəticə kanalını oxuyur və sonra nəticəni harada yazır ki, Status metodu ona daxil ola bilsin?
Xidmət neçə host və ya instansiyada işləyirdi? Neçə konteyner işə salınıb?
// ə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ə
Queue metodunu həyata keçirin
ID ilə tapşırığın vəziyyətini almaq üçün Status metodunu necə həyata keçirmək olar?
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 }
// ən yaxşı() funksiyası üçün kod parçası // backend mövcud olmadıqda xəta idarəetməsi ilə
Queue metodunu həyata keçirin
// ən yaxşı() funksiyası üçün kod parçası // backend mövcud olmadıqda xəta idarəetməsi ilə
// ən yaxşısını axtarırıq -- ??? // tapılmazsa, inflight ilə müqayisə et