Java微服务架构:从单体到分布式
Java微服务架构:从单体到分布式
概述
微服务架构是一种将应用拆分为小型、独立服务的架构模式。每个服务运行在自己的进程中,通过轻量级机制通信。
1. 微服务概念
// 单体架构:所有功能在一个应用中
// 微服务架构:每个模块是独立的服务
// user-service: 用户管理
// order-service: 订单管理
// payment-service: 支付管理
// inventory-service: 库存管理
2. 服务注册与发现
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@EnableDiscoveryClient
@SpringBootApplication
public class UserServiceApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
}
3. 服务间通信
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.cloud.openfeign.FeignClient;
@EnableFeignClients
@SpringBootApplication
public class OrderServiceApplication {
}
@FeignClient(name = "user-service")
public interface UserClient {
@GetMapping("/api/users/{id}")
User getUserById(@PathVariable Long id);
}
@Service
public class OrderService {
private final UserClient userClient;
public OrderService(UserClient userClient) {
this.userClient = userClient;
}
public Order createOrder(Long userId, Order order) {
User user = userClient.getUserById(userId);
return order;
}
}
4. API网关
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
@Configuration
public class GatewayConfig {
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("user-service", r -> r
.path("/api/users/**")
.uri("lb://user-service"))
.route("order-service", r -> r
.path("/api/orders/**")
.uri("lb://order-service"))
.build();
}
}
5. 熔断器
import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;
@Service
public class ResilienceService {
@CircuitBreaker(name = "userService", fallbackMethod = "fallback")
public User getUserFromRemoteService(Long id) {
return userClient.getUserById(id);
}
public User fallback(Long id, Exception e) {
return new User(id, "默认用户");
}
}
最佳实践
- 服务拆分合理:按业务领域拆分服务
- API设计规范:RESTful风格,版本控制
- 使用容器化:Docker + Kubernetes部署
- 监控和日志:分布式链路追踪
- 数据一致性:最终一致性,避免分布式事务
总结
微服务架构是现代应用开发的主流架构,掌握微服务的核心概念和工具,可以构建出高质量的分布式系统。