Sistem dizaynı
Qısa başlanğıc

Sistem dizaynına giriş

Tələblər, məlumat axını və texniki seçimləri bir sistem şəklində düşün.

18 dəq · praktika daxilİzah, axın və quiz
PRAKTİK SSENARİ

Universitetdə qeydiyyat açılır: yüzlərlə tələbə eyni fənnin son yerini seçir.

Qorunmalı qayda

Təsdiqlənmiş qeydiyyat sayı fənnin tutumunu keçməməlidir.

Sistemin sərhədini müəyyən et

Universitet üçün dərs qeydiyyatı xidməti qurduğunu düşün. Tələbə fənləri görür, yer seçir və nəticəni alır. Ekran sadə olsa da, eyni son yeri iki tələbənin götürməsi, qeydiyyat vaxtı yaranan sıxlıq və serverin dayanması ayrıca qərarlar tələb edir. Sistem dizaynı bu davranışları komponentlər və onların arasındakı müqavilələrlə ifadə edir.

Əvvəl məhsulun nə etdiyini yaz. Sonra hansı keyfiyyətlərin vacib olduğunu soruş: cavab müddəti, işlək qalma, məlumat itkisi və məxfilik. “Sürətli olsun” ölçülə bilən tələb deyil. “Qeydiyyat sorğularının 99 faizi normal yükdə bir saniyədən tez bitsin” yoxlanıla bilən hədəfdir.

HLD ilə LLD arasındakı əlaqə

HLD tətbiq, məlumat bazası, növbə və digər xidmətlərin sərhədlərinə baxır. LLD isə bir komponentin daxilində siniflərin məsuliyyətini və vəziyyət keçidlərini müəyyənləşdirir. Qeydiyyat xidmətinin ayrıca olması HLD qərarıdır; Enrollment obyektinin hansı hallarda ləğv edilə bilməsi LLD qərarıdır.

Əvvəl bir tətbiq və bir məlumat bazası ilə işləyən axını qur. Sonra konkret problem ortaya çıxanda yeni komponent əlavə et. Beş istifadəçisi olan sistemə iyirmi mikroservis əlavə etmək əməliyyat yükünü artırır, məhsulun ehtiyacını isə avtomatik həll etmir.

İŞLƏMƏ PRİNSİPİ4 komponent · 3 əlaqə
Son yerə iki tələbə müraciət edir

Oxu yalnız məlumat verir. Qeydiyyat qərarı atomik yazıda verilir; uğur və konflikt həmin qərarın ayrı nəticələridir.

Son yerə iki tələbə müraciət edirOxu yalnız məlumat verir. Qeydiyyat qərarı atomik yazıda verilir; uğur və konflikt həmin qərarın ayrı nəticələridir. 1. Tələbə: Niyyəti yoxla → Qeydiyyat xidməti. Tələbənin kimliyi, fənnə yazılmaq hüququ və eyni əməliyyatın əvvəlki nəticəsi yoxlanır. Müştərinin göstərdiyi boş yer sayı qərar üçün kifayət deyil. 2. Qeydiyyat xidməti: Yeri atomik ayır → Təsdiqlənmiş qeyd. Yer sayını yalnız remaining > 0 olduqda azalt. Qeydiyyatı və əməliyyat nəticəsini eyni tranzaksiyada saxla; uğur cavabını təsdiqdən sonra ver. 3. Qeydiyyat xidməti: Yer yoxdursa rədd et → Konflikt cavabı. Şərtli yazı heç bir sətri dəyişmirsə qeydiyyat yaratma. İstifadəçiyə mövcud yerləri yeniləmək və ya başqa fənn seçmək imkanı ver.12301TələbəcourseId + requestKey02Qeydiyyat xidmətiİcazə + atomik yazı03Təsdiqlənmiş qeydYer sayı + enrollment04Konflikt cavabıYer qalmayıbSon yerə iki tələbə müraciət edirOxu yalnız məlumat verir. Qeydiyyat qərarı atomik yazıda verilir; uğur və konflikt həmin qərarın ayrı nəticələridir. 1. Tələbə: Niyyəti yoxla → Qeydiyyat xidməti. Tələbənin kimliyi, fənnə yazılmaq hüququ və eyni əməliyyatın əvvəlki nəticəsi yoxlanır. Müştərinin göstərdiyi boş yer sayı qərar üçün kifayət deyil. 2. Qeydiyyat xidməti: Yeri atomik ayır → Təsdiqlənmiş qeyd. Yer sayını yalnız remaining > 0 olduqda azalt. Qeydiyyatı və əməliyyat nəticəsini eyni tranzaksiyada saxla; uğur cavabını təsdiqdən sonra ver. 3. Qeydiyyat xidməti: Yer yoxdursa rədd et → Konflikt cavabı. Şərtli yazı heç bir sətri dəyişmirsə qeydiyyat yaratma. İstifadəçiyə mövcud yerləri yeniləmək və ya başqa fənn seçmək imkanı ver.12301TələbəcourseId + requestKey02Qeydiyyat xidmətiİcazə + atomik yazı03Təsdiqlənmiş qeydYer sayı + enrollment04Konflikt cavabıYer qalmayıb
Əlaqənin istiqamətiŞərti və ya ayrıca yol
Əlaqələri addım-addım araşdırNömrələr əlaqəni göstərir; paralel yollar ayrıca izah olunur.
Sorğu / çağırışTələbə Qeydiyyat xidməti

Tələbənin kimliyi, fənnə yazılmaq hüququ və eyni əməliyyatın əvvəlki nəticəsi yoxlanır. Müştərinin göstərdiyi boş yer sayı qərar üçün kifayət deyil.

