示例eureka服务器;html
@SpringBootApplication @EnableEurekaServer public class Application {java
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(true).run(args);
}
复制代码
} 服务器具备一个带有UI的主页,而且根据/eureka/*下的正常Eureka功能的HTTP API端点。web
Eureka背景阅读:看助焊剂电容和谷歌小组讨论。spring
提示 因为Gradle的依赖关系解决规则和父母的bom功能缺少,只要依靠spring-cloud-starter-eureka-server就可能致使应用程序启动失败。要解决这个问题,必须添加Spring Boot Gradle插件,而且必须导入Spring云启动器父母bom:后端
的build.gradle缓存
buildscript { dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.5.RELEASE") } }服务器
apply plugin: "spring-boot"app
dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:Brixton.RELEASE" } } 高可用性,区域和地区maven
Eureka服务器没有后端存储,可是注册表中的服务实例都必须发送心跳以保持其注册更新(所以能够在内存中完成)。客户端还具备eureka注册的内存缓存(所以,他们没必要为注册表提供每一个服务请求)。spring-boot
默认状况下,每一个Eureka服务器也是一个Eureka客户端,而且须要(至少一个)服务URL来定位对等体。若是您不提供该服务将运行和工做,但它将淋浴您的日志与大量的噪音没法注册对等体。
关于区域和区域的客户端Ribbon支持的详细信息,请参见下文。
独立模式
只要存在某种监视器或弹性运行时间(例如Cloud Foundry),两个高速缓存(客户机和服务器)和心跳的组合使独立的Eureka服务器对故障具备至关的弹性。在独立模式下,您可能更喜欢关闭客户端行为,所以不会继续尝试而且没法访问其对等体。例:
application.yml(Standalone Eureka Server)
server: port: 8761
eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://{server.port}/eureka/ 请注意,serviceUrl指向与本地实例相同的主机。
同行意识
经过运行多个实例并请求他们相互注册,可使Eureka更具弹性和可用性。事实上,这是默认的行为,因此你须要作的只是为对方添加一个有效的serviceUrl,例如
application.yml(Two Peer Aware Eureka服务器)
spring: profiles: peer1 eureka: instance: hostname: peer1 client: serviceUrl: defaultZone: http://peer2/eureka/
spring: profiles: peer2 eureka: instance: hostname: peer2 client: serviceUrl: defaultZone: http://peer1/eureka/ 在这个例子中,咱们有一个YAML文件,能够经过在不一样的Spring配置文件中运行,在2台主机(peer1和peer2)上运行相同的服务器。您可使用此配置来测试单个主机上的对等体感知(经过操做/etc/hosts来解析主机名,在生产中没有太多价值)。事实上,若是您在一台知道本身的主机名的机器上运行(默认状况下使用java.net.InetAddress查找),则不须要eureka.instance.hostname。
您能够向系统添加多个对等体,只要它们至少一个边缘彼此链接,则它们将在它们之间同步注册。若是对等体在物理上分离(在数据中心内或多个数据中心之间),则系统原则上能够分裂脑型故障。
喜欢IP地址
在某些状况下,Eureka优先发布服务的IP地址而不是主机名。将eureka.instance.preferIpAddress设置为true,而且当应用程序向eureka注册时,它将使用其IP地址而不是其主机名。