业务扩展中台交互方案

前言

        之前整理过一篇关于商品中台的整体的设计逻辑:数据中台思考,关于高扩展部分,一期的建设时,采用了反射机制,落地过程中发现了诸多弊端。于是思考了关于这部分的一些方案。分别是Map扩展;反射扩展两种方式。如果哪位有其他方案,希望不吝赐教。

Map扩展

        在JD时,垂直域的扩展内容与中台的交互时,采用的便是Map类型,数据存储时,将扩展信息直接存放到Map类型的ext扩展字段中;数据查询时,可以从Map类型的ext字段中取出扩展信息进行相关的业务逻辑处理。

  • 优势
    • 中台可以灵活的兼容不同的垂直领域扩展属性
    • 系统设计的复杂度降低
  • 劣势
    • 可读性较差

实现方式

  • 扩展对象
public class BusinessObject {

    private Map<String, Object> ext;

    public BusinessObject() {
        this.ext = new HashMap<>();
    }

    /**
     * 获取扩展数据
     *
     * @return 获取扩展信息
     */
    public Map<String, Object> getExt() {
        return ext;
    }

    /**
     * 设置扩展数据
     *
     * @param ext 扩展
     */
    public void setExt(Map<String, Object> ext) {
        this.ext = ext;
    }

    /**
     * 添加单个扩展数据
     *
     * @param key   扩展字段名
     * @param value 扩展数据值
     */
    public void putExt(String key, Object value) {
        this.ext.put(key, value);
    }

    /**
     * 获取单个扩展数据
     *
     * @param key 扩展字段名
     * @return 扩展数据值
     */
    public Object getExtValue(String key) {
        return this.ext.get(key);
    }

}
  • 使用方式

        以sku数据为例,sku的基础数据为中台定义,同一对外提供标准,不同垂直领域的sku的扩展数据,在数据存储、查询交互时设置到ext的扩展对象中。

public class Sku {

    private Long skuId;
    
    private String skuName;

    private String skuCode;

    private String upc;

    private String logo;

    // ...

    private BusinessObject ext;
}

反射扩展

        当前这家公司,也在做中台建设,由于是以历史的项目为基础,提取抽象化中台能力,所以在扩展能力方面,使用了原有的能力,即使用了反射的方式,但此方式存在诸多的不方面,所以想要采用这种方式一定要慎重。

  • 优势
    • 可读性较好
  • 劣势
    • 增加反射的中间适配层,增加了系统的复杂度
    • 需要增加元数据管理系统能力,否则无法管理复杂的数据结构

实现方式

  • 返回

        clazz对象,在适配层指定,fieldName与value,存储在中台的属性表中,返回时,通过主数据id查询并返回,业务系统可定义对应的业务对象,通过反射的方式将数值设置到业务对象中。

public class ReflectionResult {
    public static void setFieldValue(Class<?> clazz, String fieldName, Object value) throws NoSuchFieldException, IllegalAccessException {
        // 获取指定名称的field
        Field field = clazz.getDeclaredField(fieldName);
        // 设置field的访问权限,允许私有字段访问
        field.setAccessible(true);
        // 给指定的field设置值
        field.set(object, value);
    }
}

总结

        平台化系统,如何向上做好扩展兼容,管理扩展数据,是中台必须解决的问题,目前我还没找到一个满意的答案。

        使用Map或反射的方式都不一定是好的方式,需要看业务的复杂度,从中找到比较好的答案,如果哪位大神有更好的方式,希望留言探讨,不吝赐教。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
中台系统设计说明书.pdf》是一份针对中台系统进行设计的文件。中台系统是指在企业内部或者跨企业之间建立起来的一个桥梁,用于管理和整合各个业务线的数据和流程。 这份设计说明书的主要目的是为了给开发团队提供一个详细的设计方案,以便他们能够按照该方案进行系统的开发和实施。在这份说明书中,会详细描述中台系统的结构、功能和架构,包括系统所包含的各个模块、数据流和交互过程等。 首先,这份设计说明书会明确中台系统的整体结构,包括前端展示层、数据处理层和后台管理层。通过这种模块化的设计,不仅能够提高系统的可维护性和扩展性,还可以保证系统的稳定和流畅的运行。 其次,说明书还会详细描述系统的各个功能模块,包括用户管理、数据管理、权限控制等。这些功能模块的设计要考虑到系统的需求和用户的实际操作,确保系统能够满足用户的各种需求。 此外,设计说明书还会对中台系统的数据流和交互过程进行详细的描述。通过这种方式,可以确保数据在系统内部的流转和交换是安全可靠的,同时也能够提高系统的性能和响应速度。 最后,设计说明书还会对中台系统的架构进行说明,包括使用的技术和工具,以及相应的开发和测试流程等。这些都是保证中台系统顺利开发和实施的重要环节。 综上所述,《中台系统设计说明书.pdf》是一份对中台系统进行详细设计的文件,包括结构、功能、模块、数据流和交互过程等方面的说明。通过这份说明书,开发团队可以按照设计方案进行系统的开发和实施。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值