yr.datasystem.service_discovery.ServiceDiscovery¶
- class yr.datasystem.service_discovery.ServiceDiscovery(options)¶
通过 ETCD 获取可用 Worker。
- 参数:
options (ServiceDiscoveryOptions) - 服务发现配置。
- 输出:
ServiceDiscovery
方法:
init()初始化服务发现实例。
select_worker()按配置的亲和性策略选择一个 Worker,返回
(status, worker_ip, worker_port, is_same_node)。select_same_node_worker()选择一个同节点 Worker,返回
(status, worker_ip, worker_port)。get_all_workers()获取所有可用 Worker,返回
(status, same_host_addrs, other_addrs)。get_affinity_policy()获取当前 Worker 选择策略。
has_host_affinity()检查当前配置是否具备可生效的节点亲和性。
示例:
from yr.datasystem import KVClient, ServiceAffinityPolicy, ServiceDiscovery, ServiceDiscoveryOptions options = ServiceDiscoveryOptions() options.etcd_address = "127.0.0.1:2379" options.cluster_name = "cluster-a" options.host_id_env_name = "HOST_ID" options.affinity_policy = ServiceAffinityPolicy.PREFERRED_SAME_NODE service_discovery = ServiceDiscovery(options) service_discovery.init() client = KVClient(service_discovery=service_discovery, enable_cross_node_connection=True) client.init()