Lien complet de suivi: Aperçu du programme et comparaison

fond 0 des questions

Avec la popularité de l'architecture micro-services, Services se divise sur les différentes dimensions Une demande souvent besoin d'impliquer plusieurs services. applications Internet construites sur un autre ensemble de modules logiciels Ces modules logiciels, Il peut y avoir un développement d'une équipe différente, peut utiliser différents langages de programmation, il est possible tissu en milliers de serveurs à travers plusieurs centres de données différents . Il faut donc une aide pour comprendre le comportement du système, des outils d'analyse des problèmes de performance, de sorte cas d'échec de localiser rapidement les problèmes de détermination.

composante de surveillance de lien complet se pose dans ce contexte du problème. Le plus célèbre est des documents publics Google Dapper Google mentionnés. Vous voulez comprendre le comportement du système distribué dans ce contexte, il est nécessaire de surveiller les applications à travers différentes actions associées entre différents serveurs .

Par conséquent, Système complexe d'architecture micro-services, l'extrémité avant presque chaque demande formera un lien d'appel de service distribué complexe . Vous pouvez demander une chaîne d'appel complet comme indiqué ci-dessous:

Ainsi, dans l'échelle de l'entreprise augmente, et le nombre croissant de services et de fréquents changements de circonstances, face à un lien d'appel complexe apportera une série de questions:

  • Comment trouver rapidement le problème?

  • Comment déterminer la portée de l'échec?

  • Comment trier le service et le caractère raisonnable de la confiance dépend?

  • Comment analyser le lien en temps réel les problèmes de performance et de la planification des capacités?

  • En même temps, nous sommes préoccupés par les indicateurs de performance pour chaque appel au cours du traitement de la demande Tels que: Throughput (TPS), le temps de réponse et les dossiers d'erreur.

  • Throughput , Le débit en temps réel des composants respectifs topologie calculée, plate-forme, selon un dispositif physique.

  • Temps de réponse Y compris le temps de réponse et le temps de réponse à chaque appel et d'autres services dans son ensemble.

  • journal des erreurs Retour unité statistique basée sur un nombre anormal d'heures de service.

  • le suivi des performances de lien complet Voir les indicateurs de la dimension à la dimension locale Sera appliquée sur toutes les informations de performance chaîne d'appel expression concentrée, il peut facilement mesurer la performance globale et locale, et facile à trouver la source du défaut produit, ce qui réduit considérablement le temps de dépannage sur la production.

    Avec l'outil de suivi complet de lien, nous avons pu réaliser:

  • Demande de suivi des liens, la localisation rapide des défauts : Vous pouvez combiner les journaux d'affaires en appelant la chaîne localiser rapidement le message d'erreur.

  • visualisation : Les étapes consommateurs, analyse des performances.

  • optimisation dépendante : Chaque lien appel la disponibilité, le cardage et l'optimisation des dépendances de service.

  • l'analyse des données, lien d'optimisation : Vous pouvez obtenir le chemin de comportement de l'utilisateur, analyse groupée utilisé dans de nombreux scénarios d'entreprise.

  • 1 objectifs et exigences

    Comme mentionné ci-dessus, nous sélectionnons la composante surveillance lien complet qui cible l'exigent? Google Dapper a également mentionné, sont résumés comme suit:

  • coût de performance sonde

    APM affectent les composants du service devraient faire assez peu. appel de service Buried lui-même apportera une perte de performance, qui ont besoin d'appeler le traçage à faible perte, mais aussi par la configuration réelle du mode de fréquence d'échantillonnage, sélectionnez la partie de la demande d'analyser le chemin de la requête . Dans un service hautement optimisé, même un peu de perte sera très facile à détecter, et peut forcer l'équipe de déploiement du système de suivi des services en ligne a dû fermer.

  • Code invasifs

    Qui est aussi un volet commercial, il devrait être peu ou pas d'intrusion d'intrusion que d'autres systèmes d'entreprise, le fardeau transparent pour les consommateurs, réduire les développeurs .

    Pour les programmeurs ne demande pas besoin de savoir qu'il ya une telle chose comme système de suivi. Si vous voulez un système de suivi prenne effet, il est nécessaire de compter sur les développeurs d'applications prendre l'initiative de coopérer, le système de suivi est trop fragile, souvent en raison du système de suivi de négligence ou d'un bogue utilisé dans les implants causent les problèmes de code d'application, ce n'est pas ce système de suivi pour répondre à la demande de « déploiement omniprésent ».

  • évolutivité

    Un système de suivi bon appel doit prendre en charge le déploiement distribué, une bonne évolutivité. Plus soutenir le meilleur des composants de cours . Ou fournir plug-in API de développement pratique, pour certains il n'y a pas de suivi des composants, les développeurs d'applications peuvent également développer leurs propres moyens.

  • analyse des données

    L'analyse des données pour être rapide, l'analyse multidimensionnelle de la possible . Système de suivi peut fournir des informations de retour assez rapide, vous pouvez faire une réponse rapide à une situation anormale dans un environnement de production. Une analyse complète, afin d'éviter le développement secondaire .

  • 2 modules de fonction

    plein système général de contrôle des liens, peut être divisé en quatre blocs fonctionnels:

  • Et le journal de production Buried

    Enterré à-dire l'information à jour de contexte de noeud dans le système peut être divisé en Client Buried, serveur Buried, et le client et côté serveur type à deux voies Buried . Buried journal de temps de démarrage contient généralement le traceId suivant, spanId, appel, type de protocole, ip de l'appelant et le port, les demandes de nom de service, appelez le temps, le résultat de l'appel, des informations d'exception, etc., et peut être réservé pour le champ étendu pour l'étape suivante pour se préparer à l'expansion;

    Pas la cause de la performance peut Valeur A n'a pas été vérifiée, mais elle aura une incidence sur la performance des choses, il est difficile de promouvoir l'entreprise!

    Parce que le journal d'écriture, d'affaires QPS plus, l'impact des performances plus sévères. Résolus par échantillonnage et le journal asynchrone .

  • journaux de collecte et stocke

    Le support principal distribué programme de collecte de journal, tout en augmentant MQ comme une mémoire tampon;

  • Il y a une machine sur chaque deamon  Do collecte des journaux, des processus d'affaires sa propre trace envoyé au démon, démon d'envoyer une collection Trace;

  • Multi-niveaux collecteur pub / sous architecture similaire, l'équilibrage de charge;

  • Les données de polymérisation Analyse en temps réel et le stockage hors-ligne ;

  • analyse hors-ligne  Nous devons être agrégés avec une chaîne de journal d'appels en même temps;

  • Analyse statistique et lien d'appel de données, et l'actualité

    Analyse d'appels de suivi de la chaîne : Le même TraceID de Span collectées, triées par temps est la ligne de temps. La pile d'appel est ensemble à cordes ParentID .

    Jeter une exception ou un délai d'attente, impression TraceID dans le journal. requête TraceID en utilisant la chaîne d'appel, le problème de positionnement.

    mesure à charge :

    analyse hors-ligne : Appuyez résumé TraceID, par Span ID et appel ParentID rétablir les relations, lien forme d'analyse.

    Analyse en temps réel : Analyse directe d'un journal unique, pas un résumé, la restructuration. Obtenez le QPS actuel, retard.

  • forte dépendance : Échec de l'appel directement à interrompre le flux principal

  • très dépendante Un lien pour appeler une forte probabilité d'une personne à charge

  • souvent compter : Appeler le même nombre de fois un lien plus confiance

  • Support Show et décision

  • 3 Google Dapper

    3.1 Span

    L'unité de base du travail , Un appel de liaison (qui peut être pas RPC, DB restriction particulière comme) pour créer une période, il est identifié par un ID 64 bits, uuid plus pratique, il existe d'autres données de portée telles que les informations de description, horodatage, Key- des paires de valeurs des informations de balise (annotation), la parent_id analogue, dans lequel la durée peut représenter un identifiant de source de liaison parent d'appel.

    La figure illustre la portée est en quelque sorte dans un grand processus de suivi. Les noms de portée enregistré dapper, et chaque ID de portée et l'ID de parent, de reconstruire la relation entre la durée dans un autre processus de suivi . Si la durée est pas un ID parent est appelé durée de racine. Tous durée sont accrochés sur une piste particulière, partager aussi un identifiant de piste .

    Structure de données Span :

    de type Span struct {TraceID int64 // utilisé pour identifier un ID de chaîne Nom identifiant la demande complète int64 // L'appel en cours span_id ParentID int64 // appel haut span_id du service parent_id de service supérieure est nulle Annotation Annotation // pour marque de timbre copier le code de débogage bool}

    3,2 Trace

    SIMILAR Span ensemble structure d'arbre Représentant une piste complète, commence par une requête au serveur, le serveur renvoie une fin de la réponse, du temps piste appel rpc à chaque fois il y a un trace_id d'identification unique. Par exemple: un grand stockage de données distribuées, vous exécutez une trace sur votre première demande de la composition.

    Chaque note de couleur une durée marquée, un lien est identifié de manière unique par TraceId informations de requête identifiant Span initiée. Le noeud de l'arbre est l'unité de base de la structure entière, et chaque noeud est à son tour une référence à la durée . durée représente la connexion entre le noeud et sa durée parent une relation directe. Alors que la durée dans le fichier journal représente tout simplement le début et la durée de l'heure de fin, leur structure d'arbre entier est relativement indépendante.

    3.3 Annotation

    Annotation, la demande d'enregistrement d'une information liée à la manifestation particulière (par exemple le temps), il y aura une pluralité de durée d'annotation décrit annotations . composent habituellement de quatre notes des informations:

    (1) cs : Démarrer client, représente client envoie une demande (2) sr : Recevoir le serveur, représente le serveur reçoit la demande (3) ss : Serveur Envoyer, représente le serveur de traitement de finition, et envoie les résultats au client (4) cr : Reçu client, représenter le client au serveur pour obtenir des informations de retour

    structure de données d'annotation :

    Annotation de type struct {Horodatage Int64 Valeur chaîne Durée Endpoint Host int32} copier le code

    3.4 Exemple d'appels

  • Exemple demande d'appel

  • Quand un utilisateur lance une demande, il atteint d'abord le service d'extrémité avant A, le service B, puis C, respectivement service d'appel RPC;

  • B répond à la fonction transformée A, le service demandé, mais le C et D après le service et le E d'interaction de service et sont ensuite retournés à l'extrémité arrière du service A, et finalement de A à répondre à l'utilisateur demande au service;

  • processus de suivi des appels

  • Demande arrive générer une TraceID mondiale Par TraceID peut appeler toute la série de la chaîne, un TraceID au nom d'une demande.

  • En plus de l'extérieur TraceID, Aussi, vous devez enregistrement des appels pour la relation parent-enfant SpanID . Chaque service enregistre id parent et span id, Ils peuvent organiser des relations parent-enfant par une chaîne complète d'appel .

  • Sans un ID parent de la durée pour devenir durée de la racine, on peut voir que l'entrée de la chaîne d'appel.

  • Tous ces éléments sont disponibles ID unique au monde entier de 64 bits;

  • Le processus d'appel entier chaque demande doit passer par TraceID et SpanID .

  • Les temps pour chaque demande de service et d'accompagnement TraceID accompagnant SpanID comme enregistrement identifiant parent et l'SpanID auto-généré également enregistré.

  • Pour voir l'appel complet est un particulier Tant que tous les appels enregistrés identifier selon TraceID, puis de l'ID parent et les organisations à travers l'appel span id relations parent-enfant .

  • travail de base de chaîne d'appel

  • génération de données de la chaîne d'appel , Toutes les demandes ont été enterrées point entier du processus d'appel et la sortie du journal.

  • la collecte de données de la chaîne d'appel Chaque journal des applications d'acquisition de données.

  • stockage appel de données de la chaîne et de recherche Les données recueillies sont stockées, en raison de la quantité de données de journal est généralement importante, non seulement pour son stockage, doivent également être en mesure de fournir requête rapide.

  • calcul d'index, le stockage et la recherche Le calcul des données de journal des indicateurs collectés, le résultat de calcul est enregistré.

  • Fonction d'alarme Il offre une variété de la fonction d'avertissement de seuil.

  • architecture de déploiement globale

  • Par AGENT génère une chaîne de journal des appels.

  • En recueillant logstash journal à kafka.

  • kafka responsable de la fourniture des données à la consommation en aval.

  • résultat du calcul de la convergence des tempêtes et l'indice de chute es.

  • l'extraction des données de trace et la tempête tombe es, ce qui est des requêtes plus complexes afin de fournir . Par exemple, la chaîne d'appels de requête par la dimension temporelle, vous pouvez rapidement vérifier tout le traceID assorti, Selon ces traceID vont vérifier les données sur le jeûne Hbase .

  • Les données brutes logstash kafka HBase à tirer dans. HBase de RowKey est traceID, selon requête traceID est rapide .

  • Agent de déploiement non invasive

    AGENT MANDATAIRE par le déploiement non-invasive, la mesure du rendement et la séparation complète de la logique de service, toute méthode permet de mesurer le temps d'exécution de toute classe, de cette façon augmente considérablement l'efficacité de la collecte et de réduire les coûts opérationnels. Selon la durée de service divisé en deux catégories AGENT :

  • Services dans AGENT De cette façon, le niveau d'appel de la méthode des données d'information de service internes recueillies par les mécanismes d'agent de Java, telles que l'invocation de la méthode de temps, le Sénat, le ginseng et d'autres informations.

  • AGENT Croix service Cette situation doit intégrer le cadre RPC apporte un soutien sans faille pour les plug-ins. Spécification en fournissant des trames de données standard pour accueillir RPC personnalisé:

    (1) support Dubbo, (2) support de repos, et (3) prise en charge RPC personnalisé; code dupliqué
  • surveillance avantages chaîne d'appels

  • Une connaissance précise du déploiement des applications de ligne de production ;

  • D'un point de performance d'appeler l'ensemble de la chaîne de processus, Identification de la chaîne d'appel clé et l'optimisation ;

  • Fournir la traçabilité des données de performance , Quantifier la valeur commerciale du service d'exploitation et de maintenance informatique;

  • Trouvez rapidement les problèmes de performance de code Pour aider les développeurs à optimiser la continuité de code;

  • Aider les développeurs à tests boîte blanche , Réduire la stabilité du système en ligne;

  • 4 Comparaison des plans

    La plupart de surveillance complète-Link modèles théoriques sur le marché sont Google Dapper tirage sur papier, ce document se concentre sur les trois éléments suivants APM:

  • Zipkin : Par Twitter Open Company Source, distribué système de suivi open source pour les services de collecte régulière de données, afin de résoudre le problème de retard microarchitecture-service, y compris: la collecte de données, le stockage, la recherche et du spectacle.

  • Pinpoint : Outil d'APM pour une grande échelle des systèmes distribués en Java, open source distribué par le composant de suivi coréen.

  • Skywalking : APM composants internes en cours, est un suivi, des systèmes d'alarme et d'analyse de l'opération commerciale du cluster d'applications JAVA distribuée.

  • Ces trois programmes de surveillance tout-Link doivent comparer les éléments extraits :

  • Performance de la sonde

    Le principal effet de l'agent pour un débit de service, le processeur et la mémoire. taille micro et de la dynamique des services rend le coût de la collecte des données grandement améliorée.

  • l'évolutivité du collecteur

    Il peut évoluer horizontalement pour soutenir les clusters de serveurs à grande échelle.

  • Une analyse complète de la liaison de données d'appel

    Fournir une visibilité au niveau du code pour localiser facilement le point de défaillance et les goulets d'étranglement.

  • Pour le développement d'un transparent, facile à changer

    Ajouter de nouvelles fonctionnalités sans avoir à modifier le code, facilement activé ou désactivé.

  • L'application de la topologie de la chaîne d'appel complète

    Détection automatique de la topologie de l'application, pour vous aider à déterminer l'architecture d'application

  • 4,1 sonde de performance

    Plus préoccupé par la performance de la sonde, après tout, le positionnement de l'outil APM ou, si un lien est établi pour permettre le suivi, un résultat direct du débit inférieur à la moitié, ce qui est inacceptable. Pour skywalking, Zipkin, la pression ponctuelle a été mesurée, et comparée à la situation de référence (sonde non utilisée).

    A choisi un commun des applications à base de printemps, il comprend Spring Boot, Spring MVC, Redis client, mysql. Contrôle de l'application, chacun de la trace, la sonde 5 extractions portée (1 Tomcat, 1 SpringMVC, deux Jedis, 1 Mysql). Voici les applications de base et de test skywalkingtest presque.

    Trois simulé utilisateurs simultanés: 500,750,1000. Jmeter test d'usage, chaque fil 30 transmet des demandes de régler les 10ms de temps de réflexion. Une fréquence d'échantillonnage utilisée, à savoir 100%, et le côté de production peuvent être différents. localiser avec précision la fréquence d'échantillonnage par défaut de 20, à savoir 50%, en réglant le profil de l'agent à 100%. Zipkin défaut est 1. Ensemble, un total de 12 espèces. Le regard de tableau récapitulatif ci-dessous:

    Comme on peut le voir dans le tableau, les trois lien suivi de l'Assemblée, Skywalking impact minimal de la sonde sur le débit débit, Zipkin centré. l'impact sur le débit Pinpoint sonde évident , À 500 utilisateurs simultanés, le débit des services de tests ont diminué à 774 de 1385, un impact significatif. Et puis regardez sous l'influence de la CPU et de la mémoire, des mesures de pression effectuées dans la mémoire du serveur et de l'impact du processeur sont similaires à 10%.

    Extensibilité de 4,2 collecteur

    évolutivité de collecteur, ce qui permet à l'échelle horizontalement pour soutenir les clusters de serveurs à grande échelle.

  • Zipkin

    Développement Zipkin-Server (en fait, hors de la boîte qui est fourni avec l'emballage), Zipkin-agent et Zipkin-serveur via http ou mq communiquer, http communication aurait une incidence sur l'accès normal il est donc recommandée sur la base mq de communication asynchrone , Zipkin-Server pour la consommation en vous inscrivant à un sujet spécifique. Bien sûr, cela peut être étendu, Plus Zipkin-serveur d'informations de surveillance d'instance dans une consommation asynchrone mq .

  • skywalking

    skywalking les supports de collecteur deux options de déploiement: Autonome et mode cluster. La communication entre le collecteur et l'agent utilisé GRPC .

  • Pinpoint

    De même, les clusters Pinpoint et soutient également le déploiement autonome. épargne agent ponctuelle par trame de communication, transmet des informations de liaison au collecteur .

  • 4.3 Analyse complète de liaison de données d'appel

    Une analyse complète de la liaison de données d'appel, en offrant une visibilité du niveau de code afin de localiser facilement le point de défaillance et les goulets d'étranglement.

  • Zipkin

    lien Zipkin surveillance granularité relativement moins fine Sur la carte vous pouvez voir la spécifique de la chaîne d'appel au niveau de l'interface, des informations d'appel ne participe pas.

  • skywalking

    skywalking soutient également 20+ middleware, des cadres, des bibliothèques Tels que: Dubbo grand public, Okhttp, ainsi que DB et middleware de messagerie. La figure skywalking analyse des liens d'appel est la passerelle d'interception relativement simple service d'appel d'utilisateur, En raison du soutien de nombreux middleware, afin skywalking complète d'analyse de lien d'appel que certains Zipkin .

  • Pinpoint

    APM devrait identifier ces trois composants, Les plupart des composants d'analyse de données complète . Fournir une visibilité au niveau du code pour localiser facilement le point de défaillance et les goulets d'étranglement sur la carte, vous pouvez voir l'exécution de l'instruction SQL, il a été enregistré. Il peut également les règles d'alarme configure, la personne en charge de chaque ensemble correspondant à l'application, selon les règles d'alarme configurées, cadre middleware pris en charge et aussi plus complète.

  • 4.4 pour le développement d'un transparent, facile à changer

    Pour le développement de la transparence, facile de passer, ajouter de nouvelles fonctionnalités sans avoir à modifier le code, facilement activé ou désactivé. Nous attendons la fonction avant ne peut pas modifier le code du travail et que vous voulez obtenir la visibilité du niveau de code.

    Pour cela, Zipkin utiliser pour fournir des fonctions de suivi des transactions distribuées la bibliothèque modifiée et son propre conteneur (Finagle) . Cependant, il nécessite des modifications de code nécessaires. skywalking et sont basées sur l'amélioration bytecode Pinpoint manière, les développeurs ne ont pas besoin de modifier le code, et peuvent recueillir des données plus précises parce qu'il ya plus d'informations sur le bytecode .

    4.5 topologie de la chaîne d'appel complète d'application

    Détection automatique de la topologie de l'application, pour vous aider à déterminer l'architecture de l'application.

    Les trois photos ci-dessus ont été exposées leurs composants APM de la topologie d'appel, peut atteindre une topologie de chaîne d'appel d'application complète. Relativement parlant, Pinpoint interface affiche les plus riches, spécifiques à l'appel du nom DB, topologie Zipkin service limité entre le service .

    4.6 Pinpoint comparer et affiner Zipkin

    4.6.1 Pinpoint les différences Zipkin

  • Pinpoint est une solution complète de surveillance des performances : Il est de la sonde, le collecteur, le système stocke l'interface Web complète et similaires; Le Zipkin se concentrer uniquement sur les services de collecte et de stockage Bien qu'il existe une interface utilisateur, mais sa fonction est tout à fait différente et Pinpoint. Au lieu de cela, l'interface de requête fournit Zipkin , L'interface utilisateur plus puissants et les capacités d'intégration du système, peuvent être obtenus interface basée sur le développement secondaire.

  • l'interface officielle Zipkin a cadre basé sur Finagle (langage Scala) , Alors que d'autres cadres interfacer par des contributions communautaires, soutient actuellement Java, Scala, Noeud, Go, Python, Ruby et C # et d'autres langues de développement grand public et des cadres, mais Pinpoint n'est actuellement fournie par la sonde Java Agent officiel , L'autre à la demande de soutien communautaire (voir # 1759 et # 1760).

  • sonde Pinpoint pourvu d'un agent Java, mis en uvre et les données recueillies par l'interception de l'appel de manière bytecode, Le code peut être vraiment non-invasive, il suffit d'ajouter quelques paramètres lors du démarrage du serveur, vous pouvez compléter le déploiement de la sonde ; Bien Zipkin l'interface Java Brave fournit des API de base des opérations, ou si vous avez besoin d'intégrer le cadre du projet, puis, Vous devez ajouter manuellement un profil ou ajouter du code .

  • stockage back-end basé sur Pinpoint HBase, Cassandra et basé Zipkin .

  • 4.6.2 similitude avec Pinpoint Zipkin

    Pinpoint et Zipkin que le papier reposent sur Google Dapper, donc les fondements théoriques de la même. Les deux sont divisés en plusieurs appels de service Span relation en cascade, la relation entre les appels en cascade dans SpanId et ParentSpanId, puis toutes dernière chaîne d'appel Span passe par une convergence de trace, rapporté au service collecteur de fin de collecte et de stockage .

    Même à ce stade, le concept adopté par Pinpoint pas tout à fait conforme à ce document. Par exemple, il utilise TransactionId traceid à la place, alors que le vrai traceid est une structure qui contient TransactionId, SpanId et ParentSpanId . Dans ce qui suit Pinpoint et Span SpanEvent a ajouté une structure utilisée pour enregistrer un appel Span des détails internes (tels que l'appel de méthode particulière, etc.), ainsi piste par défaut Pinpoint enregistrement plus de données que Zipkin . Mais la théorie ne se limite pas la taille des particules Span, de sorte qu'un appel de service peut être une période, puis les appels de méthode pour chaque service peut aussi être un Span, donc, En fait, Brave peut également suivre le niveau d'appel de méthode, mais la mise en uvre spécifique n'a pas le faire .

    4.6.3 bytecode vs appels API

    Pinpoint a réalisé la sonde Java Agent à base bytecode et Zipkin le cadre Brave ne fournit que l'API niveau de l'application, mais à la réflexion, le problème est loin d'être simple. l'injection de bytecode est une solution simple et brute, en théorie, indépendamment des appels de méthode, d'interception peut être obtenue par injection de code, qui ne peut pas être atteint, non seulement pour atteindre . Mais Brave est différent, API niveau d'application qui fournit un cadre pour les facteurs sous-jacents ont également besoin de soutien afin d'obtenir l'interception . Par exemple, le pilote JDBC MySQL, il est prévu une méthode injection intercepteur, et donc seulement besoin de mettre en uvre l'interface StatementInterceptor et configurer la chaîne de connexion, vous pouvez la mise en uvre très simple de l'interception pertinente, tandis que d'autre part, la version basse MongoDB conducteur ressort données MongoDB ou la réalisation d'une telle interface ne veulent pas réaliser la fonction aux requêtes d'interception, il est plus difficile.

    Donc, à ce stade, Brave est erronée, peu importe la façon dont bytecode difficile, mais au moins il est possible de réaliser, mais il n'y a aucun moyen de démarrer le Brave possible, mais si vous pouvez injecter, dans quelle mesure peut injecter plus en fonction de l'API-cadre au lieu de leurs propres capacités.

    4.6.4 difficulté et le coût

    Après un simple, lire le code Pinpoint et Brave widget peut être trouvé difficile à obtenir à la fois une grande différence. Dans les deux cas l'absence de toute documentation pour soutenir le développement de la prémisse, Brave facile à utiliser que Pinpoint . Brave petite quantité de code, les fonctions de base sont concentrés dans ce module courageux-core, un développeur de niveau intermédiaire, vous pouvez lire son contenu en un jour, et peut avoir une compréhension très claire de la structure de l'API.

    paquet de code Pinpoint est également très bon, en particulier pour le paquet supérieur de l'API bytecode est très bon, mais il faut encore du personnel de lire bytecode combien ont une certaine compréhension, bien qu'il utilisé pour injecter du code et l'API de base pas beaucoup, mais à une compréhension approfondie du code pertinent agent ont probablement profondeur, comme il est difficile de comprendre un coup d'oeil la différence entre addInterceptor et addScopedInterceptor, qui est situé à deux méthodes liées au type d'agent.

    Parce que l'injection Brave repose sur le cadre sous-jacent fournit une interface pertinente, et n'a donc pas besoin d'avoir une compréhension globale du cadre, il peut être injecté juste besoin de savoir où vous êtes, quelles données peuvent être acquises quand il a injecté . Comme dans l'exemple ci-dessus, on n'a pas besoin de connaître le pilote JDBC MySQL est comment atteindre peut faire pour intercepter les capacités SQL. Mais PinPoint pas, parce que épinglent tout code peut être injecté en tout lieu, ce qui oblige les promoteurs à base de code inject nécessaire pour obtenir une compréhension approfondie de MySQL en regardant et réaliser Http client plug-in divin bien sûr, cela montre aussi la capacité à Pinpoint peut être très puissant en effet d'une autre dimension, et sa mise en uvre par défaut des plug-ins ont fait beaucoup d'interception à grain très fin.

    En l'absence de cadre sous-jacent pour l'API ouverte, en fait, Brave ne fait pas tout à fait rien, on peut prendre le mode AOP, le cas échéant pour intercepter peut être injecté dans un code et des applications apparemment spécifié AOP beaucoup plus simple que bytecode .

    Ces coûts directement liés à la réalisation d'un moniteur, dans la documentation technique officielle de Pinpoint, compte tenu des données de référence. Si l'intégration d'un système, les coûts de développement 100 est prise Pinpoint intégré dans le système, le coût de ce plug-in est 0, mais courageux, plug-ins coût de développement seulement 20, 10 et coûts d'intégration . De ce point, on peut voir que le coût des données de référence est donnée officielle 5: 1. Mais le fonctionnaire a également souligné que, s'il y a 10 systèmes doivent être intégrés, le coût total est de 10 * 10 + 20 = 120, il est au-delà du frais de développement Pinpoint 100, et plus la nécessité d'intégrer les services, l'écart sera.

    4.6.5 polyvalence et évolutivité

    De toute évidence, ce qui est totalement désavantagés sur Pinpoint, développé à partir de l'interface d'intégration communautaire peut être vu.

    interface de données Pinpoint manque de documentation, moins mais aussi la norme (voir le fil du forum de discussion), vous devrez peut-être lire beaucoup de code pour réaliser sa propre sonde (tel que le nud ou PHP). Et l'équipe d'envisager d'utiliser la performance Thrift que les normes de protocole de transmission de données, en termes de HTTP et JSON par rapport à beaucoup plus difficile.

    4.6.6 Soutien communautaire

    Il est également inutile de dire, Zipkin développé par Twitter, il peut être considéré comme une équipe d'étoiles, alors que l'équipe de Naver est juste une petite équipe inconnue (de la discussion # 1759 peut être vu). Bien que ce projet ne risque pas de disparaître ou la mise à jour d'arrêt à court terme, mais après tout, que le premier est plus à l'aise avec eux. Et il n'y a pas plus développé plug-in communauté, Laissez l'équipe Pinpoint à ne compter que sur ses propres forces, il est difficile d'achever l'intégration de nombreux cadres, et leur objectif actuel est encore sur les performances et la stabilité de levage .

    4.6.7 Autres

    Pinpoint au début pour atteindre un problème de performance, la fin arrière du site www.naver.com certains services et traite plus de 20 milliards de requêtes par jour, donc ils choisiront Thrift longueur variable binaire format de codage, et utiliser UDP comme le transport lien, également possible d'utiliser une référence de dictionnaire de données lors de la transmission constante, au lieu de transmettre directement une transmission numérique comme une chaîne. Ces optimisations augmente également la complexité du système comprennent: la difficulté d'utiliser l'interface Thrift, la transmission de données UDP question et des constantes de données des problèmes d'enregistrement du dictionnaire et ainsi de suite.

    En revanche, Zipkin utilisant des interfaces familières Restful, plus JSON, les coûts presque pas d'apprentissage et des difficultés d'intégration, il suffit de savoir que la structure de transmission de données, vous pouvez facilement un nouveau cadre pour développer l'interface appropriée.

    autres Pinpoint manque la possibilité de demander des échantillons, apparemment dans un grand environnement de production de flux, tous les dossiers ne sont pas susceptibles à toutes les demandes, ce qui exige que les échantillons de demande afin de déterminer quel genre de demandes que je dois enregistrer . Pinpoint et Brave soutiennent le pourcentage d'échantillonnage, qui est, quel est le pourcentage de demandes seront enregistrées. Cependant, en plus de Brave fournit également l'interface Sampler, vous pouvez personnaliser la stratégie d'échantillonnage , Surtout quand un test A / B, cette fonction est très significative.

    4.6.8 résumé

    Dans les objectifs à court terme, Pinpoint n'ont un avantage énorme: Pas besoin d'apporter des modifications au code du projet peut être déployé des sondes, des données de suivi à grains fins au niveau d'appel de méthode, interface utilisateur puissante et presque cadre plus complet pour soutenir Java . Mais à long terme, l'apprentissage interface de développement Pinpoint, ainsi que le coût de mise en uvre future de l'interface est différents cadres sont encore inconnus. Au contraire, Brave relativement facile à maîtriser, et les communautés Zipkin plus forte et plus susceptibles de développer des interfaces plus à l'avenir . Dans le pire des cas, on peut aussi ajouter leur propre chemin à travers l'AOP est adapté à la surveillance de notre propre code et n'a pas besoin d'introduire trop de nouvelles technologies et de nouveaux concepts. Et quand les changements d'affaires à l'avenir, si les rapports officiels Pinpoint répondent aux exigences ne disent pas, l'ajout de nouveaux rapports apportera pas de prédire la difficulté du travail et de l'effort.

    5 Tracing et la différence du moniteur

    Le moniteur peut être divisé en surveillance de suivi et de l'application du système . Le système surveille les données telles que la CPU, mémoire, réseau, du disque et de sorte que la charge globale du système, et peut affiner le spécifique de données correspondant à chaque processus. Ce type d'information peut être obtenue directement du système. Applications Surveillance des applications qui nécessitent un soutien, expose les données correspondantes . l'application QPS tels que la demande interne, le retard de traitement de demande, le numéro d'erreur de demandes traitées, la longueur de file d'attente de la file d'attente de messages, des accidents, des informations de procédé de collecte des ordures et analogues. Moniteur principal objectif est anormal, avertissement en temps opportun .

    Tracing la base et le coeur de toute la chaîne d'appel . La plupart sont liés au système métrique analyse de la chaîne d'appels pour se déplacer. Tracing principal objectif est d'analyser le système. Avant de trouver des problèmes que pour résoudre les problèmes et mieux .

    Il y a beaucoup de points communs sur le traçage et le niveau d'application pile de technologie Moniteur. Nous avons une acquisition de données, l'analyse, le stockage et la formule d'exposition. Juste différentes dimensions de la collecte de données spécifiques, l'analyse ne sont pas les mêmes.

    Auteur: piste singe

    Pig feed a commencé par New Hope Group veux d'abord faire est l'usine électronique
    Précédent
    Patta 2017 automne et en hiver nouvelles Stills avec parapluie d'impression de l'argent! rue Runaway apporte climax visuel!
    Prochain
    Jimmy Lin a combattu dans les cercles de jeu, JJ: Mon ordinateur plus cher que votre voiture
    « La curiosité des enfants ours poussera pour les femmes enceintes car problème de l'éducation familiale de l'avortement à la fin qui a mal tourné?
    carte de fleur mobile application ouverte! Cependant, pour passer du temps geler le montant de 576 yuans chant
    R1 expérience des noix pour commencer: Il peut être l'histoire la plus équilibrée Smartisan phare
    Hanami est le temps | aux États-Unis se sont tournés une mer du centre-ville de fleur de canola
    Syncd- open source des outils de déploiement automatisé
    CIKM AnalytiCup 2018 programme de championnat est sorti, ils ont construit un modèle pour voir l'astuce
    RNG trois hommes maquillage calme, le jeu juste valeur gardes couleur TFBOYS, les amis: Je n'avais pas noir
    · La version Golf de Kerry de la Cruze Tour & châssis Comparaison
    un bon moment peut vraiment vous faire passer une bonne humeur? Mettre 2017 nouvel hiver sera probablement en mesure de savoir!
    le conseil scolaire primaire et secondaire décalant la croissance des revenus sur cinq ans sextuplé!
    Eh bien une journée ensoleillée de spectacle d'été de printemps pour voir Libération Monument