手把手教你搭建SpringCloud项目(四)Eureka集群版搭建

柔光的暖阳◎ 2023-10-13 19:07 124阅读 0赞

什么是微服务?一看就会系列!

一、手把手教你搭建SpringCloud项目(一)图文详解,傻瓜式操作

二、手把手教你搭建SpringCloud项目(二)生产者与消费者

三、手把手教你搭建SpringCloud项目(三)集成Eureka服务注册中心

四、手把手教你搭建SpringCloud项目(四)Eureka集群版搭建

五、手把手教你搭建SpringCloud项目(五)生产者集群版搭建

六、手把手教你搭建SpringCloud项目(六)Eureka实现服务发现

七、手把手教你搭建SpringCloud项目(七)集成Consul服务注册中心

八、手把手教你搭建SpringCloud项目(八)集成Ribbon负载均衡器

九、手把手教你搭建SpringCloud项目(九)集成OpenFeign服务接口调用

十、手把手教你搭建SpringCloud项目(十)集成Hystrix之服务降级

十一、手把手教你搭建SpringCloud项目(十一)集成Hystrix之服务熔断

十二、手把手教你搭建SpringCloud项目(十二 )集成Hystrix之图形化Dashboard实时监控

十三、手把手教你搭建SpringCloud项目(十三 )集成Gateway新一代网关

十四、手把手教你搭建SpringCloud项目(十四 )集成Config分布式配置中心

十五、手把手教你搭建SpringCloud项目(十五)集成Bus消息总线

十六、手把手教你搭建SpringCloud项目(十六)集成Stream消息驱动

十七、手把手教你搭建SpringCloud项目(十七)集成Sleuth分布式链路跟踪

继续更新中,欢迎点赞关注!
上一篇我们只是简单的搭建了Eureka的单机版,但是在真正的生产环境上,是远远不够的,微服务RPC远程服务调用最核心的就是高可用,如果一台Eureka宕机了,那我们整个服务就不能使用了,所以就需要我们的集群版,实现负载均衡与故障容错。

我们参考cloud-eureka-server,新建module我们命名为cloud-eureka-server02,这样可以防止与cloud-eureka-server区别开来。具体的如何新建module这里就不贴截图了,具体的新建步骤看前两篇文章都有。

这里从修改pom文件开始贴代码。注意:主要就是添加eureka-server依赖。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <parent>
  6. <artifactId>mcroservice</artifactId>
  7. <groupId>com.study.springcloud</groupId>
  8. <version>1.0-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <artifactId>cloud-eureka-server02</artifactId>
  12. <dependencies>
  13. <!--eureka-server-->
  14. <dependency>
  15. <groupId>org.springframework.cloud</groupId>
  16. <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  17. </dependency>
  18. <!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
  19. <dependency>
  20. <groupId>com.study.springcloud</groupId>
  21. <artifactId>cloud-api-commons</artifactId>
  22. <version>${project.version}</version>
  23. </dependency>
  24. <!--boot web actuator-->
  25. <dependency>
  26. <groupId>org.springframework.boot</groupId>
  27. <artifactId>spring-boot-starter-web</artifactId>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.springframework.boot</groupId>
  31. <artifactId>spring-boot-starter-actuator</artifactId>
  32. </dependency>
  33. <!--一般通用配置-->
  34. <dependency>
  35. <groupId>org.projectlombok</groupId>
  36. <artifactId>lombok</artifactId>
  37. </dependency>
  38. <dependency>
  39. <groupId>org.springframework.boot</groupId>
  40. <artifactId>spring-boot-starter-test</artifactId>
  41. <scope>test</scope>
  42. </dependency>
  43. <dependency>
  44. <groupId>junit</groupId>
  45. <artifactId>junit</artifactId>
  46. </dependency>
  47. </dependencies>
  48. </project>

这里需要注意的是,Eureka集群是需要修改映射配置的,我们找到C:\Windows\System32\drivers\etc路径下的hosts文件,在文件的最后加上我们两个Eureka的映射,如下图:
在这里插入图片描述

