Ayrıntılı hedef, işlevsel modül, Dapper ve şema karşılaştırmasında tam bağlantı izleme mimarisini açıklayın

Genel Bakış

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.

Dağıtılmış hizmet çağrısı bağlantısı

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:

  • Sorunu hızlı bir şekilde nasıl bulurum?
  • Arızanın kapsamı nasıl değerlendirilir?
  • Hizmet bağımlılığı ve bağımlılığın rasyonelliği nasıl çözülür?
  • Bağlantı performansı sorunları ve gerçek zamanlı kapasite planlaması nasıl analiz edilir?

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.

  • Verimlilik, ilgili bileşenlerin, platformların ve fiziksel cihazların gerçek zamanlı verimi, topolojiye göre hesaplanabilir.
  • Genel aramanın yanıt süresi ve her hizmetin yanıt süresi vb. Dahil olmak üzere yanıt süresi.
  • Hata kaydı, servise göre istatistiksel birim zamanda anormal zamanların sayısını döndürür.

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:

  • Bağlantı takibi isteme, hızlı arıza bulma: İş günlüğü ile birlikte çağrı zinciri aracılığıyla hata bilgilerini hızlı bir şekilde bulabilirsiniz.
  • Görselleştirme: Her aşama zaman alıcıdır ve performans analizi yapılır.
  • Bağımlılık optimizasyonu: her bir arama bağlantısının kullanılabilirliği, hizmet bağımlılıklarını ayırma ve optimizasyon.
  • Veri analizi ve bağlantı optimizasyonu: Kullanıcının davranış yolu elde edilebilir ve özet analiz birçok iş senaryosuna uygulanır.

1. Tam bağlantı izleme hedefi

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:

  • Prob performans tüketimi
  • APM bileşen hizmetlerinin etkisi yeterince küçük olmalıdır. Servis çağrısı gömme noktasının kendisi performans kaybına neden olur, bu da çağrı takibinde düşük kayıp gerektirir Uygulamada, örnekleme oranını yapılandırarak talep yolunu analiz etmek için talebin bir kısmı seçilir. . Bazı yüksek düzeyde optimize edilmiş hizmetlerde, küçük bir kayıp bile kolayca fark edilebilir ve çevrimiçi hizmetlerin dağıtım ekibini izleme sistemini kapatmaya zorlayabilir.
  • Kod müdahaleciliği
  • Diğer bir deyişle, bir iş bileşeni olarak, diğer iş sistemlerine mümkün olduğunca az müdahale olmalı veya hiç girmemeli, kullanıcılara şeffaf olmalı ve geliştiricilerin üzerindeki yükü azaltmalıdır. .
  • Uygulama programcıları için bir izleme sistemi olduğunu bilmeye gerek yoktur. Bir izleme sisteminin etkili olabilmesi için, uygulamaya güvenen geliştiriciler tarafından aktif olarak işbirliği yapılması gerekir.İzleme sistemi de çok kırılgandır.Çoğunlukla izleme sisteminde, uygulamada sorunlara neden olan hatalar veya ihmaller bulunur. İzleme sisteminin "her yerde dağıtılması" talebini karşılayın.
  • Ölçeklenebilirlik
  • Mükemmel bir çağrı izleme sistemi, dağıtılmış dağıtımı desteklemeli ve iyi bir ölçeklenebilirliğe sahip olmalıdır. Desteklenebilen bileşen sayısı ne kadar fazlaysa o kadar iyidir . Veya uygun bir eklenti geliştirme API'si sağlayın. İzlenmeyen bazı bileşenler için uygulama geliştiricileri de kendi bileşenlerini genişletebilir.
  • Veri analizi
  • Veri analizinin mümkün olduğunca çok boyutla hızlı olması gerekir . İzleme sistemi, üretim ortamındaki anormal koşullara hızla yanıt vermek için yeterince hızlı bilgi geri bildirimi sağlayabilir. Kapsamlı analiz, ikincil geliştirmeyi engelleyebilir .
  • 2. Tam bağlantı izleme fonksiyonu modülü

    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;

    • Günlük toplama için her makinede bir deamon vardır, iş süreci kendi izini daemon'a gönderir ve arka plan programı toplanan izi üst seviyeye gönderir;
    • Pub / sub mimarisine benzer çok seviyeli toplayıcı denge yükleyebilir;
    • Gerçek zamanlı analiz ve birleştirilmiş verilerin çevrimdışı depolanması;
    • Çevrimdışı analizin aynı çağrı zincirinin günlüklerini özetlemesi gerekir;

    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:

    • Güçlü bağımlılık: arama hatası, ana süreci doğrudan kesintiye uğratır
    • Yüksek bağımlılık: bir bağlantıda belirli bir bağımlılığı çağırma olasılığı yüksektir
    • Sık bağımlılık: Aynı bağımlılık tek bağlantıda daha sık çağrılır

    Ç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. Google Dapper

    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

    4. Planların karşılaştırılması

    Piyasadaki tam bağlantı izleme teorik modellerinin çoğu, esas olarak aşağıdaki üç APM bileşenini içeren Google Dapper belgelerine dayanmaktadır:

    • Zipkin : Açık kaynak, açık kaynak dağıtılmış Twitter izleme sistemi, mikro hizmet mimarisindeki gecikme sorununu çözmek için hizmet zamanlama verilerini toplamak için kullanılır; veri toplama, depolama, arama ve görüntüleme.
    • Nokta : Koreliler tarafından açık kaynaklı bir dağıtılmış izleme bileşeni olan Java ile yazılmış büyük ölçekli dağıtılmış sistemler için bir APM aracı.
    • Skywalking : Yerel olarak üretilen mükemmel APM bileşeni, JAVA dağıtılmış uygulama kümesinin iş operasyonunu izlemek, uyarmak ve analiz etmek için bir sistemdir.

    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 ~

    Pahalı, pazarlama yok, sadece Çin pırasalarını kesmek istiyorum, bu Japon devi sonunda havalı
    önceki
    Sivrisinekler bu yıl biraz panik içinde! Biri 100 şişe tuvalet suyuyla banyo yaptı
    Sonraki
    Nginx + php yürütme isteği ilkesini anlamak için bir makale-cgi, php-cgi, fastcgi, phpfpm
    Tmall 618'e başka bir açıdan bakın: Tarım ürünleri canlı yayın odasına girdiğinde ne olacak?
    E-ticaret işi Çin'e kapıldıktan sonra, Amazon ayağa kalkmak için bu numaraya güvenmek istedi
    Oracle veritabanının mevcut oturumun / sürecin oturum kimliğini nasıl elde ettiğini ayrıntılı olarak açıklayın
    Oracle veritabanı indeksinin kullanımını izlemek için pratik komut dosyası
    Oracle, SQL Server, MySQL ve PostgreSQL veritabanlarının avantaj ve dezavantajlarının detaylı analizi
    Türük neden Ali'nin kalçasını sıkıca tutuyor?
    Jingxian County: Geleneksel Kauçuk ve Plastik Ürünler Sektörü Yeşil Yeni Yol Yaratıyor
    Zhang Bo: Didi "Demir Adam" Cheng Wei "Hediye"
    MySQL veritabanı deneyi-dikey bölme ve yatay bölme nedir?
    Oracle deneyi - dört Oracle sayı yuvarlama işlevini tartışın
    Carrefour, Suning'e 4,8 milyar sattı ve batan çokuluslu şirketlerin hepsi aynı hatayı yaptı.
    To Top