一个组织创建后工作台发生了什么

一、业务介绍

当管理员在钉钉创建出一个组织后,工作台会发生什么样的变化?工作台又是如何实现千人千面的?工作台如何解决初始化的性能问题?今天这篇文章来分享工作台初始化的一些技术实践。

二、产品流程

三、竞品对标

产品特征/对标

企业微信工作台

飞书工作台

钉钉工作台

产品

角色工作台

不支持

不支持

支持

行业模板

不支持

不支持

支持

创建速度

管理能力

动态卡片能力

四、时序图

从高度抽象模块来说,主要分成了以下几个步骤:

  1. 监听通讯录组织创建消息
  2. 查询命中的模板
  3. 创建工作台门户对象
  4. 生成模板对象Schema数据结构
  5. 异步安装依赖的资源
  6. 资源回写Schema数据结构
  7. 发布工作台

具体时序图如下图所示:

五、核心技术难点

如何实现千行千面

理论上来说,对于不同的用户来创建组织,要形成一些的规则来命中指定的模板,就可以实现千行千面。实现的方式有多种,但是一般来说除了算法的叠加外,可以采用一些通用性的规则:

  • 基于行业的模板命中规则

即配置行业和模板的对应关系,当组织选择了特定行业,直接加载对应的模板

  • 基于人数的模板命中规则

即配置用户创建组织选择的规模人数,来选择对应的模板。一般用于解决特定的大组织架构问题

  • 基于组织来源的模板命中规则

即根据组织创建时选择的渠道码,来选择对应的模板,这种一般用于线下部署有指定来源的情况,这种更为精准,用于地推业务场景

  • 基于ABTEST的模板中规则

用于对于同一个规则下,配置一个或者多个模板,主要用于控制变量来确认不同模板对于同类对象的效果

  • 算法规则

根据用户登录钉钉的已有行为(诸如已创建的组织)来实现算法推荐用户工作台模板,不过经验证,在2B类的场景里,纯算法适用场景相对不多,还是要结合组织和用户特征做较为精准的规则匹配更为合适

如何解决性能瓶颈

许多研究都表明,用户最满意的打开网页时间,是在2秒以下。
用户能够忍受的最长等待时间的中位数,在6~8秒之间。这就是说,8秒是一个临界值。

文章:网页打开速度的心理学 - 阮一峰的网络日志

第一个难点就是性能问题,如何在管理员初始化组织之后,能够较快的初始化出组织工作台是一个极大的挑战。

由于需要初始化一个工作台,一般需要执行几个步骤:

  • 初始化布局
  • 初始化官方应用开通
  • 初始化三方应用营销态
  • 初始化应用内实例
  • 更新OAURL
  • 四端推送
  • ...

由于行业化本身比较复杂,需要实现各种资源分发逻辑,因此实际验证下来需要5秒以上才能完成整个工作台的初始化。因此这个时间是个用户极度体验不好的时间。

其中有三个入手优化点,第一是异步化创建工作台,第二个方式是提供足够多产品引导,第三个就是工作台本身资源异步初始化。

  • 异步化创建工作台

异步化创建工作台比较好理解,即当用户选择好行业、规模、角色后,就发送出异步消息,服务端线上监听异步组织创建消息开始进行初始化。从同步创建工作台优化成异步创建工作台。这也是最简单最容易想到的一个方案,也是用消息解耦的一个典型用例。

  • 优化产品引导

第二个方式是从产品上的引导,由于组织命中的千行千面数据需要同步复制到目标组织,往往由于应用的开通、模板的生成、布局的生成等造成复制耗时极高。在性能问题无法较好解决前,可以通过添加产品引导来优化链路。比如一些存储系统上传或者下载文件就会有明显的loading态来提示用户。

  • 异步生产工作台资源

第三个方式是先基于完全复制或者部分复制生成组织的模板,先展现给用户,然后异步线程去开通应用、模板的生成等。

如何解决初始化依赖未完成问题

这是一个理论上不会出现,但是实际上经常会出现的问题。即工作台初始化依赖了大量的外部调用,比如查询组织通讯录管理员、查询通讯录用户数、查询微应用等。往往因为初始化的时候,由于通讯录、微应用本身逻辑复杂而形成大量的模块内异步调用,因此在生成工作台的时候,往往会因为外部依赖查询异常而导致工作台本身异常,比如查不到管理员就无法开通应用。因此解决思路有如下:

  • 降低外部依赖

一个很简单的方式,就是降低外部依赖,比如可以将从消息体中取得管理员的信息;

  • 消息重试

采用消息队列的自动重试机制,当处理逻辑发生异常时,向外抛异常来解决;这里要尤其注意,大部分消息中间件有重试时延,如果时延过长会导致整体工作台创建链路严重延迟

  • 内存重试

内存模板化代码,在强依赖外部接口的方式使用内存重试,可以设定重试次数、重试间隔等。

思考

工作台作为组织数字化的入口,承载非常重要的入口和协同功能,因此如何快速给结合用户特点初始化一个个性化的组织工作台,是非常重要的。

更多文章,关注公众号:ali老蒋。 或访问网站查看更多精彩原文:java开发者icon-default.png?t=M4ADhttp://www.javaer.com.cn/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值