Skip to content

feat: 新增 FastD 微服务集成包 - #1

Merged
JanHuang merged 3 commits into
masterfrom
feat/initial-integrations
Oct 29, 2026
Merged

JanHuang merged 3 commits into
masterfrom
feat/initial-integrations

Conversation

@JanHuang

@JanHuang JanHuang commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

变更概述

新增 fastd/integrations 微服务集成包,提供 etcd 服务发现、配置源、服务客户端、W3C 链路传播和客户端治理能力。

模块

Etcd

  • EtcdClient:etcd v3 HTTP gateway 客户端
  • 支持 key/value、prefix range、lease grant/keepalive/revoke

Discovery

  • EtcdServiceRegistry:服务注册、心跳、注销
  • EtcdResolver:按服务前缀解析实例,短 TTL 缓存
  • 负载均衡:round-robin、random、weighted random

Config

  • EtcdConfigSource:把 etcd 层级 key 转换为嵌套数组

HttpClient

  • ServiceClient:使用请求 URI host 作为服务名,解析实例并替换目标地址

Tracing

  • TraceContext:W3C traceparent 生成/解析
  • TracingMiddleware:入口提取/生成 trace context
  • TraceClient:向下游注入 traceparent

Governance

  • RetryClient / RetryPolicy:仅对幂等方法重试
  • CircuitBreaker / CircuitBreakerClient:closed/open/half-open
  • InMemoryRateLimiter / RateLimitMiddleware:进程内令牌桶

ServiceProvider

IntegrationsServiceProvider 读取 config/integrations.php 并装配:

  • integrations.etcd
  • integrations.discovery.resolver
  • integrations.discovery.registry
  • integrations.http.service_client
  • integrations.config.source
  • integrations.tracing.middleware
  • integrations.governance.rate_limiter
  • integrations.governance.rate_limit_middleware
  • integrations.service_instance

matcher 存在时自动挂载 tracing 与 rate limit 中间件。

设计边界

  • FastD 只负责集成、适配和装配
  • etcd、OpenTelemetry、限流/熔断算法仍由外部实现
  • 不实现 etcd watch、RPC、分布式事务、全局限流存储
  • 服务发现采用短 TTL 缓存,watch 留给独立进程或成熟客户端
  • 熔断/限流默认进程内状态

验收

PHPUnit: 21 tests, 74 assertions, OK
composer validate: valid
CI: PHP 8.4 / PHP 8.5

README 覆盖安装、FastD 配置、ServiceProvider 注册、服务注册、服务调用、配置中心、链路、重试、熔断和限流示例。

- etcd v3 HTTP gateway 客户端
- 服务注册、解析与负载均衡
- etcd 配置源
- 按服务名解析的 PSR-18 客户端
- W3C traceparent 传播
- 重试、熔断、进程内限流
- 单元测试与 CI
- IntegrationsServiceProvider 读取 config/integrations.php
- 注册 etcd、服务发现、服务客户端、配置源
- 按配置装配 tracing、retry、circuit breaker、rate limit
- 增加示例配置与 Provider 测试
- README 补充安装、配置、注册、调用、治理和限流示例
- tracing 与 rate limit 不再依赖 etcd 配置
- 补充 Provider 测试与示例配置说明
@JanHuang
JanHuang merged commit 659f0b9 into master Oct 29, 2026
2 checks passed
@JanHuang
JanHuang deleted the feat/initial-integrations branch October 29, 2026 08:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant