Eureka与Ribbon微服务搭建指南

B站影视 韩国电影 2025-04-03 20:09 1

摘要:为了搭建基于Eureka的服务注册与发现系统,并结合RestTemplate和Ribbon实现服务消费者,请按照以下步骤操作:

为了搭建基于Eureka的服务注册与发现系统,并结合RestTemplate和Ribbon实现服务消费者,请按照以下步骤操作:

1. 创建eureka Server

步骤说明:Eureka Server作为服务注册中心,管理所有服务的注册与发现。

代码实现

依赖配置(pom.xml)

org.springframework.cloud

Spring-cloud-starter-netflix-eureka-server

启动类

java

@SpringBootApplication

@EnableEurekaServer

public class EurekaServerApplication {

public static void main(String args) {

SpringApplication.run(EurekaServerApplication.class, args);

}

}

配置文件(application.yml)

yaml

server:

port: 8761

eureka:

client:

register-with-eureka: false # 不向自身注册

fetch-registry: false # 不获取注册信息

service-url:

defaultZone: http://localhost:8761/eureka/

2. 创建服务提供者(Service provider)

步骤说明:服务提供者向Eureka注册,并提供一个REST接口供消费者调用。

代码实现

依赖配置(pom.xml)

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

org.springframework.boot

spring-boot-starter-web

启动类

java

@SpringBootApplication

@EnableEurekaClient

public class ProviderApplication {

public static void main(String args) {

SpringApplication.run(ProviderApplication.class, args);

}

}

yaml

spring:

application:

name: service-provider # 服务名称

server:

port: 8081 # 端口

eureka:

client:

service-url:

defaultZone: http://localhost:8761/eureka/ # Eureka地址

REST接口

java

@RestController

public class HelloController {

@GetMapping("/hello")

public String hello {

return "Hello from Service Provider";

}

}

3. 创建服务消费者(Service Consumer)

步骤说明:消费者通过Eureka发现服务,并使用Ribbon实现负载均衡的调用。

代码实现

依赖配置(pom.xml)

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

org.springframework.boot

spring-boot-starter-web

spring-cloud-starter-netflix-ribbon

启动类

java

@SpringBootApplication

@EnableEurekaClient

public class ConsumerApplication {

public static void main(String args) {

SpringApplication.run(ConsumerApplication.class, args);

}

}

配置RestTemplate

java

@Configuration

public class AppConfig {

@Bean

@LoadBalanced // 启用负载均衡

public RestTemplate restTemplate {

return new RestTemplate;

}

}

调用服务提供者

java

@RestController

public class ConsumerController {

@Autowired

private RestTemplate restTemplate;

@GetMapping("/invoke")

public String invokeProvider {

// 使用服务名称代替具体URL

String url = "http://service-provider/hello";

return restTemplate.getForObject(url, String.class);

}

}

yaml

spring:

application:

name: service-consumer # 消费者服务名称

server:

port: 8080 # 端口

4. 测试与验证

启动服务

Ø 启动Eureka Server(端口8761)

Ø 启动服务消费者(端口8080)

查看Eureka注册情况
访问 http://localhost:8761,确认服务提供者和消费者已注册。测试消费者调用
访问 http://localhost:8080/invoke,应返回服务提供者的响应“Hello from Service Provider”。负载均衡测试:启动第二个服务提供者实例,修改端口为8082。多次访问消费者的接口,观察请求被轮流分配到两个提供者实例。

常见问题解决

服务未注册:检查Eureka Server地址是否正确,确保客户端和服务端配置的defaultZone一致。UnknownHostException:确保RestTemplate使用了@LoadBalanced,且服务名称拼写正确。负载均衡不生效:确认多个提供者实例使用不同的端口且成功注册,检查Ribbon配置或切换至Spring Cloud LoadBalancer。

架构图

通过以上步骤,您已成功搭建了一个基于Eureka服务发现和Ribbon负载均衡的微服务系统。消费者通过服务名称调用提供者,实现了服务的动态发现与负载均衡。

来源:老客数据一点号

相关推荐