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

problème de fond

Avec la popularité de l'architecture micro-services, divisions de services sur différentes dimensions, une demande ont souvent besoin d'impliquer plusieurs services. applications Internet construites sur un autre ensemble de modules logiciels, des modules logiciels, il peut être mis au point par des équipes différentes, peuvent être mises en uvre en utilisant différents langages de programmation, il est possible tissu en milliers de serveurs à travers plusieurs données différentes centre. Nous avons donc besoin d'une aide à comprendre le comportement du système, des outils d'analyse des problèmes de performance, de sorte que le cas d'échec de localiser rapidement et de résoudre les problèmes.

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 des systèmes distribués dans ce contexte, il est nécessaire de surveiller les applications à travers différentes actions associées entre différents serveurs.

Par conséquent, l'architecture micro-services dans les systèmes complexes, presque toutes les demandes de fin avant sont distribués pour former un lien d'appel de service 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 au cours du traitement des demandes de chaque appel, comme: Throughput (TPS), le temps de réponse et la journalisation des erreurs.

  • Certains topologie calculée composant correspondant, la plate-forme, le dispositif physique en fonction du débit en temps réel.
  • Temps de réponse, temps de réponse, y compris le temps de réponse global de chaque appel et de service et ainsi de suite.
  • enregistrement d'Erreurs, le rendement par unité de temps en fonction des temps d'exception de services statistiques.

performance lien complet affichage surveillance de la dimension à la dimension locale des indicateurs sera appliquée sur toutes les informations la performance chaîne d'appel expression concentrée, peut facilement mesurer la performance globale et locale, et facile à trouver la source du défaut produit, peut production considérablement raccourcir le temps de dépannage.

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 localiser rapidement les informations du journal d'erreur en appelant la chaîne de regroupement d'entreprises.
  • Visualisation: les différentes étapes du temps et de l'analyse des performances.
  • Optimisation dépendante: la disponibilité des différents aspects de l'appel, le cardage et l'optimisation des dépendances de service.
  • L'analyse des données, optimiser le lien: l'utilisateur peut obtenir le chemin de comportement, analyse groupée utilisés 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:

1. Sonde de consommation de performance

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.

2. Code invasif

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

Pour les programmeurs ne demande pas besoin de savoir qu'il ya une telle chose comme un 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 ».

3. Evolutivité

Un système de suivi bon appel doit prendre en charge le déploiement distribué, une bonne évolutivité. Plus le meilleur cours aux composants de soutien. 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.

4. Analyse des données

Analyser les données plus rapide, analyse dimensionnelle, autant que 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 générer journal 1. Buried

Enterré dans le cadre du système d'information qui est le nud actuel, il peut être divisé en points enterré client, enterré points d'extrémité de service, ainsi que le point bi-enterré client et le serveur. 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;

  • Non Cause frais généraux de performance: une valeur 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.

2. collecte et enregistre les journaux

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

  • Il y a un deamon journal pour faire de recueillir sur chaque machine, entreprise traite sa propre trace envoyé au démon, démon d'envoyer une collection Trace;
  • collecteur multicellulaires pub similaire / sous architecture, équilibrage de charge;
  • L'analyse en temps réel des données agrégées et le stockage hors ligne;
  • analyse hors-ligne doit être agrégées ensemble pour connecter une chaîne d'appel du même;

3. Analyse statistique et lien appel de données, et l'actualité

Suivi analyse de la chaîne d'appel: le même TraceID de Span, triées par temps est la ligne de temps. ParentID consiste à enchaîner la pile d'appel.

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 dépendante:

  • La forte dépendance: un appel direct n'a pas réussi à interrompre le flux principal
  • dépendant fortement: un lien pour appeler une forte probabilité d'une personne à charge
  • Souvent, il repose sur: un lien avec un appel à compter le plus souvent

Analyse hors ligne: résumé de TraceID, par Span ID et appel ParentID restaurer les relations, sous forme d'analyse des liens.

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

4. spectacle et aide à la décision

3 Google Dapper

3.1 Span

L'unité de base de 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, l'horodatage , l'information d'étiquette (Annotation) de paires de valeurs de clé, l'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 différente au cours d'une piste. 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 suivi.

Structure de données Span :

