13_ANPLoadBalancing.py 985 B

1234567891011121314151617181920212223242526272829303132333435
  1. from hello_agents.protocols import ANPDiscovery, register_service
  2. import random
  3. # 创建服务发现中心
  4. discovery = ANPDiscovery()
  5. # 注册多个相同类型的服务
  6. for i in range(5):
  7. register_service(
  8. discovery=discovery,
  9. service_id=f"api_server_{i}",
  10. service_name=f"API服务器{i}",
  11. service_type="api",
  12. capabilities=["rest_api"],
  13. endpoint=f"http://api{i}:8000",
  14. metadata={"load": random.uniform(0.1, 0.9)}
  15. )
  16. # 负载均衡函数
  17. def get_best_server():
  18. """选择负载最低的服务器"""
  19. servers = discovery.discover_services(service_type="api")
  20. if not servers:
  21. return None
  22. best = min(servers, key=lambda s: s.metadata.get("load", 1.0))
  23. return best
  24. # 模拟请求分配
  25. for i in range(10):
  26. server = get_best_server()
  27. print(f"请求 {i+1} -> {server.service_name} (负载: {server.metadata['load']:.2f})")
  28. # 更新负载(模拟)
  29. server.metadata["load"] += 0.1