Spring Cloud - Discovery - Eureka

本文详细介绍Netflix的Eureka服务注册组件,包括EurekaClient和EurekaServer的配置与使用。通过实例展示如何在Spring Cloud项目中引入并配置Eureka,实现服务的注册与发现,适用于微服务架构。

Eureka

Eureka 是 Netflix 的服务注册组件。
Eureka 分为 Eureka Client 和 Eureka Server 两部分。

Eureka Client

  • 使用 org.springframework.cloud:spring-cloud-starter-netflix-eureka-client 引入 Eureka Client。
  • application.properties 中配置 Eureka。
spring.application.name=store

# Eureka服务地址
eureka.client.service-url.defaultZone=http://localhost:8110/eureka/
  • 启动类使用 @EnableEurekaClient 配置启用 Eureka Client。
  • 使用 EurekaClient bean 获取服务。
@Service
public class OrderService {
    @Resource
    private EurekaClient eurekaClient;
    
    public void order(String goodCode) {
        // 扣库存
        InstanceInfo storeInstanceInfo = eurekaClient.getNextServerFromEureka("store", false);
        String storeUrl = storeInstanceInfo.getHomePageUrl();
        // dosth....
    }
}

Eureka Server

如何引入 ?
  • 使用 org.springframework.cloud:spring-cloud-starter-netflix-eureka-server 引入 Eureka Server。
  • application.properties 中配置 Eureka Server。
server.port=8110

# 是否注册到Eureka
eureka.client.register-with-eureka=false
# 是否从Eureka获取注册信息
eureka.client.fetch-registry=false
# Eureka服务地址
eureka.client.service-url.defaultZone=http://localhost:8110/eureka/
  • 启动类使用 @EnableEurekaServer 配置启用 Eureka Server。
集群
  • application.propeties 配置 eureka.client.service-url.defaultZone${peer1Url},${peer2Url},${peer3Url},例如http://peer1:8111/eureka/,http://peer2:8112/eureka/,http://peer3:8113/eureka/

注意peer1peer2peer3配置在了hosts文件中,指向127.0.0.1

  • eureka.instance.hostname 配置主机名,指定集群中peer的名称。
  • eureka.client.register-with-eureka 配置为 true 可显示哪个peer可用。
`spring-cloud-starter-servicecomb-discovery` 是 Spring Cloud 生态系统中的一个依赖项,主要用于支持 ServiceComb 的服务发现功能。ServiceComb 是华为开源的一个微服务框架,旨在帮助企业快速构建分布式、云原生的应用程序。 以下是关于该依赖的一些关键点: ### 功能特点: 1. **服务注册与发现** 使用 `spring-cloud-starter-servicecomb-discovery` 可以让基于 Spring Boot/Spring Cloud 构建的服务轻松集成到 ServiceComb 的服务治理体系中。它通过内置的支持实现了自动化的服务注册和服务发现机制。 2. **兼容 Spring Cloud 标准** 此依赖完全遵循了 Spring Cloud 的设计规范,因此开发者可以像使用其他 Spring Cloud 组件一样配置和管理服务组合。 3. **跨语言互通能力增强** 配合 ServiceComb 其他组件一起工作时,能够更好地满足多语言场景下的服务治理需求(如 Java 和非 Java 应用之间的交互)。 4. **高可用性和容错处理** 提供了一套完整的解决方案来应对网络分区、实例失效等故障情况,并确保请求始终路由至健康的节点上。 --- 如果你正在考虑引入这个依赖,请记得在项目根目录下添加 Maven 或 Gradle 相关配置文件内容: #### 示例 - Maven 引入 ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-servicecomb-discovery</artifactId> <!-- 版本号需视实际情况而定 --> <version>x.x.x.RELEASE</version> </dependency> ``` #### 示例 - Gradle 引入 ```groovy implementation 'org.springframework.cloud:spring-cloud-starter-servicecomb-discovery:x.x.x.RELEASE' ``` 请将 `x.x.x.RELEASE` 替换为你所需的具体版本信息! --- ### 注意事项 - 确保环境中已安装并运行好服务中心 (例如 Apache Service Comb 提供的 Registry); - 检查与其他中间件是否存在冲突问题(比如 Eureka/Zookeeper/Kubernetes-DNS 等),以免引起不必要的麻烦;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值