如何使用Netflix eureka和功能区按版本查找服务

raf*_*ian 13 java cloud netflix service-discovery

我们目前正在探索Netflix的Flux Capacitor来研究它们的微服务架构的实现.目前,我们的兴趣主要集中在服务注册和动态查找功能上.

浏览代码,示例和配置,但有些事情并不清楚; 服务版本控制.如果eureka提供发现服务,而ribbon是基于eureka的REST客户端,那么客户如何说它需要服务1.2服务fooBar?客户端在哪里存储/获取该版本号; 从像本地配置文件,抑或是通过动态地获得的archaius

Ran*_*niz 7

我在Eureka REST API 的文档中看不到任何处理服务版本的内置方式.

因此,我认为处理此问题的最佳方法是在您的服务ID中加入版本控制信息.

假设我们有4项服务:用户,统计,登录oAuth.

我们刚刚更新了用户服务API,以更改登录服务中某些新要求所需的功能.但是,这些更改与oAuth正在使用的API不兼容,没有人有时间更新该服务.该统计服务没有使用任何的这个功能,因此它并不关心所使用的API的版本.这意味着我们需要同时运行新版本的用户服务(1.2)和旧版本(1.1).

我们可以像这样设置:

  • User 1.1服务的配置表示注册为"user-1.1" "user"
  • User 1.2服务的配置表示注册为"user-1.2" "user"
  • oAuth服务的配置表明用户服务的ID 是"user-1.1"
  • Login服务的配置说用户服务的ID 是"user-1.2"
  • 统计服务的配置表示用户服务的ID 是"用户"

这样,oAuth服务将仅与旧用户服务,具有新用户服务的登录服务以及具有任何用户服务的统计服务进行通信.

您应该能够使用Archaius将配置传播到服务器.

请注意,如果您发布的用户版本1.3引入了与Statistics服务正在使用的1.2和1.1部分不兼容的更改,您将要告诉用户 1.1和1.2服务将其自身注册为其他内容(例如"user-statistics" -safe")并告诉Statistics服务使用该ID,或告诉Statistics服务使用"user-1.1"或"user-1.2".