Mikro hizmet mimarisinin popülaritesiyle, hizmetler farklı boyutlara bölünmüştür ve bir talep genellikle birden çok hizmeti içerir. İnternet uygulamaları, farklı yazılım modülleri setleri üzerine inşa edilmiştir.Bu yazılım modülleri farklı ekipler tarafından geliştirilebilir, farklı programlama dillerinde uygulanabilir, binlerce sunucuya dağıtılabilir ve birden fazla farklı veriyi kapsayabilir. merkez. Bu nedenle, sistem davranışını anlamaya ve performans sorunlarını analiz etmeye yardımcı olabilecek bazı araçlara ihtiyaç vardır, böylece bir hata oluştuğunda sorunun hızlı bir şekilde bulunup çözülebilir.
Tam bağlantı izleme bileşeni, bu sorunun arka planı altında oluşturulmuştur. En ünlüsü, Google'ın yayınlanan makalelerinde adı geçen Google Dapper'dır. Bu bağlamda dağıtılmış bir sistemin davranışını anlamak için, farklı uygulamalar ve farklı sunucular arasındaki ilgili eylemleri izlemek gerekir.
Karmaşık bir mikro hizmet mimarisi sisteminde, hemen hemen her ön uç talebi, karmaşık bir dağıtılmış hizmet çağırma bağlantısı oluşturacaktır. Bir talebin tüm çağrı zinciri aşağıdaki şekilde gösterildiği gibi olabilir:
Bir istek eksiksiz çağrı zinciri
Daha sonra, iş ölçeğinin artması, hizmetlerin artması ve sık sık değişiklik olması durumunda, karmaşık çağrı bağlantılarının yüzü bir dizi sorunu beraberinde getirecektir:
Aynı zamanda, istek işleme sırasında her aramanın performans göstergelerine (throughput (TPS), yanıt süresi ve hata kayıtları gibi) dikkat etmemiz gerekir.
Tam bağlantı performans izleme, genel boyuttan yerel boyuta kadar çeşitli göstergeleri görüntüler ve uygulamalar genelinde tüm çağrı zincirlerinin performans bilgilerini merkezi olarak görüntüler, bu da genel ve yerel performansın ölçülmesini kolaylaştırır ve üretimde büyük ölçüde azaltılabilen arızaların kaynağını bulmayı kolaylaştırır Sorun giderme süresi.
Tam bağlantı izleme aracı ile şunları elde edebilirsiniz:
Yukarıda belirtildiği gibi, tam bağlantılı izleme bileşenleri seçimimiz için hedef gereksinimler nelerdir? Ayrıca, Google Dapper'da da şu şekilde özetlenmiştir:
Genel tam bağlantılı izleme sistemi kabaca dört işlevsel modüle ayrılabilir:
1. Noktaları gömmek ve günlükleri oluşturmak
Gömme noktası, istemci katıştırma noktası, sunucu katıştırma noktası ve istemci ile sunucunun iki yönlü katıştırma noktasına bölünebilen mevcut düğümdeki sistemin bağlam bilgisidir. Gömülü nokta günlüğü genellikle şu içeriği içerir: traceId, spanId, aramanın başlangıç zamanı, protokol türü, arayan ip ve portu, istenen hizmet adı, arama zamanı, arama sonucu, istisna bilgileri, vb. Aynı zamanda, genişletilebilir alanlar ayrılmıştır. Bir sonraki genişletmeye hazırlanın;
2. Günlükleri toplayın ve saklayın
MQ'yu arabellek olarak eklerken, temelde dağıtılmış günlük toplama çözümünü destekler;
3. Arama bağlantısı verilerini ve zamanlılığı analiz edin ve istatistiki hale getirin
Çağrı zinciri izleme analizi: Aynı TraceID'nin Aralıklarını toplayın ve zaman çizelgesi zamana göre sıralanır. Stringing ParentID çağrı yığınıdır.
Bir istisna veya zaman aşımı atın ve günlüğe TraceID yazdırın. Çağrı zincirini sorgulamak ve sorunu bulmak için TraceID'yi kullanın.
Bağımlı ölçüm:
Çevrimdışı analiz: TraceID ile özetleyin, Span ID ve ParentID aracılığıyla arama ilişkisini geri yükleyin ve bağlantı formunu analiz edin.
Gerçek zamanlı analiz: özet veya yeniden düzenleme olmadan doğrudan tek bir günlüğü analiz edin. Mevcut QPS'yi alın, gecikme.
4. Sunum ve karar desteği
3.1 Aralık
Temel çalışma birimi olan bir bağlantı çağrısı (belirli kısıtlamalar olmaksızın RPC, DB, vb. Olabilir) bir aralık oluşturur ve bunu 64 bitlik bir kimlikle tanımlar. Uuid daha kullanışlıdır. Aralıkta açıklama bilgileri ve zaman damgası gibi başka veriler vardır , Anahtar / değer çifti (Ek açıklama) etiket bilgileri, parent_id, vb., Burada parent-id, span çağrı bağlantısının kaynağını gösterebilir.
Aralık
Yukarıdaki şekil, büyük bir izleme sürecinde sürenin nasıl göründüğünü göstermektedir. Dapper, bir izleme sürecindeki farklı aralıklar arasındaki ilişkiyi yeniden yapılandırmak için aralık adını ve her bir aralığın kimliğini ve üst kimliğini kaydeder. Bir yayılma alanı bir üst kimliğe sahip değilse, buna kök aralığı denir. Tüm aralıklar belirli bir izleme ile bağlantılıdır ve ayrıca bir izleme kimliği paylaşır.
3.2 İZLEME
Benzer Ağaç yapısının yayılma kümesi , İstekten sunucuya kadar tam bir izlemeyi temsil eder, sunucu yanıtı sonuna kadar döndürür ve her bir rpc çağrısında harcanan süreyi izler Benzersiz bir trace_id vardır. Örneğin: Bir İzleme kez çalıştırdığınız dağıtılmış büyük veri depolama, sizden gelen bir talepten oluşur.
İzleme
Her rengin notu bir aralıkla işaretlenir, bir bağlantı TraceId tarafından benzersiz şekilde tanımlanır ve aralık, başlatılan istek bilgilerini tanımlar. Ağaç düğümü, tüm mimarinin temel birimidir ve her düğüm, yayılma alanına bir referanstır. . Düğümler arasındaki bağlantı, yayılma alanı ile üst aralığı arasındaki doğrudan ilişkiyi temsil eder. Aralıklar, günlük dosyasındaki aralıkların başlangıç ve bitiş zamanlarını temsil etseler de, ağaç yapısının tamamında görece bağımsızdırlar.
3.3 Ek Açıklama
Ek açıklamalar, belirli bir olayla (zaman gibi) ilgili bilgileri kaydetmek için kullanılır. Bir aralıkta birden fazla açıklama açıklaması olacaktır. Genellikle dört ek açıklama bilgisi içerir:
(1) cs : Client Start, bu, müşterinin bir istek başlattığı anlamına gelir
(2) sr : Sunucunun isteği aldığını belirten Sunucu Alma
(3) ss : Sunucu Gönderimi, sunucunun işlemi tamamladığı ve sonucu istemciye gönderdiği anlamına gelir
(4) cr İstemci Alındı; bu, istemcinin sunucu tarafından döndürülen bilgileri aldığı anlamına gelir
Piyasadaki tam bağlantı izleme teorik modellerinin çoğu, esas olarak aşağıdaki üç APM bileşenini içeren Google Dapper belgelerine dayanmaktadır:
Buna karşılık, Pinpoint'in çok büyük bir avantajı vardır: Probları dağıtmak için proje kodunda herhangi bir değişiklik yapmaya gerek yok, yöntem çağrısı düzeyine kadar ayrıntılı izleme verileri, güçlü kullanıcı arabirimi ve neredeyse kapsamlı Java çerçeve desteği .
Daha sonra daha fazla devop ve DBA içeriği paylaşacağım ve ilgilenen arkadaşlar buna dikkat edebilir ~