服务注册中心 Eureka注册与发现(单机版)
1.Eureka工作原理
2.什么是Eureka,什么是服务注册与发现
- Eureka是Netflix开源的一个RESTful服务,主要用于服务的注册发现。
- Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。
- Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。
- Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。
3.创建Eureka Server
3.1 建Module
同以往一样,建立一个名为“cloud-eureka-server7001” 的module。
3.2 改POM
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="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"> <parent> <artifactId>ckfuture-springcloud</artifactId> <groupId>com.ckfuture.springcloud</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>cloud-eureka-server7001</artifactId> <dependencies> <!-- 引入的Eureka-server --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> </dependency> <!--引入自定定义的api通用包,可以使用Payment支付实体--> <dependency> <groupId>com.ckfuture.springcloud</groupId> <artifactId>cloud-api-commons</artifactId> <version>${project.version}</version> </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> <!--热部署devtools--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </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>
3.3 建yam
在“resources”下建立“application.yml”文件。
server:
port: 7001
eureka:
instance:
hostname: localhost #eureka服务端的实例名称
client:
#false表示不向注册中心注册自己
register-with-eureka: false
#false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
fetch-registry: false
service-url:
#设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
defaultZone:http: //${eureka.instance.hostname}:${server.port}/eureka/
注意yml格式,要和我配置的显示的颜色一样,我就是在这块配置格式有问题,才出现error的!!!
3.4 主启动
在“java”下建立“EurekaMain7001” 主启动文件。
添加“@EnableEurekaServer”注解
package com.ckfuture.springcloud; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; /** * @descrption: 主启动类 * @author: CKFuture * @since: 2021-10-12 21:18 * @version: v1.0 * @LastEditTime: * @LastEditors: * @copyright: hrbckfuture.com */ @EnableEurekaServer @SpringBootApplication public class EurekaMain7001 { private static final Logger logger = LoggerFactory.getLogger(EurekaMain7001.class); public static void main(String[] args) { SpringApplication.run(EurekaMain7001.class,args); logger.info("------------ Eureka Service7001 Start Running--------------"); } }
4.启动测试
在浏览器上输入“http://localhost:7001”则可以访问Eureka Server管理界面
5.支付微服务8001入驻进EurekaServer
EurekaClient端cloud-provider-payment8001将注册进EurekaServer成为微服务提供者provider。
5.1 改POM
8001的pom中添加:
<!--Eureka-client--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
5.2 写YML
在yml中增加Eureka-client配置
eureka:
client:
#表示是否将自己注册进EurekaServer,默认true
register-with-eureka: true
#是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置true才能配合ribbon使用负载均衡。
fetch-registry: true
service-url:
defaultZone: http://localhost:7001/eureka
5.3 主启动
在8001主启动上添加“@EnableEurekaClient”注解
package com.ckfuture.springcloud; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; /** * @descrption: 主启动类 * @author: CKFuture * @since: 2021-10-09 21:18 * @version: v1.0 * @LastEditTime: * @LastEditors: * @copyright: hrbckfuture.com */ @SpringBootApplication @EnableEurekaClient public class PaymentMain8001 { private static final Logger logger = LoggerFactory.getLogger(PaymentMain8001.class); public static void main(String[] args) { SpringApplication.run(PaymentMain8001.class,args); logger.info("------------ API Service8001 Start Running--------------"); } }
5.4 测试
依次启动7001和8001。
6.订单微服务80入驻进eurekaServer
EurekaClient端cloud-consumer-order80将注册进EurekaServer成为服务消费者consumer。
6.1 改POM
在80微服务POM中添加:
<!--Eureka-client--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
6.2 写YML
在80的YML中添加:
spring: application: name: cloud-order-service eureka: client: #表示是否将自己注册进EurekaServer,默认true register-with-eureka: true #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置true才能配合ribbon使用负载均衡。 fetch-registry: true service-url: defaultZone: http://localhost:7001/eureka
6.3 主启动
在80主启动中添加注解“@EnableEurekaClient”
package com.ckfuture.springcloud; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; /** * @descrption: 消费者主启动类 * @author: CKFuture * @since: 2021-10-11 20:13 * @version: v1.0 * @LastEditTime: * @LastEditors: * @copyright: hrbckfuture.com */ @SpringBootApplication @EnableEurekaClient public class OrderMain80 { private static final Logger logger = LoggerFactory.getLogger(OrderMain80.class); public static void main(String[] args) { SpringApplication.run(OrderMain80.class,args); logger.info("------------ OrderMain80 Start Running--------------"); } }
6.4 启动测试
启动后,查看Eureka Server 发现两个微服务都注册成功。
查询消费者接口测试:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!