manomano-tech / correlation-ids
此包已被弃用且不再维护。作者建议使用不再维护的包。
为您的项目提供请求/进程关联功能
1.0.0
2018-09-29 09:55 UTC
Requires
- php: ^7.1.3
Requires (Dev)
- php-mock/php-mock-phpunit: ^2.1
- phpunit/phpunit: ^7.3
- ramsey/uuid: ^3.8
- symfony/debug: ^4.1
- symfony/phpunit-bridge: ^4.1
Suggests
- ramsey/uuid: Ability to use UUIDs as unique identifiers
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
用例
- 您有多个应用程序相互调用,并且想要跟踪哪个应用程序调用哪个。
- 您的应用程序生成日志,并且您想了解哪些日志来自同一个进程。
安装
composer require manomano-tech/correlation-ids
生成器
生成器用于为当前运行的应用程序生成唯一的关联ID。
此库提供了一个默认生成器(见 RamseyUuidGenerator),但您可以通过实现 UniqueIdGeneratorInterface 创建自己的生成器。
注意:要使用 RamseyUuidGenerator 生成器,您需要安装 ramsey/uuid 包。
使用方法
您有两种选择
- 从HTTP头中提取关联标识符
- 手动指定父和根关联标识符
从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