Span de type struct { TraceID int64 // utilisé pour identifier un identifiant de demande complète chaîne nom ID int64 // L'appel en cours span_id ParentID // int64 appel haut span_id du service parent_id de service supérieur est nul Annotation Annotation // pour le timbre marquage bool débogage }

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 :

Type struct {Annotation timestamp int64 valeur chaîne Point final hôte durée int32 }

3.4 Exemple d'appels

1. La demande d'appel exemplaire

  • 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;
  • 2. Processus de suivi des appels

    Appelez le suivi de l'ensemble du processus:

    • Demande arrive générer une TraceID globale, à travers toute la série de TraceID peut appeler la chaîne, un TraceID au nom d'une demande.
    • En plus de TraceID, mais aussi vous devez les relations entre parents et enfants des appels record. Chaque service enregistre id parent et span id, ils peuvent organiser les 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 record id parent, et l'SpanID auto-généré également enregistré.
    • Pour afficher un temps d'appel complet pour détecter des appels tant que dossiers selon TraceID, l'appel entier de la relation parent-enfant par ID parent et organisation span id.

  • 3. Appelez le travail de base de la chaîne
  • 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 du calcul est enregistré.
  • Fonction d'alarme Il offre une variété de la fonction d'avertissement de seuil.
  • 4. L'architecture globale de déploiement
  • 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 vérifier rapidement toutes les traceID correspondant, 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 .
  • 5. 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 :

  • a. au sein de l'agent de service De cette façon, le niveau d'appel de méthode données d'information de service interne 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.
  • b. 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 d'appui; (3) personnalisé support RPC; 6. Appel avantages surveillance de la chaîne
  • 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 suivi complet-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, il est suivi, systèmes d'alerte et d'analyse pour clusters application distribuée opération commerciale JAVA.

    Ceux-ci doivent comparer les éléments extraits trois programmes de surveillance tout lien:

  • 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, 2 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 modules de surveillance liaison, avec un impact minimal sur le débit sonde skywalking, centrée débit Zipkin. l'impact sur le débit Pinpoint sonde plus évidente à 500 utilisateurs simultanés, le débit est réduit de services de dépistage 1385-774, un grand impact. 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-serveur (en fait, hors de la boîte qui est fourni avec le package), Zipkin-agent et Zipkin-serveur via http ou mq communiquer, communication http aurait une incidence sur l'accès normal, il est donc recommandé communication asynchrone basée mq, Zipkin -Server pour la consommation en vous inscrivant à un sujet spécifique. Bien sûr, cela peut être étendu, plusieurs informations de surveillance de l'instance Zipkin-serveur consommation asynchrone de mq.
  • skywalking
  • skywalking le collecteur prend en charge deux options de déploiement: autonome et le modèle de cluster. communication de l'agent entre le collecteur et l'utilisation GRPC.
  • Pinpoint
  • De même, les clusters et Pinpoint prend également en charge le déploiement autonome. épargne agent ponctuelle par trame de communication, transmet un lien vers des informations 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 également middleware, supports 20+ cadres, des bibliothèques, telles que: Dubbo grand public, Okhttp, ainsi que DB et middleware de messagerie. La figure skywalking analyse des liens d'appel est relativement simple service d'appel d'utilisateur de la passerelle d'interception, en raison du soutien de nombreux middleware, skywalking si l'analyse des liens d'appel plus Zipkin complet.
  • 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 changer, 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 la bibliothèque modifiée et sa propre fonction conteneur (Finagle) pour fournir le suivi des transactions distribuées. 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 peut recueillir des messages de données plus précises, car il y a plus de codes d'octets.

    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, les écrans d'interface Pinpoint plus riche, spécifique à l'appel du nom DB, topologie Zipkin un service limité entre le service.

    4.6 Pinpoint comparer et affiner Zipkin

    4.6.1 Pinpoint les différences Zipkin

  • Pinpoint est une solution de surveillance complète de la performance: il y a de la sonde, collecteur, système de stockage à une interface Web complète et ainsi de suite, et Zipkin se concentrer uniquement sur le service de collecte et de stockage, bien qu'il existe une interface utilisateur, mais sa fonction est tout à fait différente avec Pinpoint . Au lieu de cela, il est prévu Zipkin l'interface de requête, l'interface utilisateur plus puissant et des capacités d'intégration de système, basé sur le développement secondaire de l'interface.
  • l'interface officielle Zipkin a fondé le cadre Finagle (langage Scala), tandis que l'autre interface cadre par les contributions de la communauté, prend actuellement en charge Java, Scala, Noeud, Go, Python, Ruby et C # et d'autres langues de développement grand public et des cadres, mais Pinpoint actuellement seulement sondes Java Agent fournies par le fonctionnaire, l'autre à la demande de soutien communautaire (voir # 1759 et # 1760).
  • Pinpoint fournit sonde Java Agent par bytecode pour réaliser des appels d'interception et la collecte de données, le code peut être vraiment non-invasive, seulement besoin d'ajouter des paramètres lors du démarrage du serveur, vous pouvez compléter le déploiement de la sonde; le Zipkin Java Interface Brave, à condition que l'API des opérations de base, ou si vous avez besoin d'intégrer le cadre du projet, vous devez ajouter manuellement le fichier de configuration ou ajouter du code.
  • stockage back-end à base Pinpoint HBase et Zipkin basé sur Cassandra.
  • 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 mettre fin à collecteur pour la collecte et le stockage.

    Même à ce stade, le concept adopté par Pinpoint pas tout à fait conforme à ce document. Par exemple, il utilise TransactionId pour remplacer TraceId, alors que le vrai TraceId est une structure qui contient TransactionId, SpanId et ParentSpanId. Dans ce qui suit Pinpoint et Span SpanEvent ajouté une structure utilisée pour enregistrer un appel Span des détails internes (tels que l'appel de méthode particulière, etc.), de sorte enregistrement de données par défaut Pinpoint plus de trace Zipkin.

    Mais la théorie n'est pas la taille des particules limitée 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 aussi être attribuée au niveau d'appel de méthode, mais la mise en uvre spécifique et Je ne le faisais pas.

    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 au moyen d'injection de code, qui est impossible à réaliser, ne pas atteindre. Mais Brave est différent, API niveau d'application qui fournit un cadre pour les facteurs sous-jacents ont également besoin de soutien pour réaliser 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 à l'appui au 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 de l'agent de code correspondant probablement la profondeur, comme il est difficile de comprendre un coup d'oeil la différence entre addInterceptor et addScopedInterceptor, qui est situé à environ deux méthodes de type 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 suffit de savoir où injecter en mesure, quelles données peuvent être acquises au moment de l'implantation sur elle. 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é de 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 spécifique et des applications apparemment 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 les 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, cela est tout à fait un désavantage sur Pinpoint, développé à partir de l'interface d'intégration communautaire peut être vu.

    interface de données Pinpoint manque de documentation, mais aussi moins standard (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 communautaire, 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 l'amélioration des performances et de la stabilité.

    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.

    De plus 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 quelle est ma demande à enregistrer. Pinpoint et Brave soutiennent le pourcentage d'échantillonnage, qui est, quel est le pourcentage de demandes seront enregistrées. Mais en plus Brave fournit également l'interface Sampler, vous pouvez personnaliser la stratégie d'échantillonnage, en particulier quand un test A / B de temps, cette fonction est très significative.

    4.6.8 résumé

    Dans les objectifs à court terme, Pinpoint n'ont un énorme avantage: pas besoin d'apporter des modifications au code du projet peuvent être des sondes déployées, les données de suivi à grains fins au niveau d'appel de méthode, puissante interface utilisateur et le cadre presque 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, il est relativement facile de saisir les braves 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
    différence Tracing et moniteur

    Le moniteur peut être divisé en surveillance de suivi et d'application. 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 obtenu directement à partir du système. Applications Surveillance des applications qui nécessitent un soutien, expose les données appropriées.

    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. Surveiller l'objectif principal est d'alarme inhabituelle et 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 ensuite 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.

    Code faible pour JEPaaS la plate-forme de développement rapide
    Précédent
    hanbo-push poussée de message distribué, service de messagerie instantanée
    Prochain
    Ali Grand Dieu partage API d'application Service Gateway dans la micro-architecture
    projet mallcloud-plateforme basée sur un centre commercial construit nuage springboot
    Mybatis comprend les neuf modèles de conception, vous connaissez un peu?
    ouragan couteau de mouton Dominer Genting Eich norme Ranger Polar
    Double servir cinq forte épée à une main inventaire forte promesse Ji dominent
    gun vampire tout-puissant dans le courant dominant de la science et de la technologie veuve du Dragon encore plus puissant
    9,18 héros complet costume national gagnant deux TOP5 AP dominent le terrain de jeu
    9,18 version de la robe Top cinq armes à feu mâle électrocutions sur le terrain de jeu Retour du Roi
    9.18 robe, cinq oscillations sauvages sur les armes Pa héros système maître
    éléments polaires de la redevance de cinq arc en ciel de nuit populaire Guide de Icebird
    Augmentation de la dernière activité restante saisir une la semaine dernière augmentation du bien-être
    abîme brosse DNF des limites après que le groupe ne peut pas lutter contre l'obtention du diplôme