SpringBoot 第四天 Eureka服务治理

1、服务器端搭建

Eureka分为客户端和服务器端。我们首先创建一个服务器端服务。

如下图表示:

创建成功后的目录结构为:

系统的配置为application.properties,建议采用yml文件,因此我将application.properties重命名为application.yml。增加如下配置:

server: 
  port: 8761 #服务端口号

eureka:
  client:
    register-with-eureka: false #由于当前Eureka应用为服务端,因此设置当前用户不进行注册。防止自己向自己注册发生异常
    fetch-registry: false       #由于注册中心主要是维护管理实例,因此它并不需要去检索服务实例,因此也设置为false
    service-url: 
      defaultZone: http://localhost:8761/eureka/  #设置向注册中心注册服务的地址
  
  server: 
    enable-self-preservation: true #启动自我保护模式,默认是开启的,可以不设置。      

修改启动类EurekaServerApplication.java,增加Eureka服务的注解

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaServerApplication.class, args);
	}
}

然后就可以启动服务测试是否设置成功。访问http://localhost:8761 如果显示如下界面,表示服务设置成功。

2、客户端搭建

服务器端创建完成后,我们开始创建客户端。Eureka客户端需要伴随着其他应用一起,因此我们设置Eureka客户端时,不能只依赖Eureka这个应用,还需要依赖其他应用,如Web应用或Zuul应用等。如下图表示:

我这里设置了两个应用,分别是Web和Eureka Disconvery。Eureka Disconvery即Eureka客户端应用的服务。创建完成后,结构如下:

我们首先修改application.properties文件为application.yml文件,然后增加上Eureka客户端的配置,代码如下:

server:
  port: 1234          #配置端口号

eureka:
  instance:
    appname: client   #配置客户端在Eureka服务器端中的名称
  client: 
    service-url: 
      defaultZone: http://localhost:8761/eureka/  #设置向注册中心注册服务的地址

然后修改客户端的启动文件EurekaClientApplication.java文件,增加Eureka客户端的配置信息,代码如下:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaClientApplication.class, args);
	}
}

然后启动项目,访问服务器http://localhost:8761,如果显示如下内容表示客户端部署成功。

 

3、部署过程中遇到的问题

1、SpringCloud从2.0开始兼容JDK1.9,但是由于JDK1.9采用模块块编程,因此会缺少某些JAR包,需要单独引入,因此建议大家先用jdk1.8进行学习。

2、SpringCloud2.xxx.xx同SpringCloud1.xxx.xxx区别比较大。我用的1.5.15版本中,不论是服务器端还是客户端,都是通过spring-cloud-starter-eureka-server这个来实现的。而在2.0.6版本中,服务器端是通过spring-cloud-starter-netflix-eureka-server实现的,而客户端是通过spring-cloud-starter-netflix-eureka-client实现的。

3、在SpringCloud1.5.15版本中,启用Eureka客户端是通过@org.springframework.cloud.netflix.eureka.EnableEurekaClient这个注解来实现。而到了2.0.6中,启用Eureka客户端即可以通过@org.springframework.cloud.netflix.eureka.EnableEurekaClient来实现,也可以通过@org.springframework.cloud.client.discovery.EnableDiscoveryClient来实现。建议在2.0.6中通过org.springframework.cloud.client.discovery.EnableDiscoveryClient来实现。

4、在进行 搭建的时间,一定要选择JDK而不是JRE。因此用JRE总是会出现客户端无法将服务注册到服务器端的问题,而且会报com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server 异常。一开始一起以为是配置的问题,后面才发现编译环境用的JRE的问题。因此当大家发现 Cannot execute request on any known server这个错误时,如果确认自己的配置没有错误,可以查看一下环境的配置,看看是通过jre编译还是通过jdk编译的。

5、register-with-eureka: false用于设置当前服务是否需要注册到Eureka服务中。如果设置为false,此服务将不会注册到服务器。我学习时网上有很多资源将这个设置加到了客户端,造成在Eureka中找不到相关的服务,因此这里需要大家注意一下。

6、 prefer-ip-address用于设置注册到Eureka服务中时是否显示本服务的IP地址。如果不设置为true,在Eureka服务中将显示本机的服务名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值