PultrackBloq
AZ
Heç Kimin Danışmadığı Sinxronizasiya Növbəsi: Oflayn POS Əslində İki Kassa Aparatını Necə Uzlaşdırır?

Heç Kimin Danışmadığı Sinxronizasiya Növbəsi: Oflayn POS Əslində İki Kassa Aparatını Necə Uzlaşdırır?

QısacaOflayn-əsaslı POS artıq nişan yox, standart arxitekturadır — amma yazıların çoxu "satışlar davam edir" mövzusuna fokuslanıb, mağazada iki fiziki kassa (və ya telefon və planşet) eyni vaxtda oflayn qalıb sonra eyni növbəni sinxronlaşdırmağa çalışanda nə baş verdiyini ötürür. Əsl problem kəsintinin özü deyil, məhz həmin uzlaşma anıdır — kiçik mağazalar pulu və ya sistemə etimadı elə burada itirir.

Biz Pultrack-i qururuq — qeyri-sabit elektrik, zəif internet və tez-tez eyni rəfdə iki valyuta ilə işləyən kiçik pərakəndə satıcılar üçün kassa (POS) və inventar tətbiqi. Ona görə də "oflayn-əsaslı POS" haqqında mühəndislik yazıları dalğası yayılanda, biz onları arxitektura diaqramı kimi yox, mağaza sahibinin gözü ilə oxuyuruq: adi bir çərşənbə günü şəbəkə növbənin ortasında kəsiləndə və iki nəfər hələ də müştəri qəbul edərkən nə baş verir sualı kimi.

Oflayn-əsaslı müzakirədə əslində yeni olan nədir?

Oflayn-əsaslı kassa dizaynı haqqında son texniki yazılar bir məsələdə həmfikirdir: oflayn iş rejimi artıq ətrafında yamaq vurulan kənar hal kimi qəbul edilmir, bütün sistemin başlanğıc fərziyyəsinə çevrilib.[1] Tətbiqlər tanış bir stekə tərəf yaxınlaşır — cihazda yerli baza (IndexedDB və ya SQLite), gözləyən əməliyyatlar növbəsi, idempotent sinxronizasiya API-ləri və bağlantı bərpa olunanda müəyyən növ konflikt həlli.[1] Bir sıra satıcı səhifələri bunu texniki detal kimi yox, biznes vədi kimi təqdim edir: internet əməkdaşlıq etməsə də kassa işləməyə davam edir, deməli mağaza qazanmağa davam edir.[2] Bu çərçivə faydalıdır və əsasən dəqiqdir. Amma açıq mənbələrdə demək olar heç biri əsl vaxtı — iki oflayn cihaz yenidən qoşulduqdan sonrakı saniyə və dəqiqələrdə, hər ikisi eyni malı satdığını, eyni müştəriyə pulu qaytardığını, ya da eyni növbəni bağladığını iddia edəndə nə baş verdiyi — üzərində keçirmir. Məhz elə bu hissə kiçik mağazanın sonradan sistemə etimad edib-etməyəcəyini müəyyən edir.

Bir kassalı mağaza belə bu problemə nə üçün rast gəlir?

Uzlaşma konfliktlərinin yalnız "çoxfilial" və ya "korporativ" problem olduğunu düşünmək cəlbedicidir. Amma belə deyil. Bir bucaq mağazası bu problemə oflayn vəziyyətdə satışı qeyd etməyin birdən çox yolu olan kimi rast gəlir — kassadaki telefon və anbar yanındaki planşet, kassirin cihazı və sahibin cihazı, ya da elektrik kəsilməsindən sonra sinxronizasiya ortasında yenidən başladılan eyni cihaz. Bunların hər biri istehsal mühitindəki oflayn-əsaslı dizaynlarda istifadə olunan mənada ayrıca bir "qovşaq"dır və hər biri serverlə yenidən əlaqə qura bilənə qədər öz yerli yazılarını növbəyə qoyur.[1] Arxitektural nümunə bunu sinxronizasiya növbələri və idempotent əməliyyatlarla həll edir ki, bir əməliyyatın təkrar icrası ikiqat ödəniş və ya ikiqat anbar azalması yaratmasın.[1] Bu düzgün mühəndislik cavabıdır. Pərakəndə satış sualı isə fərqlidir: eyni fiziki növbə iki yerli baxımdan "doğru" hadisə versiyası yaradanda — məsələn, bir cihazda tətbiq olunmuş güzəşt və digərində eyni malın tam qiymətlə satışı qeyd olunanda — mağazanın gündəlik cəmi hansı versiyanı əks etdirir və mağaza sahibi bunu kassadaki pulu artıq uzlaşdırmadan əvvəl, yoxsa sonra öyrənir?

