Eureka的REST API及API扩展

  • 内容
  • 评论
  • 相关

本节我们讲解了一些经常用到的配置信息及 Eureka 的 REST API,通过 API 可以做一些扩展。

Eureka REST API

Eureka 作为注册中心,其本质是存储了每个客户端的注册信息,Ribbon 在转发的时候会获取注册中心的服务列表,然后根据对应的路由规则来选择一个服务给 Feign 来进行调用。如果我们不是 Spring Cloud 技术选型,也想用 Eureka,可以吗?完全可以。

如果不是 Spring Cloud 技术栈,笔者推荐用 Zookeeper,这样会方便些,当然用 Eureka 也是可以的,这样的话就会涉及如何注册信息、如何获取注册信息等操作。其实 Eureka 也考虑到了这点,提供了很多 REST 接口来给我们调用。

我们举一个比较有用的案例来说明,比如对 Nginx 动态进行 upstream 的配置。

在架构变成微服务之后,微服务是没有依赖的,可以独立部署,端口也可以随机分配,反正会注册到注册中心里面,调用方也无须关心提供方的 IP 和 Port,这些都可以从注册中心拿到。

但是有一个问题:API 网关的部署能这样吗?API 网关大部分会用 Nginx 作为负载,那么 Nginx 就必须知道 API 网关有哪几个节点,这样网关服务就不能随便启动了,需要固定。

当然网关是不会经常变动的,也不会经常发布,这样其实也没什么大问题,唯一不好的就是不能自动扩容了。

其实利用 Eureka 提供的 API 我们可以获取某个服务的实例信息,也就是说我们可以根据 Eureka 中的数据来动态配置 Nginx 的 upstream。

这样就可以做到网关的自动部署和扩容了。网上也有很多的方案,结合 Lua 脚本来做,或者自己写 Sheel 脚本都可以。

下面举例说明如何获取 Eureka 中注册的信息。具体的接口信息请查看官方文档“https://github.com/Netflix/eureka/wiki/Eureka-REST-operations“。

获取某个服务的注册信息,可以直接 GET 请求:http://localhost:8761/eureka/apps/eureka-client-user-service。其中,eureka-client-user-service 是应用名称,也就是 spring.application.name。

在浏览器中,数据的显示格式默认是 XML 格式的,如图 1 所示。

Eureka中的服务信息数据
图 1  Eureka 中的服务信息数据

本文标题:Eureka的REST API及API扩展

本文地址:https://www.hosteonscn.com/6620.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注