Əsas məzmuna keçin

Distributed Sistemlər - Əsas Anlayışlar

Distributed sistemlər bir neçə kompüterdən ibarət sistemlərdir. Bu kompüterlər şəbəkə vasitəsi ilə birləşir və birgə işləyirlər. İstifadəçi üçün vahid sistem kimi görünür. Müasir texnologiya dünyasında böyük miqyaslı tətbiqlər, bulud xidmətləri və internet servislərinin əsasını təşkil edir.

Scaling

Scaling sistemi böyütmək deməkdir. İki növü var:

Vertical Scaling (Scale Up)

  • Bir serverə daha çox resurs əlavə edirik
  • RAM, CPU və ya disk həcmini artırırıq
  • Sadədir, amma məhdudiyyəti var

Horizontal Scaling (Scale Out)

  • Sistemə yeni serverlər əlavə edirik
  • Yükü bir neçə server arasında bölürük
  • Daha çox scale etməyə imkan verir

Nümunə: Onlayn mağaza böyüyəndə, horizontal scaling ilə yeni serverlər əlavə edə bilərsiniz.

Availability

Availability sistemin işlək vəziyyətdə qalma müddətidir. Faizlə ölçülür.

Availability Səviyyələri

  • 99% (iki 9) - Ayda 7.2 saat dayana bilər
  • 99.9% (üç 9) - Ayda 43 dəqiqə dayana bilər
  • 99.99% (dörd 9) - Ayda 4.3 dəqiqə dayana bilər

Availability Artırmaq Üçün

  • Sistemdə dublikat komponentlər saxlayırıq
  • Load balancer istifadə edirik
  • Məlumatları bir neçə yerdə saxlayırıq

Latency

Latency sorğu göndərdikdən cavab alana qədər keçən vaxtdır. Millisaniyələrlə ölçülür.

Latency Növləri

  • Network latency - Məlumatın şəbəkədə getmə vaxtı
  • Processing latency - Serverin sorğunu emal etmə vaxtı
  • Database latency - Məlumat bazasından məlumat alma vaxtı

Latency Azaltmaq Üçün

  • CDN istifadə edirik (məlumatı istifadəçiyə yaxın saxlayırıq)
  • Cache mexanizmi qururuq
  • Database sorğularını optimallaşdırırıq

Fault Tolerance

Fault tolerance sistemin xətalar baş verəndə də işləməyə davam etməsidir. Bu, sistemin etibarlılığını və dayanıqlılığını təmin edən mühüm xüsusiyyətdir.

Fault Tolerance Metodları

Replication (Təkrarlama)

  • Məlumatın bir neçə kopyasını müxtəlif yerlərdə saxlayırıq
  • Bir server xarab olsa, digəri işləyir
  • Master-slave və master-master konfiqurasiyaları mövcuddur

Redundancy (Ehtiyat)

  • Kritik komponentlərin ehtiyatını saxlayırıq
  • Primary və backup serverlər qururuq
  • Hardware və software səviyyəsində tətbiq olunur

Health Checks (Sağlamlıq Yoxlamaları)

  • Sistemin hissələrini daim monitorizasiya edirik
  • Problem tapanda avtomatik düzəldirik və ya əvəz edirik
  • Heartbeat mexanizmi ilə node-ların vəziyyətini izləyirik

Circuit Breaker Pattern

  • Xarab olan servislərə sorğu göndərməyi dayandırırıq
  • Sistemin digər hissələrini qoruyuruq
  • Müəyyən müddət sonra yenidən cəhd edirik

Nümunə: Bank sistemində əməliyyatlar bir neçə serverə yazılır. Bir server problem yaşasa, digərləri işə davam edir və istifadəçi heç nə hiss etmir.

CAP Teoremi

CAP teoremi (Brewer teoremi) distributed sistemlərdə üç xüsusiyyətin hamısını eyni anda əldə edə bilməyəcəyimizi bildirir. Bu, distributed sistemlərin dizaynında fundamental məhdudiyyətdir.

