跳转至

服务发现指南

仓库中包含一套基于 Redis 的服务发现与 HTTP 调用工具。

核心组件

组件 位置 描述
ServiceRegistry src/by_framework/core/discovery.py 服务注册与心跳
DiscoveryClient src/by_framework/core/discovery.py 带缓存的服务发现与负载均衡
DiscoveryHttpClient src/by_framework/util/discovery_http_client.py 结合服务发现的 HTTP 重试与节点切换

ServiceRegistry

服务注册中心,负责管理服务的注册与心跳。

from by_framework.core.discovery import ServiceRegistry

registry = ServiceRegistry(redis_client=redis)
await registry.register("my-service", "http://192.168.1.100:8080")
await registry.heartbeat("my-service", "http://192.168.1.100:8080")

DiscoveryClient

带缓存的服务发现客户端:

from by_framework.core.discovery import DiscoveryClient

discovery = DiscoveryClient(redis_client=redis, cache_ttl=30)
endpoints = await discovery.discover("my-service")
# 返回可用的服务节点列表

DiscoveryHttpClient

结合服务发现的 HTTP 客户端,支持自动重试与节点切换:

from by_framework.util.discovery_http_client import DiscoveryHttpClient

http_client = DiscoveryHttpClient(
    redis_client=redis,
    service_name="api-service",
    max_retries=3
)

response = await http_client.get("/api/v1/users")
response = await http_client.post("/api/v1/users", json={"name": "test"})