"Gəlirin fasiləsizliyi" nəyi kənarda qoyur?

Satıcılar getdikcə oflayn imkanı gəlirin fasiləsizliyi baxımından təsvir edir: şəbəkə işləmədiyi üçün kassa satışı dayandırmır.[3] Bu, xüsusilə bağlantı kəsilmələrinin nadir yox, adi hal olduğu bazarlar üçün ədalətli və vacib bir iddiadır. Amma kəsinti zamanı gəlirin fasiləsizliyi hekayənin yalnız yarısıdır. Digər yarısı isə kəsintidən sonrakı uzlaşma dəqiqliyidir — sonda əsas sistemə sinxronlaşan cəmlərin kassada, maldan-mala, valyutadan-valyutaya faktiki baş verənlərə uyğun olub-olmaması. İki valyutanı yanaşı işlədən mağaza üçün bu, daha az yox, daha çox əhəmiyyət kəsb edir. Bir mübadilə kursu ilə yerli valyutada qeyd olunan oflayn satış, kurs dəyişdikdən saatlarca sonra sinxronlaşanda, rəfdə göstərilən qiymətlə hesabatların indi göstərdiyi arasında kiçik amma real bir fərq yaradır. Nəzərdən keçirdiyimiz açıq oflayn-əsaslı yazıların heç biri xüsusilə çoxvalyutalı uzlaşma məsələsinə toxunmur — bu, ört-basdır edilməkdən çox, açıq şəkildə adlandırılmalı bir boşluqdur.

"Yerli-əsaslı" ilə "uzlaşma baxımından təhlükəsiz" eyni şeydir?

Avtomatik olaraq yox. Cari oflayn-əsaslı materiallardaki daha geniş arqument ondan ibarətdir ki, kiçik satıcılara "oflayn rejimli bulud POS" lazım deyil — onlara internetin bağımlılıq yox, sinxronizasiya kanalı kimi qəbul edildiyi ticarət infrastrukturu lazımdır.[4] Bu, əsaslı bir dizayn prinsipidir və bağlantı haqqında düşünməyin düzgün yoludur. Amma "yerli-əsaslı" anlayışı məlumatın harada saxlanıldığını və necə tutulduğunu təsvir edir; öz-özlüyündə iki yerli həqiqətin bir düzgün növbə cəminə birləşəcəyinə zəmanət vermir. Konflikt həlli məntiqi — sonuncu yazı qalib gəlir, əl ilə baxış növbələri, hadisə-mənbəli təkrar icra — real ödənişləri olan bir dizayn seçimidir və elə bu hissə mağaza sahibinin bağlanış vaxtı ekrandaki rəqəmə etibar edə bilib-bilməyəcəyini müəyyən edir. Praktikada "oflayn işləyə bilən"i "uzlaşma baxımından təhlükəsiz"dən ayıran bir neçə praktik nümunə:

  • Hər oflayn əməliyyat növbəyə qoyulmadan əvvəl cihaz tərəfindən yaradılan sabit, unikal ID alır, beləliklə təkrar icra və ya təkrar sinxronizasiya heç vaxt ikiqat hesablamaya səbəb ola bilmir.
  • Konfliktlər insana çatdırılır — sadə "bu iki qeyd bir-birinə uyğun gəlmir, birini seçin" xəbərdarlığı belə olsa — hansı cihazın axırıncı sinxronlaşdığına baxmayaraq susqun şəkildə həll edilmək yerinə.
  • Valyuta və mübadilə kursu dəyərləri satış anına bağlanır, sinxronizasiya vaxtı yenidən hesablanmır, beləliklə gecikmiş sinxronizasiya növbənin bəyan olunmuş dəyərini gizlicə dəyişmir.
  • Növbə cəmi yalnız son bilinən vəziyyətdən yox, tam hadisə jurnalından yenidən qurulur, beləliklə baxış hansı cihazın nəyi nə vaxt qeyd etdiyini dəqiq göstərə bilir.

Kiçik mağaza almazdan əvvəl bunu necə qiymətləndirməlidir?

