黑马微服务学习笔记—Spring Cloud

随着微服务架构的兴起,Spring Cloud作为微服务开发的一套重要框架,得到了广泛的应用。它为我们提供了一系列工具,可以帮助我们轻松地构建分布式系统,并处理服务之间的通信、配置管理、负载均衡等一系列问题。在这篇学习笔记中,我将介绍Spring Cloud的基础知识以及一些常用模块,配合代码示例,帮助大家更好地理解和使用Spring Cloud。

一、Spring Cloud概述

Spring Cloud是一个基于Spring Boot的微服务开发框架,旨在为开发者提供一整套开发工具和组件。其主要的功能包括:

  1. 服务注册与发现:使用Eureka实现服务的注册与发现。
  2. 负载均衡:使用Ribbon和Feign支持服务间的负载均衡。
  3. 配置管理:Spring Cloud Config帮助我们实现集中管理配置文件。
  4. 服务熔断与降级:使用Hystrix实现服务的熔断与降级机制。
  5. API网关:使用Zuul或Gateway作为服务的网关。

二、Eureka服务注册与发现

Eureka是Netflix开源的服务注册与发现工具。在Spring Cloud中,Eureka Server和Eureka Client的搭建非常简单。以下是一个基本的Eureka Server的示例。

1. 创建Eureka Server

首先,我们创建一个Spring Boot项目,依赖于spring-cloud-starter-eureka-server

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

在主应用类上添加@EnableEurekaServer注解:

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

application.yml中添加Eureka相关配置:

server:
  port: 8761

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false

2. 创建Eureka Client

在Eureka Client项目中,添加以下依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka-client</artifactId>
</dependency>

同样在主应用类上添加@EnableEurekaClient注解,并在application.yml中配置Eureka Server的地址:

spring:
  application:
    name: demo-service

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

三、Feign负载均衡

Feign是一个声明式的HTTP客户端,可以让我们更方便地调用其他微服务。我们在Eureka Client中添加spring-cloud-starter-openfeign依赖。

使用Feign

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

在主应用类上添加@EnableFeignClients注解:

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class DemoServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoServiceApplication.class, args);
    }
}

创建Feign接口:

@FeignClient(name = "other-service")
public interface OtherServiceClient {
    @GetMapping("/api/data")
    String getData();
}

使用Feign的Controller

@RestController
@RequestMapping("/api")
public class DemoController {

    @Autowired
    private OtherServiceClient otherServiceClient;

    @GetMapping("/data")
    public String fetchData() {
        return otherServiceClient.getData();
    }
}

四、总结

通过以上的示例,我们简单演示了Spring Cloud中Eureka的服务注册与发现和Feign的负载均衡。Spring Cloud提供了许多便利的工具,大大加速了微服务架构的开发过程。在之后的学习中,我们可以逐渐加入更多的功能模块,如Hystrix熔断、Zuul网关和Spring Cloud Config等,使我们的微服务系统更加健壮和灵活。希望这份学习笔记能够帮助到大家,助力在微服务架构的学习与应用上不断深入。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部