TGViewer
Otabek’s I/O Otabek’s I/O @otabekswe · 2.84K subscribers
Post #679 6.54K
#experience

Dropbox'da highly distributed systems qurganmiz deb ko'p aytganman. "O'zi tizimlarni nega distribute (tarqatish) qilish kerak?" degan savolga ham javob bermoqchiman.

Ilgariroq agar dasturlar ko'proq foydalanuvchilarga xizmat ko'rsatishi kerak bo'lgan bo'lsa, insoniyat shunchaki serverlarga ko'proq va kuchliroq RAM, Disk va CPU qo'shib kuchaytirgan. Buni Vertical Scaling (chunki moshina eniga emas, bo'yiga o'sadi faqat) deb ataymiz.

Qayisidir nuqataga borib dunyodagi eng kuchli kompyuterni yasab qo'ydik ammo shu ham yetmayabdi degan muammo paydo bo'ladi. CPU cheksiz tezlasha olmaydi, chunki elektr toki bilan gaplashgani uchun juda ko'p qizib ketadi va eriy boshlaydi. Tok o'chib qolsa butun biznesingiz o'chadi degani, chunki bizda faqat bitta kompyuter bor. Serveringiz boshqa regionda bo'lsa RTT (Round Trip Time) va Latency muammolar kelib chiqadi. Xullas siz o'ylagandek ideal emas. Endi bizga lokalizatsiya va tezlik kerak.

Bitta super kompyuter o'rniga 100ta kichik kompyuterlarni tarmoq orqali bog'laymizda, ularni bitta tizim sifatida ishlashga o'rgatish fikri keladi, ya'ni Horizontal Scaling. Ammo bu yerda eng katta muammo bor, untrustworthy network (ishonchsiz tarmoq).

Networking (reklamada aylanay) yaxshi o'qiganlar buni juda yaxshi bilishadi. Tarmoqda nimadir sodir bo'lsa ikkinchi tomon bilmay qolishi yoki tarmoqda yo'qolishlar bo'lishi mumkin (Network Partition Illusion). Yokida "Split-Brain Catastrophe" muammosi yoki The Gray Network ya'ni servis healthy (sog'lom) mi deb so'rasangiz "ha" deyaveradi lekin u juda sekin bo'lgani uchun nechadir foiz trafikni tashlab yuboradi. Boshqa serverlar unga ishlayabdi deb so'rov yuboraveradi va natijada butun region cloud servisi qulashiga olib boradi.

Odatda tizimlarni kengaytirishda (scale), doim ishlab turishini ta'minlashda (Availability) va latency kamaytirish uchun lokalizatsiyalashtirishda distribute qilinadi. Chunki katta traffikga bitta eng kuchli bo'lsa ham qurilma javob bera olmaydi, biri o'chib qolsa ikkinchisi javob berishi uchun va ma'lumot foydalanuvchi regionida saqlansa unga tezroq yetib borishi uchun.

Arxitektura qilishda esa "Stateless", "Stateful" va "Consensus Protocols" degan tomonlari bor. Stateless bo'lsa oson, ma'lumot DBga saqlanadi va load balancer orqali istalgan servis o'sha yagona DB'dan ma'lumot o'qib foydalanuvchiga javob bera oladi. Stateful bo'lsa DB da muammolar paydo bo'ladi. Ma'lumotlarni maxsus key'lar orqali sharding qilasiz, va doim replica olib borasiz. "Split-Brain" muammosini yechish uchun serverlar Raft yoki Paxos algoritmlari orqali ovoz berish yo'lga qo'yishadi. Nega? Chunki tizimlar distributed, ular endi bitta emas ko'p. Va ko'pchilik rozi bo'lganda operatsiya bajarilishi kerak, chunki ma'lumotlar bir joyda emas. Va bu tushunchani "Quorum" deb atashadi.

U yerda yana vaqt muammosi ham bor ayalanay. Butun dunyo bir xil vaqtda operate qila olmaydi. CAP theorem dagi kimni qurbon qilish masalasi ham bor. Xullas juda murakkab jarayon.

Ko'pchilik yozmagan jarayon, menga buni Staff Engineer o'rgatgandi va bu "Formal Verification" deyiladi. Tizimni matematik yo'l bilan to'g'riligini topish mumkin ekan. Test qilishda biz har xil input berib, outputini to'g'ri javob bilan solishtirib olamiz. Lekin distributed systems bunday testlash doim ham ishlayvermaydi.

Formal Verification 3ta bosqichdan iborat. Specification bosqichida tizim nima qilishi kerakligini ifodalaysiz. Implementation qismida kodini yozasiz. Engine qismida implementatsiya qilgan kodiz spesifikatsiya qismida tasvirlagandek ishlashini tekshirasiz. Bu jarayon haqida juda kam bilimga egaman, shunga ko'p yoza olmayman.

Hozircha shular
More from @otabekswe
  1. Sep 28, 2026Voicelab da bizga eng qiziq bo'lgan mavzu bu Small Language Models (Large Language Models…
  2. Sep 10, 2026Barchamiz miriqib kuzatgan O'rgimchak Odam, Chaqmoq Makvin, Aka-uka Kreshlar (Muzlik davri…
  3. Sep 7, 2026Biz yangilik qilishdan to'xtamayabmiz. • Aisha Comet LLM modelimizni chiqardik. Platformag…
  4. Sep 4, 2026#experience Deyarli bir yarim yildan buyon intervyular jarayonida bitta savol doim so'raym…
  5. Aug 28, 2026#experience Ko'pchilik bir xil savol beradi: "Model o'zilarnikimi yoki open-source modelmi…
  6. Aug 25, 2026Voicelab Desktop V1 chiqdi (katta yangilanish va yaxshilanish qildik), har kunlik bepul kr…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →