Ko‘plab ishonchsiz manbalardan bitta ishonchli kripto-narxlar oqimi
Kripto-bozor ma’lumotlari tarqoq. Har bir provayderning o‘z kechikishi, limitlari va narxlari bor, arzonlaridan hech biri esa bu fintex-startapga (NDA ostida) kerakli narsani bera olmadi: taxminan har 15 soniyada yangilanadigan boshqaruv panellarini. Qo‘l yetadigan ommaviy API’lar har 30–40 soniyada va beqaror yangilanardi.
Biz kripto-bozor ma’lumotlari agregatorini besh oy ichida MVP’dan production’gacha olib chiqqan uch kishilik full-stack jamoaning bir qismi edik.
Asosiy imkoniyatlar
- Bir nechta provayderga siljitilgan so‘rovlar: har bir provayderga o‘z siljishiga ega jadval bo‘yicha so‘rov yuboriladi, shuning uchun so‘rovlar bir vaqtda limitga urilmay, vaqt bo‘ylab taqsimlanadi.
- Narx yangilanishlarini takrordan tozalash va muvofiqlashtirish: takroriy va bir-biriga zid narx yangilanishlari yagona ishonchli manbaga birlashtiriladi.
- Provayderlarni vaznlar bo‘yicha tanlash: provayderlarga vaznlar berilgan, shuning uchun agregator qaysi ma’lumotga ishonishni tanlaganda ishonchliroq manbalarni afzal ko‘radi.
- Avtomatik zaxira oqimlar: bitta manba sifati pasaysa, ma’lumotlar boshqalaridan kelishda davom etadi.
- ~15 soniyalik birlashtirilgan yangilanishlar: Redis’da keshlangan oqim taxminan 15 soniyalik sikl bilan yangilanadi.
- WebSocket orqali yetkazish: panellar yangi narxlarni serverga so‘rov yubormasdan, e’lon qilinishi bilanoq oladi.
- Xarajatni hisobga oladigan rejalashtirish: so‘rovlar jadvali pullik API chaqiruvlarini minimal darajada ushlab turish uchun sozlangan.
Arxitektura va texnologiyalar
Laravel va PostgreSQL’dagi agregatsiya qatlami
Agregator — PostgreSQL bilan ishlaydigan Laravel ilovasi. Rejalashtirilgan so‘rov vazifalari har bir provayderdan narxlarni yig‘adi va yangilanishlarni muvofiqlashtirishga uzatadi. Provayderlar turli tezlikda javob beradi, shuning uchun muvofiqlashtirish mantig‘i har bir manba bir vaqtda xabar beradi deb hisoblamaydi — kechikib kelgan ma’lumotlarni qayta ishlashga mo‘ljallangan.
Redis keshi va WebSocket oqimi
Muvofiqlashtirilgan narxlar birlashtirilgan oqim vazifasini bajaradigan Redis’ga yoziladi. Panellar shu keshdan o‘qiydi va hech qachon provayderlarga to‘g‘ridan-to‘g‘ri murojaat qilmaydi, shuning uchun panellarga trafik oshishi pullik API chaqiruvlari ko‘payishini anglatmaydi. Yangi narxlar frontend’ga WebSockets orqali yetib boradi va panellarni jonli saqlaydi.
Inertia.js sahifalari va Docker
Foydalanuvchi ko‘radigan sahifalar Inertia.js bilan qurilgan, qidiruvda ko‘rinish muhim bo‘lgan sahifalarda esa server tomonida render qilish ishlatiladi. Butun tizim Docker’da konteynerlashtirilgan, shuning uchun deploy har safar bir xil takrorlanadi.
Ishonchlilik va xarajatlar nazorati
Bu yerdagi eng qiyin muammolar operatsion edi:
- Kechikishlardagi farq: muvofiqlashtirish tez va sekin provayderlar o‘rtasidagi farqni yutib yuboradi, shuning uchun bitta sekin manba butun oqimni ushlab qolmaydi.
- Limitlar va ma’lumotlar narxi: siljitilgan so‘rovlar va kesh so‘rovlar hajmini har bir provayder limiti ichida ushlaydi va tashqi API xarajatlarini kamaytiradi.
- Provayderlardagi uzilishlar: vaznli tanlov va zaxira oqimlar tufayli bitta provayderni yo‘qotish mahsulotni to‘xtatib qo‘ymaydi — oqim ortida shunchaki kamroq manba qoladi.
O‘xshash ishlar
SI asosidagi kripto-tahlil platformasi bozor ma’lumotlari ustiga kayfiyat tahlili va firibgarlikni aniqlashni qo‘shadi. Finkonkurs — kriptovalyuta narxlari, birjalar va yangiliklar portali. Bunday ma’lumotlarga boy mahsulotlarni biz veb-ilovalar yaratish xizmatimiz doirasida quramiz.



