Skip to content

2024年7月29日 工作任务

1. 学习微服务架构的基本概念和优缺点

微服务架构的基本概念

  • 微服务 是一种架构风格,将单一应用程序划分为一组小的服务,分别独立运行,每个服务围绕业务能力构建,通过轻量级机制(通常是 HTTP API)进行通信。

优缺点

优点:

  • 模块化和独立性: 每个微服务都可以独立开发、部署和扩展。
  • 技术多样性: 可以根据需要选择不同的技术栈。
  • 故障隔离: 一个服务的故障不会导致整个系统的崩溃。

缺点:

  • 系统复杂性增加: 需要处理跨服务的协调、数据一致性和通信问题。
  • 分布式系统挑战: 包括网络延迟、消息传递可靠性等。

2. 使用 Spring Cloud 搭建微服务应用

构建步骤

  1. 创建 Spring Boot 项目: 每个微服务作为一个独立的 Spring Boot 应用。
  2. 集成 Spring Cloud: 使用 Spring Cloud 提供的组件,如服务注册、配置管理等。

代码示例

创建一个简单的微服务项目:

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

3. 学习服务注册与发现(Eureka),负载均衡(Ribbon)

Eureka

Eureka 是 Netflix 提供的服务注册与发现组件,用于在云环境中管理微服务实例。

Eureka Server 配置示例

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

Ribbon

Ribbon 是一个负载均衡客户端,适用于微服务架构。

Ribbon 使用示例

通过 @LoadBalanced 注解和 RestTemplate 使用 Ribbon 进行客户端负载均衡:

java
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
    return new RestTemplate();
}

4. 实现简单的微服务通信和调用

使用 Feign 进行服务间通信

Feign 是一个声明式的 Web 服务客户端,它使得微服务之间的通信更加简单。

Feign 客户端示例

java
@FeignClient(name = "example-service")
public interface ExampleServiceClient {
    @GetMapping("/example")
    String getExampleData();
}

在服务中使用 Feign 客户端

java
@Service
public class ExampleService {
    private final ExampleServiceClient exampleServiceClient;

    public ExampleService(ExampleServiceClient exampleServiceClient) {
        this.exampleServiceClient = exampleServiceClient;
    }

    public String fetchExampleData() {
        return exampleServiceClient.getExampleData();
    }
}