Eureka是Netflix开源的一个RESTful服务,主要用于服务的注册发现。Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。
(详细可参考http://blog.csdn.net/jek123456/article/details/74171055)
注:以下内容使用 spring boot 中已经搭建好的项目
一、 依赖声明
1.服务端
<dependency> <groupId>org.springframework.cloudgroupId> <artifactId>spring-cloud-starter-eureka-serverartifactId> dependency>2.客户端
<dependency> <groupId>org.springframework.cloudgroupId> <artifactId>spring-cloud-starter-eurekaartifactId> dependency>
二 、整合服务端(改造时去除原有整合)
0.改造时去除原有整合
注释掉fremark配置
## Freemarker 配置 #spring.freemarker.allow-request-override=false #spring.freemarker.allow-session-override=false #spring.freemarker.cache=true #spring.freemarker.check-template-location=true #spring.freemarker.content-type=text/html #spring.freemarker.enabled=true #spring.freemarker.expose-request-attributes=false #spring.freemarker.expose-session-attributes=false #spring.freemarker.expose-spring-macro-helpers=true #spring.freemarker.prefer-file-system-access=true #spring.freemarker.suffix=.ftl #spring.freemarker.template-loader-path=classpath:/templates/ #spring.freemarker.settings.template_update_delay=0 #spring.freemarker.settings.default_encoding=UTF-8 #spring.freemarker.settings.classic_compatible=true #spring.freemarker.order=1 #视图层控制(spring mvc 文件路径 后缀名) #spring.mvc.view.prefix=classpath:/templates/ #spring.mvc.view.suffix=.ftl #spring.mvc.static-path-pattern=/static/**去除 hmq-demo-server\src\main\resources\templates\ceshi.ftl 文件
1.添加服务端依赖
<dependency> <groupId>org.springframework.cloudgroupId> <artifactId>spring-cloud-starter-eureka-serverartifactId> dependency>
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloudgroupId> <artifactId>spring-cloud-dependenciesartifactId> <version>Edgware.RELEASEversion> <type>pomtype> <scope>importscope> dependency> dependencies> dependencyManagement>2.在启动方法上添加注解
/** * Created by wxl on 2017/12/8. */ @EnableEurekaServer //启动一个服务注册中心提供给其他应用进行对话 专属的Eureka //@EnableDiscoveryClient 可以发现多种服务组建 @SpringBootApplication public class StartUpEurekaConfig { public static void main(String[] args) { SpringApplication.run(StartUpEurekaConfig.class, args); } }3.添加配置
##Eureka 配置 ##配置本地ip eureka.instance.hostname=localhost ##不像注册中心注册自己 eureka.client.register-with-eureka=false ##由于注册中心的职责就是维护服务事例,不需要取检索服务 eureka.client.fetch-registry=false
#注册中心默认端口就是8761,也可通过下面的方式定义其他端口 eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
@EnableEurekaServer //启动一个服务注册中心提供给其他应用进行对话 专属的Eureka
@SpringBootApplication //开启自动化注解
public class HmqDemoServerApplication {
public static void main(String[] args) { SpringApplication.run(HmqDemoServerApplication.class, args); }
5.访问接口
http://localhost:8761/
二、客户端整合
1.重新复制出,spring boot 整合后的项目
2.添加依赖
<dependency> <groupId>org.springframework.cloudgroupId> <artifactId>spring-cloud-starter-eurekaartifactId> dependency>
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloudgroupId> <artifactId>spring-cloud-dependenciesartifactId> <version>Edgware.RELEASEversion> <type>pomtype> <scope>importscope> dependency> dependencies> dependencyManagement>3.启动类中添加注解
激活Enureka中的DisconveryClient实现(自动话配置,创建DisconveryClient接口针对Eureka客户端
的EurekaDiscoveryClient实例才能实现上述Controller中对服务的输出
@Configuration @SpringBootApplication //开启自动化注解 @ComponentScan(basePackages = "com.heimeiqiu") @MapperScan("com.heimeiqiu.dao.mapper") @EnableDiscoveryClient//激活Enureka中的DisconveryClient实现(自动话配置,创建DisconveryClient接口针对Eureka客户端的EurekaDiscoveryClient实例才能实现上述Controller中对服务的输出 ) public class HmqDemoServerApplication {
//启动应用入口 public static void main(String[] args) { SpringApplication.run(HmqDemoServerApplication.class, args); } }
##Eureka配置 #配置服务名称 spring.application.name=hmq-demo-server eureka.instance.hostname=127.0.0.1 #配置访问路径 #注册中心默认端口就是8761,也可通过下面的方式定义其他端口 eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:8761/eureka/
启动后在 8761 上的
这时候你也许会看到这个警告:
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES
这是进入了自我保护 可以查看这篇文章 :http://blog.csdn.net/lc0817/article/details/54375802