Təsəvvür edin ki, hər dəfə bir sayta daxil olduğunuzda o, şəkilləri yükləmək, səhifələri göstərmək və ya məlumatı əldə etmək üçün bütün verilənləri sıfırdan emal etməli olur. Bu, təkcə cavab müddətini artırmır, həm də serverə və sistem resurslarına əlavə yük düşür. Məhz burada keşləmə köməyə gəlir. Tez-tez müraciət olunan verilənləri daha sürətli yaddaşda saxlamaqla keşləmə verilənlərə giriş müddətini azalda və sistemin performansını yaxşılaşdıra bilər. Bəs keşləmə necə işləyir, hansı növləri var və ondan istifadə zamanı hansı çətinliklər yarana bilər?
Keşləmə nədir?
Keşləmə tez-tez istifadə olunan verilənlərin xüsusi bir yaddaşda saxlanması prosesidir. Fərz edək ki, bir neçə dəqiqədən bir müəyyən tətbiqə və ya verilənə müraciət etməlisiniz. Bu verilənlərə tez-tez müraciət olunduğu üçün hər istifadədə yenidən əldə edilməməsi məqsədilə onlar keş adlanan yerdə saxlanılır. Keşləmədən istifadənin bir çox səbəbi var, lakin ən vacibi verilənlərə giriş müddətini azaltmaqdır.
Sərt disklərin sürəti aşağıdır və hətta ən sürətliləri belə RAM və prosessorun sürətinə çata bilmir. Bu səbəbdən onlardan verilənləri əldə etmək vaxt aparır. Keş yaddaş isə fərqlidir, çünki o, yüksəksürətli yaddaş növüdür. Bu yaddaş növünün tutumu məhduddur və yalnız tez-tez müraciət olunan verilənləri saxlaya bilir.
Keşləmənin növləri
Bu bölmədə keşləmənin müxtəlif növlərini və onların tətbiq sahələrini nəzərdən keçirəcəyik.
Müştəri tərəfində keşləmə
Bu üsulda verilənlər müştəri tərəfində, adətən veb-brauzerdə saxlanılır. Brauzer veb-səhifələrin və şəkillər kimi resursların nüsxələrini öz keşində saxlaya bilir ki, sonrakı ziyarətlərdə onlar serverdən yenidən əldə edilmədən göstərilsin. Məsələn, səhifənin sonuncu dəfə nə vaxt dəyişdirildiyini yoxlamaqla brauzer keşdəki versiyanın hələ də etibarlı olub-olmadığını müəyyən edə bilər.Server tərəfində keşləmə
Bu üsulda sorğulara daha tez cavab vermək, server və şəbəkə üzərindəki yükü azaltmaq üçün verilənlər server tərəfində saxlanılır. Buna nümunə olaraq keşləyici proksi serverdən istifadəni göstərmək olar: o, sorğulanan məzmunu saxlayır və lazım olduqda eyni məzmunu digər istifadəçilərə təqdim edir. IBM WebSphere Application Server-dəki DynaCache də server tərəfində keşləmə mexanizminin başqa bir nümunəsidir.Tam səhifə keşləməsi
Bu üsulda hazır şəklə salınmış veb-səhifənin tam nüsxəsi saxlanılır ki, sonrakı sorğularda məzmun yaradan bütün prosesləri yenidən icra etmədən səhifə təqdim olunsun. Lakin bu üsul yalnız səhifə məzmunu keşlənə bildikdə və ondakı dəyişikliklər düzgün idarə olunduqda uyğundur.Fraqment keşləməsi
Bu üsulda bütün səhifəni saxlamaq əvəzinə, səhifənin müəyyən hissələri ayrı-ayrılıqda keşlənir. Bu yanaşma səhifədə həm statik, həm də dinamik məzmun olduqda faydalıdır. Saxlanıla bilən hissələri keşləməklə bütün səhifəni vahid bir blok kimi keşləmədən səhifənin performansını yaxşılaşdırmaq mümkündür.Statik məzmunun keşlənməsi
Bu üsul qrafik təsvirlər və mətn faylları kimi nadir hallarda dəyişən məzmunu saxlamaq üçün istifadə olunur. Belə məzmun adətən tez-tez yenilənmə tələb etmədiyi üçün onun nüsxəsini keşdə saxlamaq əsas serverə göndərilən sorğuların sayını və səhifənin yüklənmə müddətini azalda bilər.Dinamik məzmunun keşlənməsi
Bu üsulda tez-tez dəyişə bilən və ya istifadəçi məlumatları və şərtlər əsasında yaradılan məzmun keşlənir. Dinamik məzmun fərdiləşdirilmiş ola biləcəyi üçün keşin etibarlılığını idarə etmək və onun nə vaxt yenilənməli olduğunu müəyyən etmək xüsusilə vacibdir. IBM WebSphere Application Server-dəki DynaCache dinamik məzmunun keşlənməsi üçün həll nümunəsidir.
Nə üçün keşləmədən istifadə etməlisiniz?
Yuxarıda qeyd edildiyi kimi, keşləmədən istifadənin səbəblərindən biri tez-tez istifadə olunan verilənlərə giriş sürətini artırmaqdır. Bundan əlavə, keşləmə serverdəki emal yükünü azaldır. Bəs nə üçün?
Sistem müəyyən bir verilənə tez-tez ehtiyac duyduqda və onu yaddaş qurğusundan əldə etməli olduqda, bu, təkcə daha çox vaxt aparmır, həm də CPU və digər sistem resursları tərəfindən əlavə emal tələb edir. Lakin bu verilənlər keşdə mövcud olarsa, sistem yaddaş qurğusuna yenidən müraciət etmədən keşə daxil olub verilənləri əldə edə bilər.
Keşləmənin digər üstünlükləri də var və onları nümunə ilə başa düşmək daha asandır. Fərz edək ki, saxlanılmalı olan 10 GB veriləniniz var. Prosessor yaddaş sistemindən qat-qat sürətli olduğu üçün yaddaş sistemi bu verilənləri eyni sürətlə yaza bilməyə bilər. Məhz burada keşləmə köməyə gəlir. Prosessor verilənləri keşə göndərir, keş isə onları yaddaş sisteminə uyğun sürətlə ötürür. Bu, prosessora lazımsız gecikmələr olmadan işini davam etdirməyə imkan verir və eyni zamanda verilənlərin düzgün saxlanılmasını təmin edir.
Hostinq saytın performansına necə təsir edir?
Keşləmə saytın performansını əhəmiyyətli dərəcədə yaxşılaşdıra bilər, lakin saytın nə qədər tez yüklənməsini müəyyən edən yeganə amil deyil. Hostinq infrastrukturu da mühüm rol oynayır. CPU, RAM, yaddaşın sürəti və şəbəkə performansı kimi server resursları, xüsusilə sayt yüksək trafiklə üzləşdikdə, sorğuların nə qədər tez emal olunmasına təsir edə bilər.
Effektiv keşləmə strategiyası olsa belə, hostinq mühiti saytın iş yükünün öhdəsindən səmərəli şəkildə gələ bilmirsə, saytın performansı zəif qala bilər. Kifayət qədər resursa və etibarlı performansa malik hostinq xidməti seçmək serverin cavab müddətini azaltmağa və istifadəçi təcrübəsini yaxşılaşdırmağa kömək edə bilər. Buna görə də saytınızın sürətini və performansını artırmaq istəyirsinizsə, optimallaşdırma üsullarını tətbiq etməklə yanaşı, saytınızın ehtiyaclarına cavab verən veb-hostinq planlarını nəzərdən keçirmək təsirli addım ola bilər.
Keşləmə necə işləyir?
Keşləmənin müxtəlif növləri var və o, bir saxlama formasıdır. Verilən sorğulandıqda, sərt diskdən əldə edilməzdən əvvəl keş yoxlanılır. Lakin keş yaddaşın tutumu məhdud olduğu üçün bütün sistem verilənlərini orada saxlamaq mümkün deyil. Buna görə də sistem hansı verilənlərin keşdə saxlanılmalı olduğunu müəyyən etməlidir.
Digər tərəfdən, keş dolu olduqda və tez-tez müraciət olunan yeni verilənlər əlavə edilməli olduqda, sistem mövcud verilənlərdən hansının silinəcəyinə qərar verməlidir. Bu məqsədlə müxtəlif alqoritmlər mövcuddur və onlar hansı verilənlərin yenidən istifadə olunma ehtimalının ən az olduğunu qiymətləndirir.
Cache miss nədir?
Tətbiq müxtəlif növ verilənlər sorğuladıqda, sorğular keşə göndərilir. Sorğulanan verilənlər keşdə mövcud deyilsə, keş uğursuzluqlarının (cache miss) sayı artır. Bu o deməkdir ki, sistem dəfələrlə keşə müraciət edib, lakin lazımi verilənlər orada olmadığı üçün onları yaddaş qurğusundan əldə etməli olub.
Bu, sistemin performansını azaldır. Bu problemi həll etmək üçün keşin tutumunu artırmaq olar.
RAID kontroller nədir?
RAID kontroller serverlərdə keşləmə və yaddaş performansını yaxşılaşdırmaq üçün xüsusi olaraq hazırlanmış aparat komponentidir. Flash yaddaşın köməyi ilə onun keşi əlavə saxlama tutumu təmin edir və serverin performansını əhəmiyyətli dərəcədə artırır.
Keşləmənin çətinlikləri
- Lokal keş: Eyni verilənlərin müxtəlif versiyalarının bir neçə sistemdə saxlanılması verilənlərin uyğunsuzluğuna səbəb ola və keşləmənin səmərəliliyini azalda bilər.
- Keş koherentliyi problemi: Verilənlər bir keşdə dəyişdikdə, həmin verilənlərin digər keşlərdəki uyğun nüsxələrini sinxron saxlamaq çətinləşir.
- Keşin yan keçilməsi (Cache Penetration): Bu, sorğulanan verilənlər nə keşdə, nə də əsas verilənlər bazasında mövcud olmadıqda baş verir. Bloom filtrindən istifadə bu problemi azaltmağa kömək edə bilər.
- Keş uçqunu (Cache Avalanche): Keşin sıradan çıxması və ya çoxlu sayda keşlənmiş elementin eyni vaxtda vaxtının bitməsi verilənlər bazasına kütləvi sorğu axını göndərərək nasazlıqlara səbəb ola bilər. Keş klasterindən və Hystrix kimi alətlərdən istifadə bu problemi yüngülləşdirməyə kömək edə bilər.
Nəticə
Keşləmə sistemin performansını yaxşılaşdırmaq, verilənlərə giriş müddətini azaltmaq və serverlərdəki emal yükünü aşağı salmaq üçün effektiv üsuldur. Sistem tələblərindən asılı olaraq, tez-tez müraciət olunan verilənləri saxlamaq və onları daha tez təqdim etmək üçün müxtəlif keşləmə üsullarından istifadə etmək olar. Lakin performansı qorumaq və cache miss, keş koherentliyi problemləri və keş uçqunu kimi problemlərin qarşısını almaq üçün düzgün keşləmə strategiyasını seçmək və keşlənmiş verilənləri lazımi qaydada idarə etmək vacibdir. Keşləmənin necə işlədiyini, onun müxtəlif növlərini və mümkün çətinliklərini başa düşmək sistemləri layihələndirərkən və optimallaşdırarkən daha düzgün qərarlar qəbul etməyə kömək edir.
Tez-tez verilən suallar
1. Keşdən çıxarma alqoritmləri necə işləyir?
Keşdən çıxarma alqoritmləri keş tutumunun həddinə çatdıqda hansı verilənlərin silinməli olduğunu müəyyən edir. LRU (Least Recently Used – ən uzun müddət istifadə olunmayan) və LFU (Least Frequently Used – ən az istifadə olunan) kimi alqoritmlər verilənləri onlara nə qədər yaxın vaxtda və ya nə qədər tez-tez müraciət olunmasına əsasən seçir.
Hər iki üsuldan istifadə dedicated serverin təhlükəsizliyini və xidmətin əlçatanlığını artırır.
2. Keş koherentliyi nədir və nə üçün vacibdir?
Keş koherentliyi dəyişikliklər baş verdikdə eyni verilənlərin keşdəki bir neçə nüsxəsinin uyğun qalmasını təmin edir. Bu, xüsusilə bir neçə keşin eyni verilənlərin nüsxələrini saxlaya bildiyi paylanmış sistemlərdə və çoxprosessorlu mühitlərdə vacibdir.


