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