Sobes.tech

Golang

Keling, mikroxizmat arxitekturasi haqida gaplashamiz. So'nggi paytlarda ko'proq nima bo'ldi: qo'llab-quvvatlash yoki rivojlanish?

140

Foydalanuvchilarga oflayn holatda yuborilgan xabarlar qanday ishlanadi?

139

Qanday qilib oynaning barcha kerakli belgilarni o'z ichiga olganligini tekshirish mumkin?

139

/* Biz ma'lumotlarni manbadan iste'molchiga o'tkazishimiz kerak. Manba, ma'lumotlarni kichik partiyalar (~o'n yozuv) shaklida taqdim etadi, holbuki, iste'molchi katta partiyalar (~ming yozuv) bilan ishlashni optimallashtiradi. Haqiqiy misol - Kafka turidagi navbatlardan ma'lumotlarni Clickhouse bazasiga uzatish. Manba: - deyarli cheksiz. - Manba har doim Next chaqiruvida MaxItems dan ko'p yozuvlarni qaytirmaydi. - Bir "sessiya" (bir Pipe funksiyasi chaqiruvi) doirasida, manba har chaqiruvida yangi ma'lumotlarni qaytaradi. - Biroq, qayta ishga tushirilgandan so'ng, manba avvalgi "tasdiqlangan" pozitsiyadan, cookie bilan belgilangan joydan boshlanadi. Shuning uchun, har bir cookie qiymati, Next qaytaradigan, ma'lumotlar saqlangandan so'ng, Commit chaqiruvi bilan tasdiqlanishi kerak, va ular Next tomonidan qaytarilgan tartibda. Qabul qiluvchi: - Bir vaqtning o'zida MaxItems dan ko'p ishlov berolmaydi. Kerakli: func Pipe(p Producer, c Consumer) error funksiyasini amalga oshirish, manbadan ma'lumotlarni o'qib, ularni MaxItems dan oshmaydigan bufferga guruhlab, qabul qiluvchiga saqlash, va keyin manbada progressni tasdiqlash. */ const MaxItems = 9999 type Producer interface { // Next: // - ishlash uchun partiya elementlar // - tugallangach tasdiqlash uchun cookie // - xato Next() (items []any, cookie int, err error) // Commit, ma'lumotlar partiyasini ishlangan deb belgilash uchun ishlatiladi Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { // TODO }

139

Ommaviy bulutlardan foydalandingizmi? Agar ha, qaysi provayderlar va xizmatlar?

139

So'nggi loyihalar va foydalanilgan texnologiya steki haqida bizga aytib bering.

138

4 - kiruvchi vazifalarni tezda qabul qilish, 5 - so'rov bo'yicha vazifa natijasini qaytarish 6 - agar natija bo'lmasa, mos holatni qaytarish /* Protsessor - uzoq davom etadigan, resurslarni ko'p talab qiladigan operatsiyani bajaradigan xizmat. U allaqachon amalga oshirilgan Uning qaytargan xatolari faqat noto'g'ri kirish ma'lumotlari bilan bog'liq, barqarordir va ularni takroran so'rash foydasiz */ type Processor interface { Process([]byte) ([]byte, error) } /* Bizda yagona identifikatorlar (masalan, UUID) generatori bor deb hisoblaymiz. Generator to'qnashuv bo'lmasligini kafolatlaydi */ type ID string // func NewID() ID /* Scheduler mijozlardan vazifalarni qabul qiladi, ularni navbatga qo'yadi va ishlov berishni boshlaydi. Bitta vaqtda 'threads' metodlaridan ko'prog'i ishlayotganiga ishonch hosil qiladi Vazifa holatini tekshirish va natijani olish imkonini beradi o'zining ommaviy interfeys metodlarini bloklamaydi */ type Scheduler struct { processor Processor } func NewScheduler( prc Processor, threads int, ) *Scheduler { // boshlang'ich mantiq return &Scheduler{ processor: prc, } } func (s *Scheduler) Queue(request []byte) ID { // amalga oshirish return "" }

137

maxSegment muammosini hal qilish uchun algoritmni tavsiflang

136

Nima bo'ladiganini aytib bering — biz qanday qilib buferni to'plab boramiz?

135

[shahar]da hozirda yashayotganingiz va ofisga chiqish bilan gibrid formatda ishlash qulay bo'lsa to'g'ri bo'ladimi?

135

Qaysi maosh kutayotganingizni bilishni istaysizmi?

131

Ko'p ipli yoki asinxron operatsiyalar bilan dasturlar yozish bo'yicha tajribangiz bormi?

128

Microxizmat arxitekturadagi qanday anti-patternlarni bilasiz?

127

Misol keltiraylik: first=[1,1,2], second=[1,2]. Sizning algoritmingiz nima qaytarishi kerak va u takrorlar bilan to'g'ri ishlayaptimi?

127

[ism] so'radi: X dan kichik bo'lgan elementning pozitsiyasini saqlashda, pozitsiya nima bo'ladi?

126

Agar sizga ish taklif qilinsa va siz uni qabul qilsangiz, ish boshlashga tayyor bo'lishingiz uchun qancha vaqt kerak bo'ladi?

125

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

124

Ish vaqtingiz davomida liderlik vazifalarini bajardingizmi?

124

Qaysi ma'lumotlar bazalari yoki boshqa ma'lumotlar saqlash joylari bilan ishladingiz? Yozish va o'qish uchun sekundiga nechta so'rov (RPS)?

122

Tarqatilgan tizimlarni ishlab chiqish va qo'llab-quvvatlash bo'yicha tajribangiz bormi?

122
/11