节点在线、应用在线、配置在线使用令牌查询
大石头 authored at 2021-12-16 19:49:30
5.56 KiB
Stardust
# PHP SDK 实现总结 ## 概述 本次更新为星尘(Stardust)项目增加了完整的 PHP SDK 支持,使 PHP 应用能够接入星尘的 APM 监控和配置中心功能。 ## 实现内容 ### 1. 核心 SDK 文件 #### StardustTracer.php (APM 监控) - **StardustSpan 类**:追踪片段,记录单个操作的性能数据 - 自动生成唯一 ID、追踪 ID - 支持父子关系(嵌套追踪) - 支持设置标签和错误信息 - **StardustSpanBuilder 类**:片段聚合器 - 聚合同一操作的多个片段 - 统计总数、错误数、耗时等指标 - 支持正常样本和错误样本分别采集 - **StardustTracer 类**:追踪器主类 - 登录认证(App/Login) - 心跳保活(App/Ping) - 创建追踪片段 - 批量上报数据(支持 JSON 和 GZIP 压缩) - 自动应用服务器返回的配置(采样率、排除规则等) - 支持自动关闭函数和手动上报两种模式 #### StardustConfig.php (配置中心) - **StardustConfig 类**:配置中心客户端 - 登录认证 - 获取所有配置(GetAll) - 获取单个配置项(get) - 版本管理和变更检测 - 支持作用域(dev/test/prod) - 支持配置热更新检查 ### 2. 示例代码 #### apm_basic.php - 基本埋点示例 - 错误处理示例 - 嵌套追踪示例 - 批量操作示例 #### config_basic.php - 配置拉取示例 - 单个配置项获取示例 - 配置版本检查示例 - 配置热更新轮询示例 #### laravel_middleware.php - Laravel 框架集成示例 - 中间件方式接入 - 自动追踪所有 HTTP 请求 #### swoole_server.php - Swoole 常驻进程集成示例 - 定时上报和心跳保活 - HTTP 服务器集成 #### verify.php - SDK 验证测试脚本 - 检查类和方法是否正确加载 - 验证基本功能是否正常 - 检查 PHP 版本和必需扩展 ### 3. 文档 #### SDK/PHP/README.md 详细的 SDK 使用文档,包含: - 功能特性介绍 - 快速开始指南 - 核心类说明 - 使用场景(PHP-FPM、Laravel、Swoole) - 高级特性(嵌套追踪、错误处理、自定义标签) - 性能优化建议 - 故障排查指南 #### Doc/SDK/stardust-sdk-php.md 更新已有文档: - 添加功能特性说明 - 添加配置中心使用示例 - 添加核心类简介 - 添加使用场景说明 - 引用完整文档和示例 #### Readme.MD 更新主 README: - 添加"多语言 SDK 支持"章节 - 展示 PHP SDK 快速开始示例 - 列出所有支持的语言 SDK ## 技术特点 ### 1. 零依赖 - 仅依赖 PHP 内置的 cURL 和 JSON 扩展 - 无需安装第三方包 - 部署简单,即拿即用 ### 2. 轻量级 - 核心代码约 500 行 - 内存占用小 - 性能开销低 ### 3. 易于使用 - 简洁的 API 设计 - 几行代码即可完成接入 - 丰富的示例代码 ### 4. 功能完整 - 支持 APM 监控(性能追踪、错误监控、调用链) - 支持配置中心(配置拉取、版本管理、热更新) - 支持嵌套追踪 - 支持 GZIP 压缩 - 支持自动令牌刷新 ### 5. 适配多种场景 - PHP-FPM / Apache mod_php(请求-响应模式) - Laravel / Symfony 等框架(中间件集成) - Swoole / Workerman(常驻进程模式) ## 测试结果 ### 语法检查 - ✅ StardustTracer.php - 无语法错误 - ✅ StardustConfig.php - 无语法错误 - ✅ 所有示例文件 - 无语法错误 ### 功能验证 运行 verify.php 测试脚本,所有测试通过: - ✅ 类加载测试 - ✅ 实例创建测试 - ✅ 方法存在性测试 - ✅ Span 创建和完成测试 - ✅ SpanBuilder 聚合测试 - ✅ PHP 版本检查(8.3.6) - ✅ 必需扩展检查 ## 文件统计 ``` SDK/PHP/ ├── src/ │ ├── StardustTracer.php (519 行) │ └── StardustConfig.php (274 行) ├── examples/ │ ├── apm_basic.php (84 行) │ ├── config_basic.php (93 行) │ ├── laravel_middleware.php (81 行) │ ├── swoole_server.php (94 行) │ └── verify.php (157 行) └── README.md (426 行) 总计:约 1835 行(包括注释和空行) ``` ## API 兼容性 SDK 实现完全符合星尘服务器的 API 规范: - `/App/Login` - 登录认证 - `/App/Ping` - 心跳保活 - `/Trace/Report` - 上报追踪数据(JSON) - `/Trace/ReportRaw` - 上报追踪数据(GZIP) - `/Config/GetAll` - 获取配置 ## 使用示例 ### 最简单的 APM 接入 ```php require_once 'SDK/PHP/src/StardustTracer.php'; $tracer = new StardustTracer('http://star.example.com:6600', 'MyApp', 'secret'); $tracer->login(); $span = $tracer->newSpan('处理订单'); // ... 业务逻辑 $span->finish(); // 自动上报(register_shutdown_function) ``` ### 最简单的配置中心接入 ```php require_once 'SDK/PHP/src/StardustConfig.php'; $config = new StardustConfig('http://star.example.com:6600', 'MyApp', 'secret', 'prod'); $config->login(); $dbHost = $config->get('database.host', 'localhost'); $dbPort = $config->get('database.port', 3306); ``` ## 后续建议 1. **社区反馈**:收集 PHP 开发者的使用反馈,持续优化 2. **性能测试**:在实际生产环境中进行性能测试和优化 3. **包管理**:考虑发布到 Composer/Packagist,方便安装 4. **更多示例**:添加更多实际场景的示例(WordPress、ThinkPHP 等) 5. **单元测试**:添加 PHPUnit 单元测试覆盖 ## 相关链接 - PHP SDK 详细文档:[SDK/PHP/README.md](/NewLife/Stardust/Blob/master/SDK/PHP/../README.md) - 星尘项目主页:https://github.com/NewLifeX/Stardust - 在线演示:http://star.newlifex.com ## 贡献者 - GitHub Copilot (@copilot) - NewLife 团队 (@nnhy)