news 2026/11/5 2:05:57

5、eureka集群环境搭建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5、eureka集群环境搭建

1. 新建cloud-eureka-server7002

<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.atguigu.springcloud</groupId><artifactId>cloud2020</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>cloud-eureka-server7002</artifactId><packaging>jar</packaging><name>cloud-eureka-server7002</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>com.atguigu.springcloud</groupId><artifactId>cloud-api-commons</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency></dependencies></project>
server: port: 7002 #集群版 eureka: instance: hostname: eureka7002.com #eureka服务端的实例名字 client: register-with-eureka: false #表识不向注册中心注册自己 fetch-registry: false #表示自己就是注册中心,职责是维护服务实例,并不需要去检索服务 service-url: defaultZone: http://eureka7001.com:7001/eureka/

注意:此时是eureka7002向eureka7001节点注册,此时的实例名称也不再是localhost,是为了在eureka集群之间好区分,所以实例名要保持不一致

1.1 改造eureka7001

server: port: 7001 # 单机版 eureka: instance: hostname: eureka7001.com #eureka服务端的实例名字 client: register-with-eureka: false #表示不向注册中心注册自己 fetch-registry: false #表示自己就是注册中心,职责是维护服务实例,并不需要去检索服务 service-url: #设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址 defaultZone: http://eureka7002.com:7002/eureka/

注意:同样是修改实例名,以及注册方向

1.2 同时启动两台eureka节点



重要: eureka集群,之间是互相注册的关系,修改了本机host文件

2. 将payment,order服务注册进eureka集群

注意:将原先注册的单机配置改为集群配置即可

server:port:8001spring:application:name:cloud-payment-service datasource:type:com.alibaba.druid.pool.DruidDataSourcedriver-class-name:org.gjt.mm.mysql.Driverurl:jdbc:mysql://localhost:3306/db2019?useUnicode=true&characterEncoding=utf-8&useSSL=falseusername:root password:root druid:initial-size:5max-active:10min-idle:5max-wait:60000test-while-idle:truevalidation-query:SELECT1test-on-borrow:falsetest-on-return:falsetime-between-eviction-runs-millis:60000min-evictable-idle-time-millis:300000eureka:client:register-with-eureka:true#是否向注册中心注册自己 fetchRegistry:true#是否从注册中心抓取已有的注册信息 默认true,集群必须设置为trueservice-url:# defaultZone:http://localhost:7001/eureka #单机版 defaultZone:http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版 mybatis:mapper-locations:classpath:mapper/*.xml type-aliases-package: com.atguigu.springcloud.entities
server:port:80spring:application:name:cloud-order-service eureka:client:register-with-eureka:true#是否向注册中心注册自己 fetchRegistry:true#是否从注册中心抓取已有的注册信息 默认true,集群必须设置为trueservice-url:#设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址 # defaultZone:http://localhost:7001/eureka #单机版 defaultZone:http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版

2.1 启动服务


3. payment集群配置

3.1 新增cloud-provider-payment8002 module

<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.atguigu.springcloud</groupId><artifactId>cloud2020</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>cloud-provider-payment8002</artifactId><packaging>jar</packaging><name>cloud-provider-payment8002</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>com.atguigu.springcloud</groupId><artifactId>cloud-api-commons</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies></project>

注意:pom.xml与payment8001保持一致

3.2 yml文件

server: port: 8002 spring: application: name: cloud-payment-service datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: org.gjt.mm.mysql.Driver url: jdbc:mysql://localhost:3306/db2019?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: root druid: initial-size: 5 max-active: 10 min-idle: 5 max-wait: 60000 test-while-idle: true validation-query: SELECT 1 test-on-borrow: false test-on-return: false time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 eureka: client: register-with-eureka: true #是否向注册中心注册自己 fetchRegistry: true #是否从注册中心抓取已有的注册信息 默认true,集群必须设置为true service-url: # defaultZone: http://localhost:7001/eureka #单机版 defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版 mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.atguigu.springcloud.entities

注意:yml文件与payment8001保持一致,yml中的spring.application.name保持一致即可,注册在eureka集群中是一致的
注意:因为是payment服务集群,因此两个服务的代码需要保持一致

4. 改造order80服务

注意:现在payment服务有两台机器,因此order服务再调用的时候,需要通过eureka去调用

