Sobes.tech

Golang

Yadda saxlanılan ən böyük məlumat həcmi nə qədər idi?

117

Hansı verilənlər bazaları və digər məlumat saxlama sistemləri ilə işlədiniz?

116

// ən yaxşı() funksiyası üçün kod parçası // backend mövcud olmadıqda xəta idarəetməsi ilə

111

Vəzifələr və karyera vektoru baxımından hansı istiqamətdə inkişaf etmək istəyirsiniz?

108

// ən yaxşı() funksiyası üçün kod parçası // backend mövcud olmadıqda xəta idarəetməsi ilə

105

Niyə yeni təklifləri nəzərdən keçirirsiniz və niyə əvvəlki şirkətinizdən ayrıldınız?

104

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?

102

// ən yaxşı() funksiyası üçün kod parçası // backend mövcud olmadıqda xəta idarəetməsi ilə

94

// ən yaxşı() funksiyası üçün kod parçası // backend mövcud olmadıqda xəta idarəetməsi ilə

92

Kim nəticə kanalını oxuyur və sonra nəticəni harada yazır ki, Status metodu ona daxil ola bilsin?

90

Xidmət neçə host və ya instansiyada işləyirdi? Neçə konteyner işə salınıb?

88

// ən yaxşı() funksiyası üçün kod parçası // backend mövcud olmadıqda xəta idarəetməsi ilə

86

// ən yaxşı() funksiyası üçün kod parçası // backend mövcud olmadıqda xəta idarəetməsi ilə

86

ID ilə tapşırığın vəziyyətini almaq üçün Status metodunu necə həyata keçirmək olar?

72

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 }

68

// ən yaxşı() funksiyası üçün kod parçası // backend mövcud olmadıqda xəta idarəetməsi ilə

67

// ən yaxşı() funksiyası üçün kod parçası // backend mövcud olmadıqda xəta idarəetməsi ilə

59

// ən yaxşısını axtarırıq -- ??? // tapılmazsa, inflight ilə müqayisə et

48
/11