Sobes.tech

Golang

Saqlangan ma'lumotlarning eng katta hajmi qanday edi?

117

Qaysi ma'lumotlar bazalari va boshqa ma'lumotlarni saqlash tizimlari bilan ishladingiz?

116

// eng yaxshi() funksiyasi uchun kod parcha // backend mavjud emasligi holatida xatolikni boshqarish bilan

109

Vazifalar va karyera vektori nuqtai nazaridan qaysi yo'nalishda rivojlanishga qiziqasiz?

106

Nima uchun yangi takliflarni ko'rib chiqyapsiz va nima uchun oldingi kompaniyangizni tark etdingiz?

104

// eng yaxshi() funksiyasi uchun kod parcha // backend mavjud emasligi holatida xatolikni boshqarish bilan

101

Process metodlarining bir vaqtning o'zida 'threads' sonidan ko'p ishlamasligini qanday cheklash mumkin? Kanaldan vazifalarni kim olib chiqadi?

100

// eng yaxshi() funksiyasi uchun kod parcha // backend mavjud emasligi holatida xatolikni boshqarish bilan

92

// eng yaxshi() funksiyasi uchun kod parcha // backend mavjud emasligi holatida xatolikni boshqarish bilan

90

Xizmat qancha host yoki instanslarda ishlagan? Nechta konteyner ishga tushirilgan?

88

Kim natijaviy kanalni o'qiydi va keyin natijani qayerga yozadi, shunda Status metodi unga kirishishi mumkin?

88

// eng yaxshi() funksiyasi uchun kod parcha // backend mavjud emasligi holatida xatolikni boshqarish bilan

84

// eng yaxshi() funksiyasi uchun kod parcha // backend mavjud emasligi holatida xatolikni boshqarish bilan

84

ID bo'yicha vazifa holatini olish uchun Status metodini qanday amalga oshirish mumkin?

72

// eng yaxshi() funksiyasi uchun kod parcha // backend mavjud emasligi holatida xatolikni boshqarish bilan

67

type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr contains ip:port of a specific instance func NewBackend(addr string) *BackendImpl type backentry struct { backend Backend inflight int64 } type Balancer struct { backends []*backentry mu *sync.Mutex } var _ Backend = &Balancer{} // addrs contain the addresses of all balancable instances 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 }

66

// eng yaxshi() funksiyasi uchun kod parcha // backend mavjud emasligi holatida xatolikni boshqarish bilan

57

// eng yaxshi -- ??? // agar topilmasa, inflight bilan solishtiring

48
/11