Bosh sahifa Wiki Counter

Counter

Counter — hodisalar sonini yoki ketma-ket holatni ifodalovchi, odatda butun son bilan saqlanadigan qiymat. Dasturlashda u sikl iteratsiyasi, so‘rovlar miqdori, obyekt identifikatori yoki apparat hodisasini hisoblashda ishlatiladi. Kriptografiyada counter nonce yaratish, stream cipher bloklarini farqlash va HOTP bir martalik kodlarini hosil qilishda qat’iy semantikaga ega. Oddiy ko‘ringan bu tushuncha parallelizm, overflow va taqsimlangan tizimlarda murakkablashadi.

Dasturdagi hisoblagich

Bir oqimli dasturda counter += 1 o‘qish, qo‘shish va yozish ketma-ketligi sifatida ishlaydi. Bir nechta thread ayni qiymatni parallel yangilasa, bu amal atomik bo‘lmasligi mumkin: ikkala thread eski qiymatni o‘qib, bir xil yangi qiymatni yozadi va bitta increment yo‘qoladi. Mutex, atomic integer yoki ma’lumotlar bazasining atomik update amali bunday race conditionni boshqaradi.

UPDATE page_stats
SET views = views + 1
WHERE page_id = 42;

Oldin qiymatni SELECT qilib, keyin hisoblangan sonni UPDATE qilish tranzaksiyasiz yo‘qolgan yangilanishga olib kelishi mumkin. Kuchli izchillik talab qilinmasa, yuqori trafikda har hodisani markaziy qatorga yozish contention hosil qiladi. Shardlangan hisoblagichlar bir nechta bo‘lakda sanab, o‘qishda yig‘iladi; natija bir muddat taxminiy bo‘lishi mumkin.

Monotonlik va overflow

Monotonic counter faqat bir yo‘nalishda o‘sadi. Tizim restarti yoki backupdan tiklash uni ortga qaytarsa, nonce takrorlanishi yoki event tartibi buzilishi mumkin. Apparat TPM monotonik counteri rollbackka chidamli holat uchun ishlatiladi, ammo yozish tezligi va umr chekloviga ega bo‘lishi mumkin.

Cheklangan bit kengligidagi counter maksimal qiymatdan keyin overflow qiladi. Unsigned 32-bit counter 2^32−1dan keyin nolga qaytishi mumkin; til va muhitga qarab bu wrap, xato yoki undefined behavior bo‘ladi. Vaqt, paket sequence numberi va moliyaviy hisobda wrap holati oldindan loyihalanadi. Kattaroq tur faqat muddatni uzaytiradi, semantik muammoni butunlay yo‘q qilmaydi.

Kriptografik qo‘llanish

CTR rejimida blok shifr nonce va counter bloklarini shifrlab key stream hosil qiladi. Ayni kalit bilan nonce-counter juftligi takrorlansa, ikki ciphertext orasidagi munosabat plaintext haqida ma’lumot chiqarishi mumkin. Counter qiymatining noyobligi, byte orderi va blok kengligi protokol bo‘yicha aniq belgilanadi. Counter max qiymatga yetganda ayni nonce bilan davom etilmaydi.

HOTP shared secret va moving counterdan bir martalik parol hisoblaydi. Server va authenticator counterlari bir xil hodisa sonini kuzatadi. Foydalanuvchi qurilmada kod yaratib, serverga yubormasa, qiymatlar oldinga siljib ketishi mumkin. Server kichik look-ahead window ichida keyingi counterlarni tekshiradi va topilgan holatga sinxronlashadi; juda katta oyna brute-force imkonini oshiradi.

Monitoring semantikasi

Observability tizimida counter yig‘ilib boradigan metrika bo‘lib, masalan jami HTTP so‘rovlari sonini ifodalaydi. Jarayon restartida qiymat nolga tushishi mumkin. Monitoring platformasi odatda xom qiymatdan vaqt oralig‘idagi rate’ni hisoblar ekan, resetni aniqlashi kerak. Hozirgi faol ulanishlar soni esa faqat oshmaydi, kamayadi ham; u counter emas, gauge hisoblanadi.

Counter nomi unit va chegarani ko‘rsatadi: requests_total hodisalar soni, bytes_sent_total bayt miqdori. Bir metrikaga foydalanuvchi ID kabi juda ko‘p label qo‘shish cardinalityni keskin oshiradi. Shuning uchun texnik hisoblagich ham ma’lumot modeli va saqlash xarajati bilan birga loyihalanadi.

Bog‘liq tushunchalar

Atomic operation, Race condition, HOTP, Nonce, CTR mode, Overflow, Gauge