Ötürülən məlumat
studentId / courseId / requestKey
İcra şərti
Eyni açar eyni tələbə və eyni niyyətə aiddir.
Əlaqə 1 / 3

Son yerə iki tələbə müraciət edir

Oxu yalnız məlumat verir. Qeydiyyat qərarı atomik yazıda verilir; uğur və konflikt həmin qərarın ayrı nəticələridir.

Son yerə iki tələbə müraciət edirOxu yalnız məlumat verir. Qeydiyyat qərarı atomik yazıda verilir; uğur və konflikt həmin qərarın ayrı nəticələridir. 1. Tələbə: Niyyəti yoxla → Qeydiyyat xidməti. Tələbənin kimliyi, fənnə yazılmaq hüququ və eyni əməliyyatın əvvəlki nəticəsi yoxlanır. Müştərinin göstərdiyi boş yer sayı qərar üçün kifayət deyil. 2. Qeydiyyat xidməti: Yeri atomik ayır → Təsdiqlənmiş qeyd. Yer sayını yalnız remaining > 0 olduqda azalt. Qeydiyyatı və əməliyyat nəticəsini eyni tranzaksiyada saxla; uğur cavabını təsdiqdən sonra ver. 3. Qeydiyyat xidməti: Yer yoxdursa rədd et → Konflikt cavabı. Şərtli yazı heç bir sətri dəyişmirsə qeydiyyat yaratma. İstifadəçiyə mövcud yerləri yeniləmək və ya başqa fənn seçmək imkanı ver.12301TələbəcourseId + requestKey02Qeydiyyat xidmətiİcazə + atomik yazı03Təsdiqlənmiş qeydYer sayı + enrollment04Konflikt cavabıYer qalmayıb
  1. Tələbə → Qeydiyyat xidməti: Niyyəti yoxla. Tələbənin kimliyi, fənnə yazılmaq hüququ və eyni əməliyyatın əvvəlki nəticəsi yoxlanır. Müştərinin göstərdiyi boş yer sayı qərar üçün kifayət deyil.studentId / courseId / requestKey

    İcra şərti: Eyni açar eyni tələbə və eyni niyyətə aiddir.

  2. Qeydiyyat xidməti → Təsdiqlənmiş qeyd: Yeri atomik ayır. Yer sayını yalnız remaining > 0 olduqda azalt. Qeydiyyatı və əməliyyat nəticəsini eyni tranzaksiyada saxla; uğur cavabını təsdiqdən sonra ver.remaining > 0 / enrollmentId / result

    İcra şərti: Şərtli yeniləmə bir sətri dəyişib; bütün yazılar birlikdə təsdiqlənib.

  3. Qeydiyyat xidməti → Konflikt cavabı: Yer yoxdursa rədd et. Şərtli yazı heç bir sətri dəyişmirsə qeydiyyat yaratma. İstifadəçiyə mövcud yerləri yeniləmək və ya başqa fənn seçmək imkanı ver.409 Conflict / current availability

    İcra şərti: Bu yeni əməliyyat üçün artıq boş yer yoxdur.

Qərarı necə əsaslandırmaq olar?

Hər seçim üçün dörd cümlə yaz: hansı tələb var, hansı variantları nəzərdən keçirdin, niyə birini seçdin və bunun əvəzində nə itirdin. Məsələn, dərs kataloqu keşdən oxuna bilər, amma son boş yer tranzaksiyada yoxlanmalıdır. Eyni məhsulun iki axını fərqli təzəlik tələbi daşıyır.

Diaqramdakı hər oxun mənası olmalıdır: sinxron sorğudur, hadisədir, yoxsa replikasiyadır? Uğurlu cavabın hansı anda verildiyini göstər. Sistem dayansa, istifadəçinin gördüyü nəticə ilə saxlanmış vəziyyət arasında ziddiyyət qalıb-qalmadığını yoxla.

AXINI ADDIM-ADDIM İZLƏ

Bir əməliyyatın izi

Hər mərhələdə sistemdə nə dəyişdiyini və nəticənin nə vaxt təsdiqləndiyini izlə.

01 / 03
ADDIM 1 · SİSTEMİN DAVRANIŞI

Tələb

Tələbə yalnız boş yeri olan fənnə qeydiyyatdan keçə bilər.

TEXNİKİ YOXLAMA

Dizaynı işlək sistemə çevir

Seçimi əsaslandır, nasazlığı yarat və nəticəni ölç.

  1. 01

    Seçim və məhdudiyyət

    Kataloqu keşdən göstər, qeydiyyatı isə yer sayı və unikal tələbə-fənn məhdudiyyəti ilə eyni tranzaksiyada təsdiqlə. Bu yazı yolu əlçatmazdırsa uğur cavabı vermə.

  2. 02

    Nasazlıq sınağı

    Son yerə 100 paralel sorğu göndər. Qalib sorğunun cavabını itir və eyni əməliyyat açarı ilə təkrarla: bir yer, bir qeydiyyat, eyni nəticə qalmalıdır.

  3. 03

    Nəyi ölçməli?

    Pik yükdə p99 gecikməsi, konflikt sayı və tutumu aşan qeydiyyat sayı. Sonuncu göstəricinin qəbul edilən qiyməti sıfırdır.

Proxy Academy üçün hazırlanmış orijinal dərs və məşq nümunələri.

Kursda davam et

Hesab açaraq 76 dərsi oxu və irəliləyişini saxla.

Hesab yarat və başla