Üç Xüsusiyyət

C - Consistency (Ardıcıllıq)

  • Bütün node-lar eyni zamanda eyni məlumatı görür
  • İstifadəçilər həmişə ən son yazılmış məlumatı oxuyurlar
  • Nümunə: Bank hesabı balansının bütün node-larda eyni olması

A - Availability (Əlçatanlıq)

  • Hər bir sorğu (uğurlu və ya uğursuz) cavab alır
  • Sistem həmişə əlçatan olur, hətta bəzi node-lar nasaz olsa belə
  • Nümunə: E-commerce saytının həmişə istifadəçi sorğularına cavab verməsi

P - Partition Tolerance (Bölünmə Dözümlülüyü)

  • Sistem, node-lar arasında ünsiyyət kəsilsə belə işləməyə davam edir
  • Şəbəkə problemləri zamanı sistem funksionallığını qoruyur
  • Nümunə: Bir data mərkəzi digərləri ilə əlaqəni itirdikdə belə işləməyə davam edir

CAP Seçimləri

Distributed sistemlər adətən aşağıdakı kombinasiyalardan birini seçir:

CP Sistemlər (Consistency + Partition Tolerance)

  • Məlumat həmişə düzgün və aktual olur
  • Availability qurban verilir - bəzi node-lar əlçatmaz ola bilər
  • Nümunələr: Bank sistemləri, HBase, MongoDB (default konfiqurasiya)
  • İstifadə halları: Maliyyə əməliyyatları, kritik məlumat bazaları

AP Sistemlər (Availability + Partition Tolerance)

  • Sistem həmişə işləyir və cavab verir
  • Məlumat bəzən köhnə ola bilər (eventual consistency)
  • Nümunələr: Sosial media feed-ləri, Cassandra, Amazon DynamoDB
  • İstifadə halları: Sosial şəbəkələr, log sistemləri, cache servislər

CA Sistemlər (Consistency + Availability)

  • Nəzəri olaraq mümkündür, lakin praktikada çətindir
  • Şəbəkə bölünmələrinə dözümsüzdür
  • Nümunələr: Tək node RDBMS sistemləri
  • Məhdudiyyət: Şəbəkə problemləri həmişə mümkün olduğuna görə real distributed sistemlər üçün uyğun deyil

Qeyd: Müasir distributed sistemlər çox vaxt Consistency və Availability arasında balans yaratmağa çalışır və müxtəlif consistency səviyyələri təklif edir.

Nəticə

Distributed sistemlər müasir texnologiyanın ayrılmaz hissəsidir. Bu sistemləri dizayn edərkən aşağıdakı prinsipləri nəzərə almaq vacibdir:

Əsas Dizayn Prinsipləri

  1. Trade-off-ları Başa Düşmək

    • Heç bir sistem mükəmməl deyil
    • Performance, consistency və availability arasında balans yaratmaq lazımdır
    • Biznes tələblərinə uyğun seçimlər etmək vacibdir
  2. Fault-ların Qaçınılmaz Olduğunu Qəbul Etmək

    • Hardware nasazlıqları, şəbəkə problemləri və software xətaları həmişə mümkündür
    • Sistemin bu problemlərə hazır olması lazımdır
    • Graceful degradation prinsipi tətbiq edilməlidir
  3. Monitoring və Observability

    • Sistem davranışını daim izləmək lazımdır
    • Metrics, logging və tracing vacib elementlərdir
    • Problemləri erkən aşkar etmək və həll etmək kritikdir
  4. Simplicity və Modularity

    • Sadə həllər daha etibarlıdır
    • Sistemin hissələri bir-birindən asılı olmamalıdır
    • Microservices arxitekturası bu prinsipi dəstəkləyir

Distributed sistemlər mürəkkəb olsa da, düzgün anlayış və dizayn prinsipləri ilə güclü və etibarlı həllər yaratmaq mümkündür.