Bu mövzuda nəşr olunanların çoxu müstəqil auditlərdən yox, satıcı bloqlarından, mühəndislik nümunə araşdırmalarından və məhsul marketinq səhifələrindən gəldiyi üçün, "oflayn-əsaslı" etiketinin özünü zəmanət yox, marketinq qısaltması kimi qəbul etmək dəyərlidir. Əsas arxitektura — yerli saxlama, sinxronizasiya növbələri, idempotent API-lər — həqiqətən müxtəlif məhsullar arasında bir-birinə yaxınlaşır.[1] Çox dəyişən və çox nadir hallarda açıq şəkildə sənədləşdirilən isə hər satıcının qarışıq ortanı — çoxcihazlı konfliktlər, sinxronizasiya gecikməsi zamanı valyuta sürüşməsi, mağaza sahibinin mübahisəli əməliyyatı sadəcə cəmə etibar etmək yerinə görüb düzəldə bilib-bilməməsi — necə idarə etdiyidir. Pultrack-də biz mühəndislik vaxtımızın ən çoxunu məhz bu hissəyə sərf edirik, çünki işlədikdə görünməz, işləmədikdə isə baha başa gəlir: hər oflayn satış öz vaxt möhürünü, cihaz mənşəyini və kilidlənmiş mübadilə kursunu daşıyır, ziddiyyətli qeydlər isə bir-birini səssizcə üstələmək yerinə baxış üçün üzə çıxır. Biz düşünürük ki, oflayn dayanıqlılıq haqqında danışmağın daha dürüst yolu bu deyil: yalnız "satış davam edir", həm də "sonradan düzgün sayır". Əgər oflayn-əsaslı POS variantlarını müqayisə edirsinizsə, satıcıdan soruşulmalı suallar iş vaxtı iddiaları haqqında olmamalıdır. Onlar əvəzinə, hər ikisi oflayn olan iki cihaz eyni vaxtda yenidən onlayn olanda rəqəmlərinizə nə baş verdiyi haqqında olmalıdır.

Tez-tez verilən suallar

POS sistemi üçün 'oflayn-əsaslı' nə deməkdir?

Bu o deməkdir ki, tətbiq hər əməliyyat üçün mərkəzi serverlə canlı bağlantı tələb etmək yerinə, standart olaraq satışları cihazda yerli baza və sinxronizasiya növbəsi istifadə edərək qeydə almaq və emal etmək üçün qurulub. İnternet hər satışı təsdiqləmək üçün yox, mövcud olduqda məlumatı sinxronlaşdırmaq üçün istifadə olunur.

Yalnız bir kassası olan kiçik mağazada belə sinxronizasiya konfliktləri ola bilər?

Bəli. Konfliktlər birdən çox cihaz və ya sessiya müstəqil şəkildə hadisə qeydə ala bildiyi zaman baş verir — telefon və planşet, kassir cihazı və sahib cihazı, hətta elektrik kəsilməsindən sonra sinxronizasiya ortasında yenidən başlayan eyni cihaz. Oflayn vəziyyətdə satışı qeyd etməyin birdən çox yolunu istifadə edən istənilən mağaza bu problemə rast gələ bilər.

Oflayn-əsaslılıq çoxvalyutalı dəqiqlik problemlərini həll edir?

Öz-özlüyündə yox. Oflayn-əsaslı arxitektura satışın internet olmadan qeydə alına bilib-bilməməsini həll edir; sinxronlaşdıqdan sonra həmin satışın hansı mübadilə kursu ilə qiymətləndirilməli olduğunu, xüsusilə kurs kəsinti zamanı dəyişibsə, avtomatik həll etmir. Bu, satış anında kursu kilidləmək kimi qəsdən bir dizayn seçimi tələb edir.

Mağaza sahibi POS satıcısının sadəcə oflayn rejimi yox, uzlaşmanı da yaxşı idarə etdiyini necə bilə bilər?

Konkret olaraq soruşun: iki oflayn cihaz eyni növbə üçün ziddiyyətli qeydləri sinxronlaşdıranda nə baş verir — sistem konflikti baxış üçün işarələyir, yoxsa səssizcə bir versiyanı seçir? Həmçinin tarixi mübadilə kurslarının hər əməliyyat üçün saxlanılıb-saxlanılmadığını, yoxsa sonradan yenidən hesablanıb-hesablanmadığını soruşun.

Hazırkı oflayn-əsaslı POS trendi müstəqil araşdırmaya əsaslanır?

Əsasən yox. Bu mövzuda mövcud materialların çoxu müstəqil tədqiqatlardan yox, satıcı bloqlarından, məhsul səhifələrindən və mühəndislik nümunə araşdırmalarından ibarətdir, ona görə də etibarlılıq və ya 'gəlirin fasiləsizliyi' haqqında iddialar satıcı çərçivəsi kimi oxunmalı və öz mağazanızın şərtlərinə uyğunluğu yoxlanılmalıdır.

Mənbələr

Pultrack-ı sınayın✈ Telegram