packagecom.atguigu.springcloud.controller;importcom.atguigu.springcloud.entities.CommonResult;importcom.atguigu.springcloud.entities.Payment;importorg.springframework.web.bind.annotation.*;importorg.springframework.web.client.RestTemplate;importjavax.annotation.Resource;@RestController@RequestMapping("consumer")publicclassOrderController{//public static final String PAYMENT_URL = "http://localhost:8001";publicstaticfinalStringPAYMENT_URL="http://CLOUD-PAYMENT-SERVICE";@ResourceprivateRestTemplaterestTemplate;@PostMapping("/payment/create")publicCommonResult<Payment>create(@RequestBodyPaymentpayment){returnrestTemplate.postForObject(PAYMENT_URL+"/payment/create",payment,CommonResult.class);}@GetMapping("/payment/get/{id}")publicCommonResult<Payment>getPayment(@PathVariable("id")Longid){returnrestTemplate.getForObject(PAYMENT_URL+"/payment/get/"+id,CommonResult.class);}@GetMapping("/payment/queryAllByLimit")publicCommonResultqueryAllByLimit(@RequestParam(defaultValue="0")intoffset,@RequestParam(defaultValue="10")intlimit){returnrestTemplate.getForObject(PAYMENT_URL+"/payment/queryAllByLimit?offset="+offset+"&limit="+limit,CommonResult.class);}}

注意:将调用的url改为注册在eureka中的服务名

publicstaticfinalStringPAYMENT_URL="http://CLOUD-PAYMENT-SERVICE";

注意:因为payment服务存在两个节点,因此order服务在调用的时候,需要配置轮询策略@LoadBalanced

packagecom.atguigu.springcloud.config;importorg.springframework.cloud.client.loadbalancer.LoadBalanced;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.client.RestTemplate;@ConfigurationpublicclassApplicationContextConfig{// 配置bean 不然后面没法依赖注入,就像以前ssm整合时配置依赖注入一样,// 需要在配置文件配置之后,代码中才可以依赖注入// 当前文件就是spring的配置文件@Bean@LoadBalanced//让这个RestTemplate在请求时拥有客户端负载均衡的能力publicRestTemplategetRestTemplate(){returnnewRestTemplate();}}

4.1 测试


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/5 2:05:03

污染 0.1% 的语料,编程智能体 92% 执行陌生命令|2026年11月04日

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/5 2:04:59

4-1静态数码管显示

本次学习有很多知识点&#xff0c;我将分条总结 一.单个数码管单个数码管分为共阴极和共阳极&#xff0c;第一个电路是共阴极数码管&#xff0c;若使这个数码管可使用&#xff0c;3.8那边应该接阴极&#xff0c;第二张图是共阳极数码管&#xff0c;若使数码管可用应在3.8那边接…

作者头像 李华
网站建设 2026/11/5 2:04:23

应届生冲刺大厂AI应用开发-学习路线

应届生冲刺大厂 AI 应用开发&#xff1a;Agent、Prompt 工程、多模态学习路线 导读&#xff1a;这篇文章写给想进大厂做 AI 应用开发、却不知道该从哪下手的应届生。它不讲虚的&#xff0c;直接拆解大厂 AI 应用岗的真实要求&#xff0c;给出 Agent、Prompt 工程、RAG、多模态四…

作者头像 李华
网站建设 2026/11/5 2:03:55

Vibe Coding 时代,MATLAB 科研编程该如何进阶?

Vibe Coding 时代&#xff0c;MATLAB 科研编程该如何进阶&#xff1f; 目录 Vibe Coding 时代&#xff0c;MATLAB 科研编程该如何进阶&#xff1f; 一、AI 改变了代码的编写方式&#xff0c;也改变了我们需要关注的问题 二、科研计算的难点&#xff0c;往往隐藏在代码之外 …

作者头像 李华
网站建设 2026/11/5 2:02:27

AI 应用开发:私有化大模型接入实战——Ollama 弹性部署、OpenAI 兼容端点与 Spring AI 工程化落地【端点打通、降级限流、踩坑复盘】

✍️ 作者:王文峰(外号:神秘小峯 / 山峯)|中国国学、传统文化与代码爱好者的程序人生,期待你的关注和支持! AI 应用开发:私有化大模型接入实战——Ollama 弹性部署、OpenAI 兼容端点与 Spring AI 工程化落地 一、为什么生产环境必须私有化? 二、架构总览 三、环境准备…

作者头像 李华