DII4J -- DII平台支持JAVA插件开发

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
推荐全链路深度定制开发平台,高级版 1个月
OpenSearch LLM智能问答版免费试用套餐,存储1GB首月+计算资源100CU
简介: DII4J是DII for Java的简称,是DII平台提供的一种Java插件的运行机制,在Java插件中,用户可以获取与C++插件完全一致的能力。

DII4J是什么?

DII是一个算法在线服务平台,定位于为算法和工程同学提供可定制化的在线服务解决方案。平台提供了数据回流、集群搭建、版本发布、日常运维等算法服务的全生命周期管控能力。DII在线服务框架支持丰富的表结构类型以及强大的多表检索能力,并提供灵活的插件机制,开发者只需专注于算法逻辑的实现,即可以实现一个完整的在线服务。目前DII已经在搜索、推荐、优酷、菜鸟等多个业务线广泛应用,平台的高性能和易用性得到了同学们的一致认可。但是长期以来,由于DII的插件开发只支持C++语言,Java的同学们只能望而却步,无法享受到平台的红利。但是从现在起,用户可以基于我们最新推出的DII4J直接在DII平台上使用Java来开发插件了DII4JDII for Java的简称,是DII平台提供的一种Java插件的运行机制,在Java插件中,用户可以获取与C++插件完全一致的能力。

DII4J_Introduction

DII4J怎么玩?

实现一个Java插件,用户只需继承DII4J的插件接口Dii4jModule并实现其中的init、cloneModule和process方法即可。假定有个业务需要一个类目预测服务,并且算法同学已经在离线挖掘出一份常用Query到类目映射的ODPS词表,作为一名资深Java开发,如何利用DII4J来构建出这么一个类目预测的在线服务呢?首先我们需要在DII平台上录入这张ODPS表,平台会自动完成从ODPS到在线KV表的回流,然后再来编写一个简单的DII4J模块,即可以完成整个功能。大致处理流程如下所示:

DII4J_example

示例插件的Java代码中,使用用户Query来查询本地KV表,并输出最终查询到的类目信息,如下所示:

import com.taobao.search.dii4j.framework.ProcessContext;
import com.taobao.search.dii4j.framework.ResultManager;
import com.taobao.search.dii4j.plugin.Dii4jModule;
import com.taobao.search.dii4j.util.AnyContainer;

public class SampleModule extends Dii4jModule {
    private String tableName;

    @Override
    public int init(AnyContainer conf) {
        tableName = conf.get("table").get("name").getAsString();
        if (null == tableName || tableName.isEmpty()) {
            return -1;
        }
        return 0;
    }

    @Override
    public Dii4jModule cloneModule() {
        SampleModule module = new SampleModule();
        module.tableName = tableName;
        return module;
    }

    @Override
    public int process(ProcessContext processContext, ResultManager resultManager) {
        tracer.info("start process");
        String query = processContext.getPara("query");
        if (null == query || query.isEmpty()) {
            tracer.warn("failed to get pare:[query]");
             return -1;
        }
        String cat = store.getString(tableName, query);
        if (null == cat) {
            tracer.warn("failed to get value with tableName:[%s] and query:[%s]", tableName, query);
            return -1;
        }
        AnyContainer result = resultManager.getContainer("result", AnyContainer.Type.MAP);
        result.add("cat", cat);
        return 0;
    }
}

DII平台上还提供了表数据更新的功能,来满足用户手动干预或实时更新词表的需求。

用户可以借助Store对象访问本地表,实现更加复杂的功能,同时,所有在Java开发环境中支持的二方包、三方包,都可以无障碍在DII4J中集成使用;各种Java调试工具的使用,也都是没有差异的。

DII4J还能怎么玩?

DII平台在推荐算法中有广泛应用,如:猜你喜欢等。一个典型的推荐在线服务架构如下所示:

DII4J_advance_old

对于猜你喜欢、手淘首页这样的大规模推荐场景,上面的架构既利用了IGRAPHBE和RTP各自强大的数据管理和计算能力,又充分发挥了TPP平台快捷访问第三方服务和组装业务逻辑的能力。但对于一些数据规模相对较小的新兴业务场景来说,如果需要分别部署和接入IGRAPH、BE、RTP、TPP多个系统才能搭建起一个类似的推荐在线服务,成本是非常高的。而有了DII4J之后,用户直接在DII平台就可以搭建起一个简单但功能完整的推荐在线服务,结构如下:

DII4J_advance_new

如上所述,DII4J提供的Java插件开发能力给DII平台的业务开发增添了许多可能性。DII4J还能怎么玩,期待大家发挥想象力,一起造起来!

目录
相关文章
|
12天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
35 2
基于Java+Springboot+Vue开发的服装商城管理系统
|
10天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
基于Java+Springboot+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的大学竞赛报名管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
24 3
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
|
11天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的蛋糕商城管理系统
基于Java+Springboot+Vue开发的蛋糕商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的蛋糕商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
21 3
基于Java+Springboot+Vue开发的蛋糕商城管理系统
|
11天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的美容预约管理系统
基于Java+Springboot+Vue开发的美容预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的美容预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
22 3
基于Java+Springboot+Vue开发的美容预约管理系统
|
12天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的房产销售管理系统
基于Java+Springboot+Vue开发的房产销售管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的房产销售管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
26 3
基于Java+Springboot+Vue开发的房产销售管理系统
|
13天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的反诈视频宣传系统
基于Java+Springboot+Vue开发的反诈视频宣传系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的反诈视频宣传管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
41 4
基于Java+Springboot+Vue开发的反诈视频宣传系统
|
11天前
|
存储 网络协议 Java
Java NIO 开发
本文介绍了Java NIO(New IO)及其主要组件,包括Channel、Buffer和Selector,并对比了NIO与传统IO的优势。文章详细讲解了FileChannel、SocketChannel、ServerSocketChannel、DatagramChannel及Pipe.SinkChannel和Pipe.SourceChannel等Channel实现类,并提供了示例代码。通过这些示例,读者可以了解如何使用不同类型的通道进行数据读写操作。
Java NIO 开发
|
13天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的医院门诊预约挂号系统
基于Java+Springboot+Vue开发的医院门诊预约挂号系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的门诊预约挂号管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
34 2
基于Java+Springboot+Vue开发的医院门诊预约挂号系统
|
14天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的家具管理系统
基于Java+Springboot+Vue开发的家具管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的家具管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
32 2
基于Java+Springboot+Vue开发的家具管理系统
|
13天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
577 6
下一篇
无影云桌面