Eureka是Netflix开发的服务发现组件,自己是一个基于REST的服务。Spring Cloud将它集成在其子项目spring-cloud-netflix中,以实现Spring Cloud的服务发现功能。目前Eureka 项目至关活跃,代码更新至关频繁,目前最新的版本是1.9.8。Eureka 2.0也在紧锣密鼓地开发中,2.0将会带来更强的功能和更好的扩展性,可是因为尚未Release,故而不做讨论。git
本文讲解的Spring Cloud Camden SR1所使用的Eureka版本是1.4.11,仍是比较新的。同时有了Eureka 1.x的基础,将来上手Eureka 2.x也会比较容易。github
Eureka的Github:https://github.com/Netflix/Eurekaspring
Eureka的官方文档对regin、zone几乎没有说起,因为概念抽象,新手很难理解。所以,在分析Eureka原理以前,咱们先来了解一下region、zone、Eureka集群三者的关系,如图4-2。缓存
图4-2 region、zone、Eureka集群之间的关系网络
region和zone(或者Availability Zone)均是AWS的概念。在非AWS环境下,咱们能够简单地将region理解为Eureka集群,zone理解成机房。这样图4-2就很好理解了——一个Eureka集群被部署在了zone1机房和zone2机房中。架构
对region和zone感兴趣的读者可前往http://blog.csdn.net/awschina/article/details/17639191 扩展阅读。Spring Cloud中默认的region是us-east-1
。微服务
图4-3 Eureka架构图spa
图4-3是来自Eureka官方的架构图,大体描述了Eureka集群的工做过程。图中包含的组件很是多,可能比较难以理解,咱们用通俗易懂的语言解释一下:.net
由图可知,Eureka包含两个组件:Eureka Server 和 Eureka Client,它们的做用以下:code
综上,Eureka经过心跳检测、健康检查和客户端缓存等机制,提升了系统的灵活性、可伸缩性和可用性。