/* Mikroservis arxitekturasi bilan ilova mavjud. Mikroservis Backend interfeysi yordamida abstraktsiya qilinishi mumkin. Bir mikroservis nusxasiga kirish uchun BackendImpl turidan foydalanish mumkin, u allaqachon amalga oshirilgan. Har bir mikroservisda bir necha o'nlab ishga tushirilgan nusxalar mavjud bo'lib, har biri o'z manzili addr orqali kirish mumkin. Ammo, mikroservisning alohida nusxalari ishonchli emas: ular yiqilishi, kirish imkoni bo'lmasligi yoki ortiqcha yuklangan bo'lishi mumkin. Shuning uchun, siz Balancer turini amalga oshirishingiz kerak, u ham Backend interfeysini amalga oshiradi va mijoz tomonida mikroservis nusxalari o'rtasida yukni balanslashni amalga oshiradi, har safar **eng kam yuklangan** nusxani tanlab.
Golang
Nima uchun koddagi mantiq o'rniga LLM ni ishlatishga qaror qildingiz?
O'z tajribangiz haqida qisqacha aytib berishingiz mumkinmi? Asosiy dasturlash tilingiz nima? Sanoat ishlab chiqishda qancha yillik tajribangiz bor?
Qaysi ma'lumotlar bazalari bilan ishlaysiz? Maksimal saqlangan ma'lumotlar hajmi qanday edi?
JWT ning serverda sessiyalarni saqlashdan qanday afzalligi bor?
func Pipe(p Producer, c Consumer) error { // TODO buf := make([]any, 0, MaxItems) cookies := make([]int, 0) flush := func() error { if len(buf) == 0 { return nil } if err := c.Process(buf); err != nil { return err } for _, cookie := range cookies { if err := p.Commit(cookie); err != nil { return err } } buf = buf[:0] cookies = cookies[:0] return nil } for { items, cookie, err := p.Next() if err != nil { flush() return err }
Dastlabki bufer uchun qancha xotira ajratilgan?
Asosiy dasturlash tilingiz nima? C++ yoki Pythonni ishlatasizmi?
Nima uchun backend.Invoke chaqiruvi mutexdan tashqarida amalga oshirildi?
Balansyor backend xatolik bilan javob berayotganligini tushunishi kerak, va belgilangan vaqtdan oshib ketganda uni balanslashdan chiqarish (Circuit Breaker)
Agar Consumer.Process xato bilan qaytsa — bufferdagi ma'lumotlar yo'qolmaydi?
Berilgan S satri, bu satrdagi barcha belgilardan kamida bir marta bo'lgan substrlarni sonini hisoblash kerak. Misollar: "abca" -> 3 // abc, bca, abca "aa" -> 3 // aa, a, a, "ffg" -> 2 // ffg, fg
O'zingiz uchun yoki tijorat rivojlanishida foydalanadigan Go dan tashqari qanday dasturlash tillarini ishlatasiz?
Hozirda yuqori yuklama ostida sizda maksimal so'rovlar soni qancha?
Bu matn satridir. I va j indeks juftliklarining sonini toping (i <= j), ular orasida, shu jumladan, takrorlanmaydigan belgilar bo'lmagan. "aba" satri uchun javob 5: [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") "acbb" satri uchun javob ?:
Qaysi dasturlash tilida ishlayapsiz? Sintaksis bilan qiyinchiliklar nima uchun yuzaga keldi?
// TODO backends []*BackendImpl index int mu sync.Mutex func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { b.mu.Lock() index := b.index if b.index + 1 == len(b.backends) { b.index = 0 index = 0 } b.mu.Unlock() resp, err := b.backends[index].Invoke(ctx, req) b.mu.Lock() defer b.mu.Unlock() b.index += 1 return resp, err } // addr ma'lum bir nusxa uchun ip:port ni o'z ichiga oladi func NewBackend(addr string) *BackendImpl // addrs barcha balanslangan nusxalarning manzillarini o'z ichiga oladi func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs)) for _, addr := range addrs { backends = append(backends, NewBackend(addr)) } return &Balancer{ backends: backends, } }
Agar zarur bo'lsa yoki shaxsiy istak bilan boshqa dasturlash tiliga o'tishga tayyormisiz?
Qayerda yashaysiz, qayerda turibsiz?
Ish beruvchini tanlashda qanday mezonlarni qoʻllaysiz? Siz uchun eng muhim nimasidir?