Keling, mikroxizmat arxitekturasi haqida gaplashamiz. So'nggi paytlarda ko'proq nima bo'ldi: qo'llab-quvvatlash yoki rivojlanish?
Golang
Foydalanuvchilarga oflayn holatda yuborilgan xabarlar qanday ishlanadi?
Qanday qilib oynaning barcha kerakli belgilarni o'z ichiga olganligini tekshirish mumkin?
/* 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 }
Ommaviy bulutlardan foydalandingizmi? Agar ha, qaysi provayderlar va xizmatlar?
So'nggi loyihalar va foydalanilgan texnologiya steki haqida bizga aytib bering.
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 "" }
maxSegment muammosini hal qilish uchun algoritmni tavsiflang
Nima bo'ladiganini aytib bering — biz qanday qilib buferni to'plab boramiz?
[shahar]da hozirda yashayotganingiz va ofisga chiqish bilan gibrid formatda ishlash qulay bo'lsa to'g'ri bo'ladimi?
Qaysi maosh kutayotganingizni bilishni istaysizmi?
Ko'p ipli yoki asinxron operatsiyalar bilan dasturlar yozish bo'yicha tajribangiz bormi?
Microxizmat arxitekturadagi qanday anti-patternlarni bilasiz?
Misol keltiraylik: first=[1,1,2], second=[1,2]. Sizning algoritmingiz nima qaytarishi kerak va u takrorlar bilan to'g'ri ishlayaptimi?
[ism] so'radi: X dan kichik bo'lgan elementning pozitsiyasini saqlashda, pozitsiya nima bo'ladi?
Agar sizga ish taklif qilinsa va siz uni qabul qilsangiz, ish boshlashga tayyor bo'lishingiz uchun qancha vaqt kerak bo'ladi?
Process metodlarining bir vaqtning o'zida 'threads' sonidan ko'p ishlamasligini qanday cheklash mumkin? Kanaldan vazifalarni kim olib chiqadi?
Ish vaqtingiz davomida liderlik vazifalarini bajardingizmi?
Qaysi ma'lumotlar bazalari yoki boshqa ma'lumotlar saqlash joylari bilan ishladingiz? Yozish va o'qish uchun sekundiga nechta so'rov (RPS)?
Tarqatilgan tizimlarni ishlab chiqish va qo'llab-quvvatlash bo'yicha tajribangiz bormi?