业务中台逻辑

结城 Java 11 次阅读 515 字 发布于 2026-05-01 预计阅读时间: 2 分钟


✏️ 业务中台逻辑
一点点业务中台个人开发总结

对于频繁的数据处理,最优方式是设计统一的业务中台。

业务中台可以是抽象借口,有多个接口实现,所有的业务处理都走业务中台接口,也可以是一套统一通用的调用逻辑,但不推荐。

这是一个最简单的抽象业务中台。

public interface AssetBusinessService {
    /**
     * 执行业务处理
     * @param request 统一的资产变动请求(包含用户ID、变动金额、业务类型等)
     */
    void process(AssetChangeRequest request);

    /**
     * 获取支持的业务类型(如:RECHARGE, CONSUME, ADJUST)
     */
    BusinessTypeEnum getSupportedType();
}

例如用户资源扣减和充值、管理员调配。不同类型的业务他们可以有独立的接口实现。

例如,使用业务中台进行统一货币调配,记录业务日志。

中台统一调用逻辑

@Service
public class AssetMiddlesoftware {
    // 自动注入所有实现类
    @Autowired
    private List<AssetBusinessService> services;

    @Transactional(rollbackFor = Exception.class)
    public void execute(AssetChangeRequest request) {
        // 1. 记录前置业务日志(统一入口)
        log.info("开始处理业务: {}, 请求参数: {}", request.getBusinessType(), request);

        // 2. 找到对应的策略实现并执行底层逻辑
        AssetBusinessService service = services.stream()
                .filter(s -> s.getSupportedType() == request.getBusinessType())
                .findFirst()
                .orElseThrow(() -> new BusinessException("未定义的业务类型"));

        service.process(request);

        // 3. 统一货币扣减/增加逻辑(确保底层执行方式一致)
        assetCoreMapper.updateBalance(request.getUserId(), request.getAmount());

        // 4. 记录后置资产流水日志
        assetLogMapper.insert(new AssetLog(request));
    }
}

例如用户消耗100货币,那么用户消耗接口记录用户消耗日志,然后调用用户业务中台,业务中台扣减货币然后记录业务中台日志。

用户充值,管理员调配都类似。

对于充值接口,也可以制作一个抽象的充值接口,对接第三方平台的时候进行独立实现。

支付宝或者微信,虽然平台不同但底层调用相同,他们的具体实现是独立的。

给时光以生命,给岁月以文明
最后更新于 2026-06-15