Çok seviyeli önbellek çözümü (TMC)

1. Giriş

1-1. TMC nedir

TMC veya "Şeffaf Çok Düzeyli Önbellek", şirket içindeki uygulamalar için Youzan PaaS ekibi tarafından sağlanan genel bir önbellekleme çözümüdür.

Genel "dağıtılmış önbellekleme çözümüne (örneğin, kendi geliştirdiği dağıtılmış önbellekleme sistemi zanKV'yi seviyorsanız CodisProxy + Redis gibi)" dayalı olarak, TMC aşağıdaki işlevleri eklemiştir:

  • Uygulama katmanı sıcak nokta tespiti
  • Uygulama katmanı yerel önbelleği
  • Uygulama katmanı önbelleği isabet istatistikleri

Önbelleğin kullanımı sırasında uygulama katmanının etkin nokta erişim sorununu çözmesine yardımcı olmak için.

1-2. TMC neden

Likes hizmetlerini kullanan birçok e-ticaret tüccarı vardır ve satıcılar ara sıra bazı "ürün seckill" ve "ürün tanıtımı" etkinlikleri yaparak "pazarlama etkinlikleri", "ürün ayrıntıları" ve "işlem siparişleri" gibi uygulamaları birbirine bağlar. Görünmek Hotspot erişimini önbelleğe alma Durum:

  • Olay zamanı, olay türü, olay ürünleri, vb. Gibi bilgiler öngörülemezdir ve öngörülemeyen önbellek etkin nokta erişimine neden olur;
  • Önbellek etkin nokta erişiminin ortaya çıkması sırasında, uygulama katmanındaki az sayıda * etkin nokta erişim anahtarı * çok sayıda önbellek erişim isteği oluşturur: dağıtılmış önbellek sistemini etkiler, büyük miktarda intranet bant genişliğini kaplar ve sonuçta uygulama katmanı sisteminin kararlılığını etkiler;

Yukarıdaki sorunların üstesinden gelmek için, etkin noktaları otomatik olarak keşfedebilen ve sıcak nokta önbellek erişim isteklerini uygulama katmanındaki yerel önbelleğe iletebilen bir çözüme ihtiyaç vardır, bu da TMC'nin sebebidir.

1-3. Çok seviyeli önbelleğe alma çözümlerinin sorunlu noktaları

Yukarıdaki açıklamaya dayanarak, aşağıdakileri özetledik Çok seviyeli önbelleğe alma çözümü Sorunlu noktaları çözmeniz gerekiyor:

  • Sıcak nokta algılama: * etkin nokta erişim anahtarı * nasıl hızlı ve doğru bir şekilde keşfedilir?
  • Veri tutarlılığı: Uygulama katmanındaki yerel önbellekte dağıtılmış önbellek sistemi ile veri tutarlılığı nasıl sağlanır?
  • Etki doğrulama: Uygulama katmanının, çok düzeyli önbelleğe almanın etkisini doğrulamak için yerel önbellek isabet oranını, kısayol tuşunu ve diğer verileri görüntülemesine nasıl izin verilir?
  • Şeffaf erişim: Genel çözüm, uygulama sistemine izinsiz girişleri nasıl azaltabilir ve hızlı ve sorunsuz erişim sağlayabilir?

TMC, yukarıda belirtilen sorunlara odaklandı, genel bir çözüm tasarladı ve uyguladı. "Sıcak nokta algılamayı" ve "yerel önbelleği" desteklemek için, sıcak noktalara erişildiğinde aşağı akış dağıtılmış önbellek hizmetleri üzerindeki etkiyi azaltın ve uygulama hizmetlerinin performansını ve kararlılığını etkilemekten kaçının.

2. TMC genel mimarisi

TMC'nin genel yapısı, üç katmana ayrılan yukarıdaki şekilde gösterildiği gibidir:

  • Depolama katmanı: Temel kv veri depolama yetenekleri sağlayın ve farklı iş senaryoları için farklı depolama hizmetleri (codis / zankv / aerospike) seçin;
  • Ajan katmanı: Uygulama katmanı için birleşik bir önbellek girişi ve iletişim protokolü sağlayın ve dağıtılmış veri seviyesi bölündükten sonra yönlendirme işlevi yönlendirme işini üstlenin;
  • Uygulama katmanı: Uygulama hizmetleri, yerleşik "sıcak nokta algılama", "yerel önbellek" ve diğer işlevler için, işletmeye şeffaf, birleşik bir istemci sağlar;

