SpringCloud-eureka集群demo

川长思鸟来 2023-07-18 09:58 65阅读 0赞

eureka的工作方式、原理:

•会保存各个注册进来的微服务的基本信息:微服务名、ip、端口等
•eureka还会监控各个微服务的运行情况,做一个基本的监控,每隔30秒向已经注册的微服务发送一次心跳检测,微服务收到之后会给注册中心一个响应,如果注册中心连续三次(90秒)没有收到一个微服务的响应,会自动将微服务剔除(服务剔除),就是删除注册中心对应微服务的信息(微服务名、ip、端口等)。

如果是一台注册中心,万一注册中心挂了,整个微服务都会无法正常提供服务,怎么解决这个问题?

通过集群的方式解决
在这里插入图片描述

eureka集群创建步骤:

①先创建三台eureka,创建方式参照之前创建方式进行创建

在这里插入图片描述

分别添加依赖

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-test</artifactId>
  9. </dependency>
  10. <dependency>
  11. <groupId>org.springframework.boot</groupId>
  12. <artifactId>spring-boot-devtools</artifactId>
  13. </dependency>
  14. <!-- 引入eureka -->
  15. <dependency>
  16. <groupId>org.springframework.cloud</groupId>
  17. <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  18. <version>2.1.0.RELEASE</version>
  19. </dependency>
  20. </dependencies>

分别添加配置文件

在这里插入图片描述
server:
port: 9001
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://localhost:9001/eureka/

⑤分别给三个创建启动类,要注意的是要添加eureka server开启的注解

在这里插入图片描述

  1. package com.woniuxy.eureka;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
  5. @SpringBootApplication
  6. @EnableEurekaServer //开启注册中心的功能
  7. public class EurekaApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(EurekaApplication.class, args);
  10. }
  11. }

但是做完以上步骤之后,三台eureka之间没有任何关系,并不会自动成为一个集群,需要分别在9001 9002 9003的配置文件中配置其他eureka的url,修改defaultZone 形成集群

例如9001:
在这里插入图片描述
9002和9003照9001改

⑥分别启动9001 9002 9003,然后在分别通过浏览访问他们的管理页面,查看情况,发现并没有集群上!!!

巨坑:如果所有的eureka需要在同一台服务器上运行,那么每个eureka的hostname不能一样

在这里插入图片描述

解决方案:打开系统hosts文件,配置以下信息

在这里插入图片描述
在这里插入图片描述

再次启动测试:

在这里插入图片描述

业务微服务应该怎么注册进三个eureka?

修改业务微服务的application.yml,指定注册到三个eureka中,以product模块为例:
在这里插入图片描述

  1. server:
  2. port: 8002
  3. spring:
  4. application:
  5. name: springcloud63-product
  6. datasource:
  7. type: com.alibaba.druid.pool.DruidDataSource
  8. driver-class-name: com.mysql.jdbc.Driver
  9. url: jdbc:mysql://localhost:3306/car
  10. username: root
  11. password: 123456
  12. mybatis:
  13. config-location: classpath:mybatis-config.xml
  14. eureka:
  15. client:
  16. service-url:
  17. defaultZone: http://eurekaserver9001.com:9001/eureka/,http://eurekaserver9002.com:9002/eureka/,http://eurekaserver9003.com:9003/eureka/
  18. instance:
  19. instance-id: springcloud63-product-8002
  20. prefer-ip-address: true
  21. info:
  22. app.name: this is my product module
  23. developer.name: zr
  24. date: 2020.3.25
  25. language: Java
  26. ip: 192.168.154.130
  27. port: 8002

启动product模块测试,看他是否注册到三个eureka中,出现以下情况,表示注册成功!

在这里插入图片描述

再将user模块的配置文件也做一样的修改

在这里插入图片描述

在以上的基础上(一台eureka也可以,不是非得要集群的方式)通过微服务名进行模块间的通讯步骤:

①修改userhandler的源代码,将之前ip:port方式改为微服务名
在这里插入图片描述

②修改restTemplate的配置文件,添加以下注解

在这里插入图片描述

③启动user模块,请求user的url看能否获取到商品数据

在这里插入图片描述

业务模块通过集群方式解决高可用问题

集群开发步骤,以product模块为例
①创建两个商品模块,端口要不一样

②将之前product的所有类、配置、pom依赖都拷贝一份到新的product模块中

③修改新product模块的application.yml文件
在这里插入图片描述

④启动新的product模块,然后访问任意一个注册中心的管理页面查看情况,如果出现以下情况表示集群搭建成功

在这里插入图片描述

OVER!

发表评论

表情:
评论列表 (有 0 条评论,65人围观)

还没有评论,来说两句吧...

相关阅读