Eureka注册中心

先回顾下以前的服务拆分案例,在我们前面的案例中,图书服务需要远程调用类别服务,它采用的方式是发起一次Http请求。不过在代码中是将category-service的ip和端口硬编码在代码中,这样就会带来一系列问题:

Eureka的结构和作用

这些问题都需要利用SpringCloud中的注册中心来解决,其中最广为人知的注册中心就是Eureka,其结构如下:

回答之前的各个问题。

问题1:book-service如何得知category-service实例地址?
category-service服务实例启动后,将自己的信息注册到eureka-server(Eureka服务端)。这个叫服务注册
eureka-server保存服务名称到服务实例地址列表的映射关系
book-service根据服务名称,拉取实例地址列表。这个叫服务发现或服务拉取
问题2:book-service如何从多个category-service实例中选择具体的实例?
book-service从实例列表中利用负载均衡算法选中一个实例地址
向该实例地址发起远程调用
问题3:book-service如何得知某个category-service实例是否依然健康,是不是已经宕机?
category-service会每隔一段时间(默认30秒)向eureka-server发起请求,报告自己状态,称为心跳
当超过一定时间没有发送心跳时,eureka-server会认为微服务实例故障,将该实例从服务列表中剔除
book-service拉取服务时,就能将故障实例排除了
注意:一个微服务,既可以是服务提供者,又可以是服务消费者,因此eureka将服务注册、服务发现等功能统一封装到了eureka-client端

搭建eureka-server

首先搭建注册中心服务端:eureka-server,这必须是一个独立的微服务

创建eureka-server服务

引入eureka依赖

编写启动类

编写配置文件

启动服务

服务注册

服务发现