Bu makale, uygulama katmanı istemcisinin "sıcak nokta algılama" ve "yerel önbellek" işlevlerine odaklanmaktadır.

Üç, TMC yerel önbellek

3-1. Nasıl şeffaf olunur

TMC, iş uygulama sistemlerinin izinsiz girişini nasıl azaltır ve şeffaf erişim sağlar?

Şirketin Java uygulama hizmetleri için iki tür önbellek istemcisi kullanımı vardır:

  • Spring.data.redis paketine bağlı olarak, işletme kodu yazmak için RedisTemplate kullanın;
  • Youzan.framework.redis paketine bağlı olarak, işletme kodu yazmak için RedisClient kullanın;

Yukarıdaki yöntemden bağımsız olarak, JedisPool tarafından oluşturulan Jedis nesnesi nihayet önbellek sunucusunun proxy katmanıyla etkileşime girer.

TMC, yerel jedis paketinin JedisPool ve Jedis sınıflarını değiştirdi ve JedisPool'un başlatılması sırasında Hermes-SDK paketinin başlatma mantığını TMC "sıcak nokta keşfi" + "yerel önbellek" işlevi ile entegre ederek Jedis istemcisinin önbellek sunucusu katmanı proxy'si ile etkileşime girmesini sağladı "Sıcak nokta algılama" + "yerel önbellek" işlevlerine şeffaf erişimi tamamlamak için önce Hermes-SDK ile etkileşime geçin.

Java uygulama hizmetleri için, kodu değiştirmeden jedis-jar paketinin yalnızca belirli bir sürümünü kullanmanız gerekir, TMC'ye erişebilirsiniz. Uygulama sistemine minimum düzeyde izinsiz giriş yapmak için "etkin nokta keşfi" + "yerel önbellek" işlevini kullanın.

3-2. Genel yapı

3-2-1. Modül bölümü

TMC yerel önbelleğinin genel yapısı aşağıdaki modüllere ayrılmıştır:

  • Jedis Müşteri : Java uygulamaları ile önbellek sunucusu arasındaki etkileşim için doğrudan giriş ve arayüz tanımı, yerel Jedis-Client ile aynıdır;
  • Hermes-SDK : "Sıcak nokta keşfi + yerel önbellek" işlevinin kendi geliştirdiği SDK paketi, Jedis-Client, onunla etkileşime girerek ilgili yetenekleri entegre eder;
  • Hermes sunucu kümesi : Hermes-SDK tarafından bildirilen önbellek erişim verilerini alın, sıcak nokta algılaması yapın ve sıcak nokta anahtarını yerel önbellek için Hermes-SDK'ya itin;
  • Önbellek kümesi : Bir ajan katmanından ve bir depolama katmanından oluşur ve uygulama istemcileri için birleşik bir dağıtılmış önbellek hizmeti girişi sağlar;
  • Temel bileşenler : Etcd kümesi, Apollo yapılandırma merkezi, TMC'ye "küme itme" ve "birleştirilmiş yapılandırma" yetenekleri sağlar;

3-2-2. Temel akış

1) Anahtar değerini alın

  • Java uygulaması çağrısı Jedis Müşteri Arayüz, anahtarın önbellek değerini aldığında, Jedis Müşteri Soracak Hermes-SDK Anahtar şu anda mı Kısayol tuşu
  • İçin Kısayol tuşu , Doğrudan Hermes-SDK Hotspot modülü, ziyaret etmeden yerel olarak önbelleğe alınan etkin nokta anahtarının değerini alır Önbellek kümesi , Erişim talebinin uygulama katmanına iletilmesi için;
  • Olmayan için Kısayol tuşu , Hermes-SDK Callable ile geri aranacak Jedis Müşteri Yerel arayüz Önbellek kümesi Değer değerini alın;
  • İçin Jedis Müşteri Her bir anahtar değer erişim isteği, Hermes-SDK İletişim modülü aracılığıyla anahtar erişim olayı Eşzamansız olarak bildir Hermes sunucu kümesi , Rapor edilen verilere göre "sıcak nokta tespiti" yapabilmesi için;