配置yml文件,Eureka集群,是需要指向其他的Eureka,比如我现在的7001指向7002,7002指向7001。如果多个就要闭环的指向,比如1指向2,2指向3,3指向1。这简称为互相注册,相互守望。

Eureka端口为7002的的yml文件,如下图:

  1. server:
  2. port: 7002
  3. eureka:
  4. instance:
  5. hostname: eureka7002.com #eureka服务端的实例名称
  6. client:
  7. register-with-eureka: false #false表示不向注册中心注册自己。
  8. fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
  9. service-url:
  10. #设置与eureka server交互的地址和注册服务都需要依赖这个地址
  11. defaultZone: http://eureka7001.com:7001/eureka/ #集群就是指向其他的eureka

Eureka端口为7001的的yml文件,如下图:

  1. server:
  2. port: 7001
  3. eureka:
  4. instance:
  5. hostname: eureka7001.com #eureka服务端的实例名称
  6. client:
  7. register-with-eureka: false #false表示不向注册中心注册自己。
  8. fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
  9. service-url:
  10. #设置与eureka server交互的地址和注册服务都需要依赖这个地址
  11. defaultZone: http://eureka7002.com:7002/eureka/ #集群就是指向其他的eureka

主启动类:因为是Eureka的服务端,所以要加该注解@EnableEurekaServer

  1. package com.buba.springcloud.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 EurekaMain02 {
  8. public static void main(String[] args) {
  9. SpringApplication.run(EurekaMain02.class,args);
  10. }
  11. }

我们现在修改生产者的服务,也就是cloud-provide-payment这个服务,修改yml文件,将该服务分别注入这个Eureka中:换成

  1. defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
  2. server:
  3. port: 8001 #服务端口
  4. #spring相关配置
  5. spring:
  6. application:
  7. name: mcroservice-payment #服务名
  8. datasource:
  9. type: com.alibaba.druid.pool.DruidDataSource #当前数据源操作类型
  10. driver-class-name: org.gjt.mm.mysql.Driver #数据库驱动包
  11. url: jdbc:mysql://localhost:3306/db01?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false
  12. username: root
  13. password: root
  14. #mybatis:配置
  15. mybatis:
  16. mapperLocations: classpath:dao/*.xml
  17. type-aliases-package: com.buba.springcloud.pojo # 所有pojo别名类所在包
  18. #eureka配置
  19. eureka:
  20. client:
  21. #表示是否将自己注册进eureka 默认为true
  22. register-with-eureka: true
  23. #是否从EurekaServer中抓取已有的注册信息,默认为true,单点无所谓,集群必须设置true才能和ribbon使用负载均衡
  24. fetch-registry: true
  25. service-url:
  26. #集群配置
  27. defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
  28. instance:
  29. #服务名称修改
  30. instance-id: payment8001
  31. #访问路径可以显示ip地址
  32. prefer-ip-address: true

现在我们要先启动Eureka端口为7001的服务,然后再启动Eureka端口为7002的服务,再启动我们的生产者的服务,最后启动消费者的服务。

先看一下Eureka端口为7001的服务,看到生产者和消费者都已经成功注册到了Eureka服务中心。如下图:
在这里插入图片描述

再看看一下Eureka端口为7002的服务,看到生产者和消费者都已经成功注册到了Eureka服务中心。如下图:
在这里插入图片描述

下面测试一下消费者服务,是否可以成功访问。输入http://localhost/consumer/payment/get/1,访问成功,如下图:
在这里插入图片描述

集群版的Eureka就搭建完成啦,看起来难,做起来就很容易,你不会之前觉得难,学会之后就觉得很简单。

在这里插入图片描述

下一篇文章搭建生产者集群服务实现负载均衡,持续关注、点赞。我们持续更新中。
在这里插入图片描述

发表评论

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

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

相关阅读