微服务如何发现?

我已经用SpringCloud中的Euraka搭建了2个服务端集群

可以在首页看到集群信息

然后有几个客户端 可以正常运行

在首页的application中也显示已经注册了

但是客户端如何通过服务端去发现(调用)真正的服务地址?

这一步怎么做?

阅读 2.3k
2 个回答

Euraka Client 通过 Euraka Server 提供的 HTTP 接口做服务注册和服务发现的。

具体可以看这个文档:https://github.com/Netflix/eu...

例如

  • POST /eureka/v2/apps/appID 接口功能是 Register new application instance,即服务注册,服务注册的时候会带上自己的地址和端口号信息,Euraka Server 会保存下来
  • GET /eureka/v2/apps & GET /eureka/v2/apps/appID 这些接口可以获取到每个服务的地址和端口号,即服务发现

拿到了服务的地址和端口号列表,就可以通过 Ribbon 做客户端负载均衡了。

  1. 各个服务实例启动时会向服务发现中心注册自己(包括自己的 hostname 或是 ip);
  2. 服务 A 想调用 B 时会向服务发现中心拉取 B 的可用实例列表(有些会在本地有缓存),这些列表里就有这些实例的 hostname 或是 ip ;
  3. Ribbon 从 B 的可用实例列表选择一个作为负载均衡的结果。

也就是说如果你想,你可以自己拿到实例列表然后 random 一个去用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题