前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Cloud LoadBalancer 的实战应用服务发现示例

Spring Cloud LoadBalancer 的实战应用服务发现示例

原创
作者头像
堕落飞鸟
发布2023-04-15 11:29:34
2610
发布2023-04-15 11:29:34
举报
文章被收录于专栏:飞鸟的专栏

为了更好地理解 Spring Cloud LoadBalancer 的实战应用服务发现,我们可以通过一个示例来演示其具体的应用。本示例基于 Spring Cloud Greenwich 版本和 Eureka 作为服务注册中心。

1. 创建服务提供者

首先,我们需要创建一个简单的服务提供者,提供一个 hello 接口,返回 "Hello, World!" 字符串。在 pom.xml 文件中添加如下依赖:

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

在配置文件中添加如下配置:

代码语言:javascript
复制
spring:
  application:
    name: service-provider
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

创建一个简单的 Controller 类,实现 hello 接口:

代码语言:javascript
复制
@RestController
public class ProviderController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }
}
2. 创建服务消费者

接下来,我们需要创建一个服务消费者,调用服务提供者的 hello 接口,并返回其结果。在 pom.xml 文件中添加如下依赖:

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

在配置文件中添加如下配置:

代码语言:javascript
复制
spring:
  application:
    name: service-consumer
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

创建一个简单的 Controller 类,实现 hello 接口:

代码语言:javascript
复制
@RestController
public class ConsumerController {

    @Autowired
    private LoadBalancerClient loadBalancerClient;

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/hello")
    public String hello() {
        ServiceInstance serviceInstance = loadBalancerClient.choose("service-provider");
        String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/hello";
        return restTemplate.getForObject(url, String.class);
    }
}
3. 启动

启动 Eureka 服务注册中心,在 pom.xml 文件中添加如下依赖:

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

在配置文件中添加如下配置:

代码语言:javascript
复制
server:
  port: 8761
spring:
  application:
    name: eureka-server
eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false
    fetch-registry: false

创建一个启动类,添加 @EnableEurekaServer 注解:

代码语言:javascript
复制
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

启动服务注册中心后,启动服务提供者和服务消费者。访问服务消费者的 hello 接口,可以看到输出了服务提供者返回的 "Hello, World!" 字符串。

通过 Eureka 的服务注册和发现,服务提供者和服务消费者实现了解耦,同时通过 Spring Cloud LoadBalancer,服务消费者可以自动实现负载均衡,以提高系统的可用性和性能。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 创建服务提供者
  • 2. 创建服务消费者
  • 3. 启动
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档