搭建springcloud可以看我的另外一篇博客这里主要讲下Eureka
介绍
划重点。。。Eureka目前是停更不停用如果是公司架构选型的话不建议使用Eureka
Eureka自我保护机制配置
eureka-server(application.properties)
自我保护开关(eureka.server.enable-self-preservation: false)
设置时间间隔(eureka.server.eviction-interval-timer-in-ms=2000)
eureka-client(application.properties)
#Eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认30秒)
eureka.instance.lease-renewal-interval-in-seconds=90
#Eureka服务端收到最后一次心跳后等待时间上限单位为秒(默认90秒),超时将剔除服务
eureka.instance.lease-expiration-duration-in-seconds=30
eureka-server代码配置
1)首先创建一个model
这里就不多说了可以看下第一篇搭建springcloud的博客,很详细了
2)pom.xml文件中依赖
<!--eureka-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
因为创建的model为注册中心,主要功能是进行服务治理等所以这里需要依赖server
application.properties新增
server.port=7001
#服务注册中心的IP地址
eureka.instance.hostname=localhost
#是否往服务注册中心注册自己
eureka.client.register-with-eureka=false
#是否检索服务
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
注:因为本身为注册中心所以不需要自己注册自己这里为false
最后在启动类上标明自己为server注册中心
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
启动服务访问 localhost:7001
eureka-client代码配置
这里配置的是指需要注册的微服务比如之前创建的model中的pay和order服务,这里注册pay服务进eureka(注册其他服务配置是一样的)。
1)首先pay服务中引入pom.xml依赖
<!--eureka-client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2)修改application.properties文件(这里注意ervice-url为eureka服务的http地址)
#是否往服务注册中心注册自己
eureka.client.register-with-eureka=true
#是否检索服务
eureka.client.fetch-registry=true
eureka.client.service-url.defaultZone=http://localhost:7001/eureka/
3)修改启动类
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@EnableEurekaClient
启动Eureka和pay模块(先启动Eureka启动成功后再启动pay,因为你注册的话需要先有一个注册中心)
搭建Eureka注册中心集群(实现负载均衡+故障容错)
原理:互相注册,相互守望
这里大概就是需要多少个集群就创建多少个Eureka注册中心model,多个Eureka之间进行相互注册,这样即使挂掉了一个Eureka另外一个Eureka也可以正常使用
和上面的单机版Eureka一样需要改动的代码就是application.properties
1)首先再创建一个单机版的Eureka注册中心微服务
2)application.properties
如果是同一台服务器做集群 eureka.instance.hostname=localhost 需要做一个映射,不同服务器就可以写服务器的ip,如果都用localhost就没有办法区别哪个是哪个了
同一台服务器:
Linux:
这时候就可以在不同的注册服务中心下写上对应的 eureka.instance.hostname
注:win10找到 /ect/hosts 文件更改
启动两个eureka服务随意访问一个端口(7001/7002)如下图说明集群成功
服务注册到eureka集群
这里只需要改需要注册服务的 application.properties 即可
未改动前
改动后
微服务集群搭建(负载均衡)
比如这边需要创建一个pay模块的集群,首先创建一个model如pay2,pay2中的所有配置以及代码都需要和pay模块一致,唯一不同的就是端口号(pay:8001 pay2:8002)
启动后eureka如下
这时候使用order模块调用pay模块
url应改为服务名:
开启RestTemplate负载均衡能力
@LoadBalanced
补充(完善)
配置自定义主机名 application.properties
#配置主机名
eureka.instance.instance-id=xxxxxx
配置主机ip显示 application.properties
#显示主机ip
eureka.instance.prefer-ip-address=true
如果是集群想查看某个服务是否正常
这里的前提是服务依赖了包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>