← 返回首页

Apache Dubbo微服务框架

📂 java ⏱ 2 min 215 words

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实现服务治理,是构建微服务架构的强力工具。