Çok detaylı memcache giriş-iş akışı, uygulama ilkesi, erişim modeli ve talimat özeti

Genel Bakış

MemCache, veritabanı yükünü azaltmak için dinamik Web uygulamaları için kullanılan ücretsiz, açık kaynaklı, yüksek performanslı, dağıtılmış bir bellek nesnesi önbellek sistemidir. Verileri ve nesneleri bellekte önbelleğe alarak veritabanının okuma sayısını azaltır ve böylece web sitesine erişim hızını artırır. MemCaChe, anahtar / değer çiftlerini depolayan bir HashMap'tir. Keyfi verilerin (dizeler, nesneler vb.) Anahtar / değer çiftlerini bellekte depolar. Veriler, veritabanı çağrılarından, API çağrılarından veya sayfa oluşturma sonuçlarından gelebilir.

MemCache tasarım konsepti küçük ve güçlüdür. Basit tasarımı hızlı dağıtımı, kolay geliştirmeyi destekler ve büyük ölçekli veri önbelleğe alma ile karşılaşılan birçok sorunu çözer. Açık API MemCache'nin Java, C / C ++ / C #, Perl, Python, PHP, Ruby gibi en popüler programlama dilleri.

memcache iş akışı

  • Müşteri istek verileri
  • MemCached'de karşılık gelen verilerin olup olmadığını kontrol edin
  • Varsa geri dön ve bitir
  • Değilse, veri istemek için veritabanına gidin
  • Bir sonraki istekte kullanılmak üzere MemCached'e veri yazın
  • Verileri döndür, son
  • (Not: MemCached'de önbelleğe alınan veritabanı verileri, veritabanını güncellerken aynı zamanda MemCached'i de güncellemeye dikkat edin)

    memcache erişim modeli

    MemCache "dağıtılmış önbellek" olarak adlandırılmasına rağmen, MemCache'nin kendisi dağıtılmış işlevlere sahip değildir , MemCache kümeleri birbirleriyle iletişim kurmayacaktır (bunun aksine, bir sunucuda önbellek veri güncellemeleri olduğunda, kümedeki diğer makinelere önbelleği güncellemeleri veya önbellek verilerini temizlemeleri için bildirimde bulunacaktır), sözde "dağıtılmış", Yukarıdaki resimdeki akış gibi, tamamen istemci programının gerçekleştirilmesine bağlıdır.

    Aynı zamanda, bu resme dayanarak, MemCache yazma önbelleği sürecini bir kez sıralayacağız:

    1. Uygulama, önbelleğe alınması gereken verileri girer

    2. API, Anahtarı yönlendirme algoritması modülüne girer ve yönlendirme algoritması, Anahtar ve MemCache küme sunucu listesine göre bir sunucu numarası alır

    3. MemCache'yi ve IP adresini ve bağlantı noktası numarasını sunucu numarasından alın

    4. API, belirtilen numara ile sunucuyla iletişim kurması, sunucuya veri yazması ve dağıtılmış önbelleğin yazma işlemini tamamlaması için iletişim modülünü çağırır.

    Okuma önbelleği, yazma önbelleği ile aynıdır. Aynı yönlendirme algoritması ve sunucu listesi kullanıldığı sürece, uygulama aynı anahtarı sorguladığı sürece, MemCache istemcisi verileri okumak için her zaman aynı istemciye erişir, veriler sunucuda önbelleğe alındığı sürece , Önbellek isabetini garanti edebilirsiniz.

    Bu MemCache küme yöntemi, bölüm hatası toleransı açısından da değerlendirilir. Düğüm2 düşerse, Düğüm2'de depolanan veriler kullanılamaz. Şu anda, Düğüm0 ve Düğüm1 kümede hala mevcut olduğundan, bir dahaki sefere Düğüm2'de depolanması istendiğinde Key değeri olduğunda, herhangi bir isabet olmamalıdır. Bu sırada, önce veri tabanından önbelleğe alınacak verileri alın, ardından yönlendirme algoritması modülü, Anahtar değerine göre Düğüm0 ve Düğüm1'den bir düğüm seçer ve ilgili verileri içine koyar. Önbellek bir kez daha kullanılabilir.Bu tür bir kümeleme çok iyidir, ancak dezavantajı, maliyetin nispeten büyük olmasıdır.

    memcache uygulama ilkesi

    Bu resim, slab_class, slab, page ve chunk gibi dört kavramı içerir. Aralarındaki ilişki şu şekildedir:

    1. MemCache, bellek alanını bir döşeme grubuna böler

    2. Her bir levhanın altında birkaç sayfa vardır, her sayfa varsayılan olarak 1M'dir, bir levha 100M bellek kaplarsa, bu levhanın altında 100 sayfa olmalıdır.

    3. Her sayfa bir dizi parça içerir. Yığın, verilerin gerçekte depolandığı yerdir.Aynı döşemedeki yığının boyutu sabittir.

    4. Aynı boyutta parçalara sahip levhalar birlikte düzenlenir ve slab_class olarak adlandırılır.

    MemCache'nin bellek ayırma yöntemine ayırıcı adı verilir. Döşeme sayısı, başlangıç parametrelerinin yapılandırmasıyla ilgili olarak birkaç, bir düzine veya düzinelerce sınırlıdır.

    MemCache'deki değerin depolandığı yer değerin boyutuna göre belirlenir.Değer her zaman yığın boyutuna en yakın döşemede depolanır.Örneğin, döşeme yığın boyutu 80 bayt ve döşeme yığın boyutu 100 sözcüktür. Kesit ve döşemenin yığın boyutu 128 bayttır ( Bitişik döşemelerdeki yığınlar temelde 1.25 oranında büyür ve bu, MemCache başladığında -f ile belirtilebilir. ), ardından 88 baytlık bir değerin üzerine gelin, bu değer 2 numaralı levhaya yerleştirilecektir. Bir döşeme yerleştirirken, döşeme önce bellek için başvurmalıdır Hafıza uygulaması sayfalara dayanmaktadır Bu nedenle, ilk veri yerleştirilirken, boyutuna bakılmaksızın, döşemeye 1M'lik bir sayfa tahsis edilecektir. Sayfa için başvurduktan sonra, döşeme, sayfanın belleğini öbeğin boyutuna göre böler, böylece bir öbek dizisi olur ve son olarak veri depolamak için öbek dizisinden birini seçer.

    Ya bu döşemede ayrılabilecek yığın yoksa? MemCache -M eklenmeden başlatılırsa (LRU yasaklanmıştır, bu durumda bellek yeterli değildir ve Bellek Yetersiz hatası bildirilecektir), MemCache en son kullanılan parçayı bu döşemeye koyacaktır. Verileri temizleyin ve ardından en son verileri yerleştirin.

    Ortak komutların özeti

    Alan sınırlıdır ve memcache ile ilgili içerik burada özetlenmiştir. Devops ve DBA hakkında daha fazlasını daha sonra paylaşacağım ve ilgilenen arkadaşlar buna dikkat edebilir ~

    Portal S1200 serisinin tümünün CPU bağlantı şeması, PLC'nin hızlı koleksiyonunu öğrenmek istiyorum!
    önceki
    İPhone 8, gerçek telefona en yakın olan haberi verdi!
    Sonraki
    Önce onu görün! İkinci nesil iPhone SE'nin iyi bir görünüm ve performansla Nisan 2018'de satışa çıkması bekleniyor!
    Wei Kunlin ve Sang Jie dedikodular yayıldıktan sonra polis müdahale etti Uygulayıcı alenen özür diledi ve gerçekleri uydurduğunu itiraf etti
    Akıllı telefon dokunmatik ekrana bağlı mı? Bu, Siemens Portal'ın en temel işlevidir, 5 dakikada öğrenebilirsiniz
    Jailbreak eklentisi: Durum çubuğunun istediğiniz zaman pil sıcaklığını algılamasına ve görüntülemesine izin verin!
    Erişte iyi değilse, su sat, su iyi değilse, erişte sat, su ve erişte iyi değilse Master Kong, günde on milyarlarca piyasa değerini buharlaştırır.
    Bi Ying hamile mi? Hamilelik testi çubuğunu Zhang Danfeng'in odasına götürmekten şüphelenilen Hong Xin, büyük hareketi engellediği için yanıt vermedi mi?
    Siemens PLC tarih formatı tek seferde tükeniyor.Gelecekte zaman formatı konusunda kafanız karışmasın!
    En iyi yerli cep telefonu sistemi! Xiaomi MIUI küresel ağı etkinleştirilmiş kullanıcılar 300 milyonu aştı, bu harika!
    Apple'a asla kaybetmeyin, Samsung aynı zamanda akıllı hoparlörler de geliştiriyor!
    Chen Zhipeng'in babasının başrahip olarak görev yaptığı tapınak sabah erken saatlerde ateşe verildi ve çatı çöktü ve sahne karmakarışıktı.
    Omron PLC, Panasonic servo ile iyi çalışmıyor ve 73. yıl dönümü anısına, tasarruf etmek için yerel HMI'ye ihtiyaç duyuyor
    SWM X7 İnternet sürümü şaşırtıcı bir şekilde listeleniyor ve 96.900 yuan'dan başlıyor
    To Top