SpringCloud---SpringCloud Eureka(三)

搭建高可用的Eureka集群:

       只有一个Eureka注册中心的系统环境,如果这个Eureka挂掉,导致整个系统瘫痪,不能用。可以搭建Eureka集群,即使其中一个Eureka节点挂掉,其他Eureka节点依然能够工作,就保证了系统正常运行。

原理图:

在本机hosts配置文件配置域名,即模拟三台服务器

127.0.0.1  eureka7001.com
127.0.0.1  eureka7002.com
127.0.0.1  eureka7003.com

3个Eureka中心:

Eureka1  module:

         pom.xml导入Eureka服务端坐标和web坐标

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka-server</artifactId>
 </dependency>

        application.properties

server.port=7001

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

         启动类

@SpringBootApplication
@EnableEurekaServer
public class Eureka7001 {
	public static void main(String[] args) {
		SpringApplication.run(Eureka7001.class, args);
	}
}

Eureka2  module:

         pom.xml导入Eureka服务端坐标和web坐标

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka-server</artifactId>
 </dependency>

         application.properties

server.port=7002

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/

         启动类

@SpringBootApplication
@EnableEurekaServer
public class Eureka7002 {
	public static void main(String[] args) {
		SpringApplication.run(Eureka7002.class, args);
	}
}

Eureka3  module:

         pom.xml导入Eureka服务端坐标和web坐标

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka-server</artifactId>
 </dependency>

         application.properties

server.port=7003

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/

        启动类

@SpringBootApplication
@EnableEurekaServer
public class Eureka7003 {
	public static void main(String[] args) {
		SpringApplication.run(Eureka7003.class, args);
	}
}

3个微服务实例:

Service1 module:

        pom.xml导入Eureka客户端坐标和web坐标

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

         application.properties

server.port=8001
spring.application.name=service

eureka.client.service-url.defaultZone=http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
eureka.instance.instance-id=microservice-1
eureka.instance.prefer-ip-address=true

          Controller

@Controller
public class TestController {
	@RequestMapping(value="/testcontroller.do/{id}/{name}",method=RequestMethod.GET)
	@ResponseBody
	public String test(@PathVariable("id") int id,@PathVariable("name") String name) {
		return "8001" + id+name;
	}
}

          启动类

@SpringBootApplication
@EnableEurekaClient
public class App8001 {
	public static void main(String[] args) {
		SpringApplication.run(App8001.class, args);
	}
}

Service2 module:

         pom.xml导入Eureka客户端坐标和web坐标

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

          application.properties

server.port=8002
spring.application.name=service

eureka.client.service-url.defaultZone=http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
eureka.instance.instance-id=microservice-2
eureka.instance.prefer-ip-address=true

           Controller

@Controller
public class TestController {
	@RequestMapping(value="/testcontroller.do/{id}/{name}",method=RequestMethod.GET)
	@ResponseBody
	public String test(@PathVariable("id") int id,@PathVariable("name") String name) {
		return "8002" + id+name;
	}
}

           启动类

@SpringBootApplication
@EnableEurekaClient
public class App8002 {
	public static void main(String[] args) {
		SpringApplication.run(App8002.class, args);
	}
}

Service3 module:

         pom.xml导入Eureka客户端坐标和web坐标

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

         application.properties

server.port=8003
spring.application.name=service

eureka.client.service-url.defaultZone=http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
eureka.instance.instance-id=microservice-3
eureka.instance.prefer-ip-address=true

         Controller

@Controller
public class TestController {
	@RequestMapping(value="/testcontroller.do/{id}/{name}",method=RequestMethod.GET)
	@ResponseBody
	public String test(@PathVariable("id") int id,@PathVariable("name") String name) {
		return "8003" + id+name;
	}
}
 

        启动类

@SpringBootApplication
@EnableEurekaClient
public class App8003 {
	public static void main(String[] args) {
		SpringApplication.run(App8003.class, args);
	}
}

依次启动三个Eureka,再依次启动三个微服务实例,访问Eureka中心

       Eureka1

       Eureka2

       Eureka3

发布了71 篇原创文章 · 获赞 31 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_39115469/article/details/104672902