注意:spingcloud的版本号与springboot的冲突问题我这里用的springcloud版本是:finchley.SR2,springboot版本是:2.0.7。
注意:spingcloud的版本号与springboot的冲突问题我这里用的springcloud版本是:finchley.SR2,springboot版本是:2.0.7。
创建项目
编写配置文件application.yml
---
spring:
profiles: peer1
server:
port: 8800
eureka:
instance:
hostname: peer1
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://127.0.0.1:8900/eureka/
---
spring:
profiles: peer2
server:
port: 8900
eureka:
instance:
hostname: peer2
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://127.0.0.1:8800/eureka/
启动类加注解
@EnableEurekaServer
@SpringBootApplication
public class EurekaschoolingApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaschoolingApplication.class, args);
}
}
这里代码阶段已经完成
打包
项目打包方式自选
启动项目
采用如下命令
java -jar eurekaschooling-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar eurekaschooling-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
在浏览其中分别打开如下网址能够成功,说明我们的集群搭建完毕
深入理解高可用
这里到了如何配置服务消费者的问题了
这是官网的配置:
eureka:
client:
serviceUrl:
defaultZone: http://peer1/eureka/,http://peer2/eureka/,http://peer3/eureka/
这里有一个问题:
如果我们是由10个eureka集群搭建的注册中心,那么我们每个消费者配置文件中都要把这10个注册中心的url都写上。这显然是不太可行的。
这就涉及到了eureka的集群原理了。只要我们再任意个服务的url注册了,集群中的其他注册服务都会同步。
就算是服务注册的这个Url的宕机 了,服务 依然可用。
这才是高可用啊!!!
下面我们来继续探讨
继续修改前面项目的application.yml
---
spring:
profiles: peer1
server:
port: 8800
eureka:
instance:
hostname: peer1
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://127.0.0.1:8900/eureka/,http://127.0.0.1:9000/eureka/
---
spring:
profiles: peer2
server:
port: 8900
eureka:
instance:
hostname: peer2
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://127.0.0.1:9000/eureka/,http://127.0.0.1:8800/eureka/
---
spring:
profiles: peer3
server:
port: 9000
eureka:
instance:
hostname: peer3
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://127.0.0.1:8800/eureka/,http://127.0.0.1:8900/eureka/
打包后启动
java -jar eurekaschooling-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar eurekaschooling-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
java -jar eurekaschooling-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer3
分别访问如下地址
可以看到启动成功
但是我们还要测试服务注册能不能三个都同步
编写服务注册工程
配置文件application.yml
server:
port: 8765
spring:
application:
name: client
eureka:
client:
serviceUrl:
defaultZone: http://127.0.0.1:9000/eureka/
启动类
@EnableDiscoveryClient
@SpringBootApplication
public class EurekaclientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaclientApplication.class, args);
}
}
运行测试
可以看到在三个服务中都完成了注册,说明集群实现了同步。
将端口为9000的服务宕机
可以看到在其他两个服务中依然有效。这就是高可用!!!