Apache Dubbo微服务框架
Apache Dubbo微服务框架
Apache Dubbo是阿里巴巴开源的高性能RPC框架,提供了服务注册、发现、负载均衡、容错等完整的服务治理能力。
核心架构
// Dubbo三层架构
// Service层:业务接口定义
// Protocol层:RPC协议(Dubbo、Triple)
// Transport层:网络传输(Netty)
服务提供者
接口定义
public interface OrderService {
Result<Order> createOrder(OrderDTO dto);
Result<List<Order>> queryOrders(String userId);
}
实现与暴露
@DubboService(version = "1.0.0", group = "order", timeout = 5000)
@Service
public class OrderServiceImpl implements OrderService {
@Autowired
private OrderMapper orderMapper;
@Override
public Result<Order> createOrder(OrderDTO dto) {
Order order = buildOrder(dto);
orderMapper.insert(order);
return Result.success(order);
}
@Override
public Result<List<Order>> queryOrders(String userId) {
List<Order> orders = orderMapper.findByUserId(userId);
return Result.success(orders);
}
}
配置文件
dubbo:
application:
name: order-service
registry:
address: nacos://localhost:8848
protocol:
name: dubbo
port: 20880
scan:
base-packages: com.example.order.service
服务消费者
@RestController
@RequestMapping("/api/orders")
public class OrderController {
@DubboReference(version = "1.0.0", group = "order",
timeout = 5000, retries = 2, loadbalance = "roundrobin")
private OrderService orderService;
@PostMapping
public Result<Order> createOrder(@RequestBody OrderDTO dto) {
return orderService.createOrder(dto);
}
@GetMapping("/{userId}")
public Result<List<Order>> queryOrders(@PathVariable String userId) {
return orderService.queryOrders(userId);
}
}
负载均衡策略
// Random:随机调用(默认),按权重设置概率
@DubboReference(loadbalance = "random")
// RoundRobin:轮询调用
@DubboReference(loadbalance = "roundrobin")
// LeastActive:最少活跃调用,慢的_provider自动减少权重
@DubboReference(loadbalance = "leastactive")
// ConsistentHash:一致性哈希,相同参数总是发到同一provider
@DubboReference(loadbalance = "consistenthash")
容错机制
// Failover:失败自动重试(默认)
@DubboService(retries = 2)
// Failfast:快速失败,只发起一次调用
@DubboService(cluster = "failfast")
// Failsafe:失败安全,忽略异常
@DubboService(cluster = "failsafe")
// Forking:并行调用多个provider,取最快结果
@DubboService(cluster = "forking", forks = 3)
服务治理
服务降级
@DubboReference(mock = "return null")
private OrderService orderService;
权重配置
@DubboService(weight = 200) // 权重200,默认100
public class OrderServiceImpl implements OrderService {
}
小结
Dubbo以高性能RPC为核心,结合Nacos实现服务治理,是构建微服务架构的强力工具。