2) Anahtar değerinin süresi dolar

  • Java uygulaması çağrısı Jedis Müşteri Set () del () expire () arayüzü, karşılık gelen anahtar değerinin geçersiz olmasına neden olur, Jedis Müşteri Eşzamanlı olarak çağrılacak Hermes-SDK Valid () yöntemi, "anahtar değeri geçersiz" olayını bildirir;
  • İçin Kısayol tuşu , Hermes-SDK Hotspot modülü, yerel verilere ulaşmak için önce yerel olarak önbelleğe alınan anahtarın değer değerini geçersiz kılar. Güçlü anlaşma . Aynı zamanda, iletişim modülü "anahtar değeri geçersiz" olayını eşzamansız olarak geçecektir. etcd kümesi Java uygulama kümesinde başkalarına gönder Hermes-SDK düğüm;
  • diğer Hermes-SDK Düğümün iletişim modülü "anahtar değeri geçersiz kılma" olayını aldıktan sonra, küme verilerini elde etmek için yerel olarak önbelleğe alınan anahtarın değerini geçersiz kılmak için etkin nokta modülünü çağırır Sonunda oybirliği

3) Sıcak nokta keşfi

  • Hermes sunucu kümesi Toplamaya devam et Hermes-SDK Bildirildi anahtar erişim olayı , Farklı iş uygulama kümelerinin önbellek erişim verileri üzerinde periyodik (3s kez) analiz ve hesaplama gerçekleştirerek Kısayol tuşu Liste
  • Tespit için Kısayol tuşu Liste, Hermes sunucu kümesi Geç etcd kümesi Farklı iş uygulama kümelerine aktarın Hermes-SDK Haber vermek için iletişim modülü Kısayol tuşu Liste yerel olarak önbelleğe alınır;

4) Yapılandırma okundu

  • Hermes-SDK Başlatma ve çalıştırma sırasında, Apollo Yapılandırma Merkezi Önem verdiği yapılandırma bilgilerini okuyun (örneğin: başlatma ve kapatma yapılandırması, kara ve beyaz liste yapılandırması, etcd adresi ...);
  • Hermes sunucu kümesi Başlatma ve çalıştırma sırasında, Apollo Yapılandırma Merkezi Önem verdiği yapılandırma bilgilerini okuyun (örneğin: iş uygulaması listesi, etkin nokta eşik yapılandırması, etcd adresi ...);

3-2-3. Kararlılık

TMC yerel önbelleğinin kararlılığı aşağıdaki yönlerde gösterilmektedir:

  • Eşzamansız veri raporlama: Hermes-SDK İşi engellemeden "anahtar erişim olaylarını" eşzamansız olarak rapor etmek için rsyslog teknolojisini kullanın;
  • İletişim modülü iş parçacığı yalıtımı: Hermes-SDK İletişim modülü, olay raporlama ve izlemenin G / Ç işleminin iş yürütme iş parçacığından izole edilmesini sağlamak için bağımsız bir iş parçacığı havuzu + sınırlı bir kuyruk kullanır ve beklenmedik bir istisna olsa bile, temel iş işlevlerini etkilemeyecektir;
  • Önbellek kontrolü: Hermes-SDK Hotspot modülü, yerel önbellek boyutunun üst sınırını kontrol eder, böylece 64MB'den (LRU) fazla bellek kaplamaz ve JVM yığın bellek taşması olasılığını önler;

3-2-4. Tutarlılık

TMC yerel önbellek tutarlılığı, aşağıdaki yönlerden ortaya çıkar:

  • Hermes-SDK Yalnızca hotspot modülü önbelleği Kısayol tuşu Veriler, kısayol tuşu olmayan verilerin çoğu, Önbellek kümesi depolama;
  • Kısayol tuşu Değişiklik değerin geçersiz olmasına neden olduğunda, Hermes-SDK Yerel önbelleğin eşzamanlı olarak geçersiz kılınması, garanti Güçlü yerel anlaşma
  • Kısayol tuşu Değişiklik değerin geçersiz olmasına neden olduğunda, Hermes-SDK Geçmek etcd kümesi Yayın olayları, iş uygulaması kümesindeki diğer düğümlerin yerel önbelleğini eşzamansız olarak geçersiz kılar. Küme sonunda tutarlıdır

Dört, TMC etkin nokta keşfi

4-1. Genel süreç

TMC etkin nokta keşif süreci dört adıma bölünmüştür:

  • Veri toplama : Toplamak Hermes-SDK Anahtar erişim olayı bildirildi;
  • Termal sürgülü pencere : Uygulamanın her bir Anahtarı için, kayan pencerenin o anki saatine bağlı olarak ziyaret ısısını kaydetmek için bir zaman çarkı bulundurun;
  • Isı toplama : Uygulamadaki tüm Tuşlar için < anahtar, ısı > Popülerliği şu şekilde sıralayın ve özetleyin;
  • Sıcak nokta tespiti Uygulama için, kısayol tuşu sıralama özet sonucundan TopN'nin kısayol tuşunu seçin ve Hermes-SDK

