manomano-tech/correlation-ids

此包已被弃用且不再维护。作者建议使用不再维护的包。

为您的项目提供请求/进程关联功能

1.0.0 2018-09-29 09:55 UTC

This package is auto-updated.

Last update: 2022-07-18 14:20:08 UTC


README

📢 注意:此存储库不再维护。

关联标识符

目的:为您的项目提供请求/进程关联功能。

此库提供了一个简单的类,将包含三个关联标识符

  • 一个用于当前进程(见下面的生成器部分)
  • 一个用于调用您的应用程序的父应用程序,如果有。此值可以从HTTP头中提取或手动提供
  • 一个用于最初发起所有调用的根应用程序。此值也可以从HTTP头中提取或手动提供

换句话说,如果我们有三个应用程序A、B和C,A调用B,然后B调用应用程序C,在应用程序C中,我们将有

  • 来自应用程序A进程的根关联ID
  • 来自应用程序B进程的父关联ID
  • 当前关联ID,它是应用程序C中当前进程的标识

一张小图胜过千言万语,以下是这样一种可能的情况

+-------+  current: 3b5263fa-1644-4750-8f11-aaf61e58cd9e
| App A |  parent: NULL
+---+---+  root: NULL
    |
    |
    v
+-------+  current: 3fc044d9-90fa-4b50-b6d9-3423f567155f
| App B |  parent: 3b5263fa-1644-4750-8f11-aaf61e58cd9e
+---+---+  root: 3b5263fa-1644-4750-8f11-aaf61e58cd9e
    |
    |
    v
+-------+  current: 6a051d24-aa5b-4c57-bcb4-bbbb7eda1c16
| App C |  parent: 3fc044d9-90fa-4b50-b6d9-3423f567155f
+-------+  root: 3b5263fa-1644-4750-8f11-aaf61e58cd9e

用例

  1. 您有多个应用程序相互调用,并且想要跟踪哪个应用程序调用哪个。
  2. 您的应用程序生成日志,并且您想了解哪些日志来自同一个进程。

安装

composer require manomano-tech/correlation-ids

生成器

生成器用于为当前运行的应用程序生成唯一的关联ID。

此库提供了一个默认生成器(见 RamseyUuidGenerator),但您可以通过实现 UniqueIdGeneratorInterface 创建自己的生成器。

注意:要使用 RamseyUuidGenerator 生成器,您需要安装 ramsey/uuid 包。

使用方法

您有两种选择

  1. 从HTTP头中提取关联标识符
  2. 手动指定父和根关联标识符

从HTTP头中提取关联标识符

use ManomanoTech\CorrelationId\Factory\HeaderCorrelationIdContainerFactory;
use ManomanoTech\CorrelationId\Generator\RamseyUuidGenerator;
use ManomanoTech\CorrelationId\CorrelationEntryName;

// We specify which generator will be responsible for generating the
// identification of the current process
$generator = new RamseyUuidGenerator();

// We define what are the http header names to look for
$correlationEntryNames = new CorrelationEntryName(
    'Current-Correlation-id',
    'Parent-Correlation-id',
    'Root-Correlation-id'
);

$factory = new HeaderCorrelationIdContainerFactory(
    $generator,
    $correlationEntryNames
);
$correlationIdContainer = $factory->create(getallheaders());

手动指定父和根关联标识符

use ManomanoTech\CorrelationId\Factory\CorrelationIdContainerFactory;
use ManomanoTech\CorrelationId\Generator\RamseyUuidGenerator;
use ManomanoTech\CorrelationId\CorrelationEntryName;

// We specify which generator will be responsible for generating the
// identification of the current process
$generator = new RamseyUuidGenerator();

$factory = new CorrelationIdContainerFactory($generator);
$correlationIdContainer = $factory->create(
    '3fc044d9-90fa-4b50-b6d9-3423f567155f',
    '3b5263fa-1644-4750-8f11-aaf61e58cd9e'
);

注意:父和根关联ID可能为null