Spring Cloud Eureka是什么?
Spring Cloud Eureka是Spring Cloud提供的服务治理组件,用来实现各个微服务实例的自动化注册和发现。
Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,基于Netflix Eureka做了二次封装,并且增加了Spring Boot风格的自动化配置,我们只需要通过简单引入依赖和注解配置就能让Spring Boot构建的微服务和Eureka服务治理体系进行整合。
除了Spring Cloud Eureka,Spring Cloud Consul、Spring Cloud Zookeeper也是Spring Cloud提供的服务注册和发现的组件。
为什么选择Eureka?
Eureka 完全开源,并且经历了Netflix公司生产环境的考验,三年迭代,功能和性能都很稳定。是Spring Cloud首选推荐的服务注册和发现组件。与Spring Cloud的Ribbon、Hystrix、Zuul等组件无缝对接。
Spring Cloud Eureka 功能说明:
Spring Cloud Eureka包含服务端和客户端两部分,下面是Spring Cloud Eureka的架构图:
Application Service:服务提供者
Application Client:服务消费者
Make Remote Call:接口调用
us-east-1c,us-east-1d,us-east-1e是zone,都属于us-east-1这个region
Eureka包含两个组件,Eureka Server和Eureka Client
Eureka Server,Eureka服务端,提供服务发现的能力,当微服务启动的时候,就向Eureka Server注册自己的信息(ip,端口,微服务名称等),Eureka Server会存储这些信息。
Eureka Client,Eureka客户端,java的,用于简化和Eureka Server的交互。
微服务启动后,会周期性的向Eureka Server发送心跳以续约自己的租期。(默认30秒)
如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将会注销该实例(默认90秒)
默认情况下,Eureka Server同时也是Eureka Client,多个Eureka Server实例之间通过复制的方式来实现服务注册表中数据的同步。
Eureka Client会缓存服务注册表中的信息,这种方式有一定的优势,微服务无需每次请求都查询Eureka Server,从而降低了Eureka Server的压力及时Eureka Server所有的节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者并完成调用。
如何使用Spring Cloud Eureka?
下面实际操作一下,创建两个微服务。先创建一个服务提供者,再创建一个服务消费者,服务消费者先通过普通的方式调用服务提供者,再通过Spring Eureka 调用服务提供者。
先创建一个microservice-provider项目,作为服务提供者。
pom文件中引入Spring Boot的依赖:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.3.RELEASE</version>
</parent>
再添加Spring MVC的支持:
<dependency>