4-2. Veri toplama

Hermes-SDK Yerel rsyslog aracılığıyla anahtar erişim olayı Sözleşme formatına koyun kafka , Hermes sunucu kümesi Her düğüm, Kafka mesajlarını tüketir ve bunları gerçek zamanlı olarak alır anahtar erişim olayı .

Erişim olayı protokolünün biçimi aşağıdaki gibidir:

  • appName: küme düğümünün ait olduğu iş uygulaması
  • uniqueKey: İş uygulaması anahtar erişim etkinliğinin anahtarı
  • sendTime: İş uygulaması anahtar erişim olayının gerçekleştiği saat
  • ağırlık: iş uygulamasının temel erişim olayının erişim ağırlığı

Hermes sunucu kümesi Düğüm ne toplayacak anahtar erişim olayı Yerel bellekte saklanan bellek veri yapısı Harita'dır < Dize, Harita < Dize, LongAdder > > , İlgili işletme anlamı Harita ile eşleştirilir < appName, Harita < uniqueKey, popülerlik > > .

4-3. Termal sürgülü pencere

4-3-1. Zaman kaydırma penceresi

Hermes sunucu kümesi Düğüm, her Uygulamanın her anahtarı için bir tane saklar Zaman çarkı :

  • Zaman turunda 10 tane var Zaman dilimi Her bir zaman dilimi, 3 saniyelik bir zaman periyoduna karşılık gelen geçerli anahtarın toplam erişim sürelerini kaydeder;
  • Zaman tekerleğinin 10 zaman diliminin kümülatif kaydı, mevcut zamandan 30 saniye ilerideki mevcut anahtarın zaman penceresi içindeki erişimlerin toplam sayısı anlamına gelir;

4-3-2. Haritalama görevi

Hermes sunucu kümesi Düğüm, her Uygulama için her 3 saniyede bir Haritalama görevi Düğümdeki "önbellek eşleme iş parçacığı havuzu" tarafından yürütülür. Haritalama görevi İçerik aşağıdaki gibidir:

  • Mevcut Uygulama için, Haritadan < appName, Harita < uniqueKey, popülerlik > > AppName'e karşılık gelen Harita Haritasını çıkarın < uniqueKey, popülerlik > >
  • Haritayı Geç < uniqueKey, popülerlik > > Giriş yapın, her anahtar için ısısını çıkarın ve içinde saklayın Zaman çarkı İlgili zaman diliminde;

4-4. Isı toplama

İkinci adım olan "Sıcak Sürgülü Pencere" tamamlandıktan sonra, Haritalama görevi Mevcut Uygulama için "ısı toplama" çalışmasına devam edin:

  • Uygulamanın tuşlarını geçin ve Zaman çarkı Algılama süresini elde etmek için ısı özetlenir (yani, 30 saniyelik bir pencerede toplam ısı) Sürgülü pencerenin toplam ısısı
  • Niyet < anahtar, sürgülü pencerenin toplam ısısı > Redis depolama hizmetinde sıralı bir koleksiyonda depolanır, yani Isı toplama sonuçları

4-5. Sıcak nokta tespiti

  • İlk birkaç adımda, 3 saniyede bir bir Zamanlar Haritalama görevi Yürütme, her Uygulama için mevcut anın bir kopyasını oluşturur Isı toplama sonuçları
  • Hermes sunucu kümesi Her Uygulama için, yalnızca en son Isı toplama sonuçları Sıcaklık eşiğine ulaşan TopN'nin anahtar listesini çıkarın ve tespit edilen Kısayol tuşu listesi

TMC sıcak nokta keşfinin genel süreci aşağıdaki gibidir:

4-6. Özelliklerin Özeti

4-6-1. Gerçek zamanlı

Hermes-SDK Rsyslog + kafka'ya dayalı gerçek zamanlı raporlama anahtar erişim olayı . Haritalama görevi "Isı kayan pencere" + "ısı toplama" işini tamamlamak için 3 saniyelik bir döngü, Hotspot erişim sahnesi Yazışma göründüğünde 3 saniyeye kadar tespit edilebilir Kısayol tuşu .

4-6-2. Doğruluk

anahtarı Isı toplama sonuçları Mevcut ve son erişim dağılımını nispeten doğru bir şekilde yansıtan "zaman tekerleğine dayalı kayan pencereden" toplanır.

4-6-3. Ölçeklenebilirlik

Hermes sunucu kümesi Düğümler durumsuzdur ve düğüm sayısı, Kafka'daki bölümlerin sayısına göre yatay olarak ölçeklenebilir.

