Dubbo常用配置

基础环境

本文基于Spring Boot模块使用Dubbo

配置方式

以下配置方式,优先级从低到高排列

全局级配置,服务提供者

dubbo:  
  provider:  
    timeout: 2000

全局级配置,服务消费者

dubbo:  
  consumer:  
    timeout: 2000

服务级配置,服务提供者

package com.oliverclio.order.service;  
  
import com.oliverclio.api.order.dto.OrderDto;  
import com.oliverclio.api.order.service.OrderService;  
import com.oliverclio.order.mapper.OrderMapper;  
import lombok.AllArgsConstructor;  
import org.apache.dubbo.config.annotation.DubboService;  
  
@DubboService(timeout = 2000)  
public class OrderServiceImpl implements OrderService {  
  
    @Override  
    public void createOrder(OrderDto orderDto) {  
        System.out.println("createOrder invoked!");  
        System.out.println(orderDto.getUserId());  
        System.out.println(orderDto.getCommodityCode());  
        System.out.println(orderDto.getCount());  
    }  
}

服务级配置,服务消费者

package com.oliverclio.business.controller;  
  
import com.oliverclio.api.order.dto.OrderDto;  
import com.oliverclio.api.order.service.OrderService;  
import lombok.AllArgsConstructor;  
import org.apache.dubbo.config.annotation.DubboReference;  
import org.springframework.web.bind.annotation.PostMapping;  
import org.springframework.web.bind.annotation.RestController;  
  
@RestController  
@AllArgsConstructor  
public class BusinessController {  
  
    @DubboReference(timeout = 2000)  
    private OrderService orderService;  
  
    @PostMapping("purchase")  
    public String purchase(String userId, String commodityCode, Integer orderCount) {  
        OrderDto orderDto = new OrderDto();  
        orderDto.setUserId(userId);  
        orderDto.setCommodityCode(commodityCode);  
        orderDto.setCount(orderCount);  
        orderService.createOrder(orderDto);  
        return "ok";  
    }  
}

方法级配置,服务提供者

package com.oliverclio.order.service;  
  
import com.oliverclio.api.order.dto.OrderDto;  
import com.oliverclio.api.order.service.OrderService;  
import com.oliverclio.order.mapper.OrderMapper;  
import lombok.AllArgsConstructor;  
import org.apache.dubbo.config.annotation.DubboService;  
  
@DubboService(parameters = {  
        "createOrder.timeout", "2000"  
})  
public class OrderServiceImpl implements OrderService {  
    @Override  
    public void createOrder(OrderDto orderDto) {  
        System.out.println("createOrder invoked!");  
        System.out.println(orderDto.getUserId());  
        System.out.println(orderDto.getCommodityCode());  
        System.out.println(orderDto.getCount());  
    }  
}

方法级配置,服务消费者

package com.oliverclio.business.controller;  
  
import com.oliverclio.api.order.dto.OrderDto;  
import com.oliverclio.api.order.service.OrderService;  
import lombok.AllArgsConstructor;  
import org.apache.dubbo.config.annotation.DubboReference;  
import org.springframework.web.bind.annotation.PostMapping;  
import org.springframework.web.bind.annotation.RestController;  
  
@RestController  
@AllArgsConstructor  
public class BusinessController {  
  
    @DubboReference(parameters = {  
            "createOrder.timeout", "2000"  
    })  
    private OrderService orderService;  
  
    @PostMapping("purchase")  
    public String purchase(String userId, String commodityCode, Integer orderCount) {  
        OrderDto orderDto = new OrderDto();  
        orderDto.setUserId(userId);  
        orderDto.setCommodityCode(commodityCode);  
        orderDto.setCount(orderCount);  
        orderService.createOrder(orderDto);  
        return "ok";  
    }  
}

常用配置

  • 超时时间,timeout
  • 服务消费者在启动时是否检查服务提供者的存在,check
  • 容错机制,cluster
  • 重试次数,retries
  • 服务降级处理,mock
  • 负载均衡策略,loadbalance
  • 服务分组,group
  • 服务版本,version