Eureka是Spring-Cloud的一个组件主,要用于服务注册与发现。Eureka分为Server与Client端,Server在微服务架构中主要用于定位服务,通过他我们可以实现服务的注册、发现功能并可以平滑的实现服务的负载均衡与故障转移。Client用于与Server进行交互,调用Server上的服务。
接下来我们实现一个Eureka的Server入门。
首先按照官方文档导入相关pom依赖,这个不用说了吧。
接下来进行SpringBoot的yml配置,也是从官网直接拷贝的。。
配置项代表的具体意思也已经以注释的形式写出来了。啊,还有一个问题,那就是告诉Spring启用Eureka组件,在启动类上添加@EnableEurekaServer注解。启动完成之后访问http://127.0.0.1:6868:
这样我的注册中心就已经启动起来了。我们会在控制面板看到关于注册中心的一些信息,下面其实还有一部分,这里没有截出来。从图中我们可以看到现在还没有一个服务实例在Server中。
接下来让我们写一个服务注册到server作为服务提供方。
新建一个SpringBoot项目,导入上文中pom依赖,编写服务逻辑。
这里就随便编写了一个根据商品id获取商品信息的服务接口。接下来进行yml的配置。
这个和Server端的配置很相似,具体的含义在注释中都有写。最后在启动类中添加@EnableDiscoveryClient注解,代表其为Eureka client。启动项目后,我们再次访问http://127.0.0.1:6868:
我们可以看到刚编写的微服务已经注册到注册中心了(话说暴露自己IP应该没有啥隐患吧。。。),注意红色字体的警报,他代表了Eureka启动时开启了自我保护模式(网络故障时,Server会删除注册的服务,自我保护模式是当网络故障时即一段时间内没有接收到服务方心跳也不会删除注册到Eureka的微服务),我们可以在配置文件中禁用自我保护模式。
有了注册中心,有了服务方,接下来就需要编写客户端调用我们写的微服务了。
创建过程和上面差不多,导入pom,编写yml文件。
然后编写调用之前写的item服务的方法
上面注释掉的方法是使用注册中心之前我们所使用的调用方法,下面是使用Eureka后的调用方法,在这里我们都过服务实例名获取访问地址并最终实现成功调用。啊,别忘了在启动类上加上@EnableDiscoveryClient注解。至此一个简单的微服务架构就搭建起来了。
高可用
这时我们注意到我们的注册中心只有一个实例,一旦实例挂掉,整个微服务不可用,这时就需要Eureka的高可用。Eureka的高可用很简单,只需要把eureka server当做客户端互相注册即可,具体就不贴代码了,主要就是修改一下配置文件即可。client的高可用也同理,启动多个client并注册到server中即可(当配置了Server的高可用,在配置文件中我们需要指定多个与服务端交互的地址)。