"Isı kayan pencere" + "ısı toplama" süreci, uygulamaların sayısına ve tek bir düğüm içindeki çok iş parçacıklı genişletmeye bağlıdır.

Beş, TMC gerçek savaş etkisi

5-1. Hızlı el tüccarlarının belirli bir ürün pazarlama faaliyeti

Youzan tüccarları, Kuaishou canlı yayın platformu üzerinden belirli bir ürün için faaliyetlerde bulunurlar, bu da ürünün kısa sürede yoğunlaşarak erişim noktaları oluşturmasına neden olur.Etkinlik sırasında TMC tarafından kaydedilen gerçek sıcak nokta ziyareti etki verileri aşağıdaki gibidir:

5-1-1. Bir temel uygulamanın önbellek isteği isabet oranı eğrisi

* Yukarıdaki şekildeki mavi çizgi, uygulama kümesinin önbelleğe erişmek için get () yöntemini kaç kez çağırdığını gösterir * Yukarıdaki şekilde bulunan yeşil çizgi, önbellek alma işleminin TMC yerel önbelleğine kaç kez çarptığını gösterir.

* Yukarıdaki resim, yerel önbellek isabet oranı eğrisidir

Olay sırasında önbellek isteklerinin ve yerel önbellek isabetlerinin miktarının önemli ölçüde arttığı ve yerel önbellek isabet oranının yaklaşık% 80'e ulaştığı görülebilir (yani, uygulama kümesindeki önbellek sorgu isteklerinin% 80'i TMC yerel önbelleği tarafından yakalanır).

5-1-2. Hotspot önbelleğinin uygulama erişimi üzerindeki hızlandırma etkisi

* Yukarıdaki resim, uygulama arayüzünün QPS eğrisidir

* Yukarıdaki resim, uygulama arayüzünün RT eğrisidir

Olay sırasında uygulama arayüzünün talep miktarının önemli ölçüde arttığı, ancak TMC yerel önbelleğinin etkisiyle uygulama arayüzünün RT'sinin azaldığı görülebilmektedir.

5-2. Double Eleven sırasında TMC etkisinin kısmi uygulaması

5-2-1. Emtia alanının temel uygulama etkileri

5-2-2. Aktif alanın temel uygulama etkileri

Altı, TMC işlevi görünümü

Youzan'da TMC şu anda emtia merkezleri, lojistik merkezleri, envanter merkezleri, pazarlama faaliyetleri, kullanıcı merkezleri ve ağ geçidi mesajları gibi çok sayıda temel uygulama modülü için hizmetler sunmuştur ve sonraki uygulamalara da erişilmektedir.

TMC, "sıcak nokta algılama" + "yerel önbellek" temel yeteneklerini sağlarken, uygulama hizmetleri için esnek yapılandırma seçenekleri de sağlar. Uygulama hizmetleri, "sıcak nokta eşiği", "kısayol tuşu algılama numarası", "sıcak nokta" da gerçek iş koşullarıyla birleştirilebilir "Kara ve beyaz liste" boyutu, daha iyi kullanım etkisi elde etmek için serbestçe yapılandırılabilir.

Dinamik proxy Mock dubbo hizmetine dayalı uygulama şeması
önceki
Prometheus-spring-boot-starter yönetimi istisna bildirimi mesajı hatırlatıcısı
Sonraki
Genel jar, dinamik konfigürasyon ve bileşen düzenlemesine dayalı üye görev merkezi sistemi tasarımı
api izleme sistemi - apimonitor
Bir dahaki sefere öldürüldüğümde, serialVersionUID'yi gelişigüzel değiştirmeye cesaret edemeyeceğim
Düşük kodlu hızlı geliştirme platformu JEPaaS
Tam bağlantı izleme: çözüme genel bakış ve karşılaştırma | gerçekten kuru
hanbo-push dağıtılmış mesaj push, IM servisi
Ali Great God, mikro hizmet mimarisindeki API ağ geçidi uygulamasını paylaşıyor
mallcloud-platform, springboot bulutuna dayalı bir alışveriş merkezi projesidir
MyBatis bu 9 tasarım modelini içerir, kaç tanesini biliyorsunuz?
Hurricane Sheep Knife Ashe için standart hale geldi, Polar Ranger Genting'e hükmediyor
Çift sunucu beş güçlü en iyi tek envanter: Nuoshou Jianji güçlü bir şekilde hakim
Her şeye gücü yeten kan emici teknoloji silahı ana akım haline geldi ve ejderha kızın dul eşi bir kaplan gibi
To Top