文章目录
- 引子
- 开端
- 发展历程:从2014到2022
- 钉钉和阿里云的全面融合
- 钉钉体系架构
- 技术挑战
- ToB与ToC的差异
- 安全要求高
- 稳定性要求高
- 业务多样性
- 钉钉的创新
- 存储创新
- 单元化
- 平台开放
- 这些年,钉钉做了哪些优化?
- 钉钉的技术栈
- 钉钉的竞争对手们
- 飞书
- 微信
- 华为welink
- 未来
- 参考链接
引子
2021 年 1 月,钉钉宣布取得了个人用户数破 4 亿,服务 1700 万企业组织的成绩数据。钉钉在过去短短几年时间里,钉钉用户数迅猛增长。特别是在疫情期间,成了支撑亿万学生在线上课的不可或缺的产品。钉钉的用户覆盖各行各业,同时拥有大润发、中国联通、Intel中国、我爱我家、复星集团等标杆企业,在移动办公市场中的份额占比第一。包括阿里人在内,谁也没有想到,钉钉会成长为阿里的独角兽。本着好奇探究的目的,本文一一回顾了钉钉这些年的发展历程、核心技术和架构。
开端
2014年阿里来往社交之路失败,开始转向企业社交。2014年5月26日阿里巴巴钉钉创始人陈航(花名:无招)带领其他6位员工组成创始团队。
陈航, 花名无招,浙江杭州人,有11年海外工作经历。曾任惠普日本企业级搜索引擎产品的首席技术架构师和产品负责人。2010加入阿里巴巴,先后担任淘宝主搜索、一淘和来往的产品负责人。2014年,无招开始探索企业社交领域产品,带领团队研发了钉钉。
陈航是钉钉创始人,陈航与钉钉的故事,开始于 2013 年 10 月的一封邮件。彼时阿里创始人马云主导启动了社交平台 " 来往 ",将陈航指定为了这一新项目的负责人。
在阿里的前几年,由陈航掌舵的两个项目“一淘”和“来往”都没什么起色,铩羽而归的结局使他深刻感受到大公司创新的步步维艰。总结经验、重新沉淀他发现企业社交这片蓝海。创新之路充满荆棘,其中艰辛只有经历过的人才能感同身受。带着“求生”和“雪恨”的欲望,陈航携“钉钉”实现“王者归来”。他带领的钉钉团队也被外界称为“钉钉疯人院”,而这个“疯子”的定义是:疯狂而执着的产品主义者。
2021年7 月 9 日,36 氪报道称,陈航自卸任钉钉 CEO 后的最终去向尘埃落定——离职创业,聚焦跨境出海业务。陈航新成立的创业公司名为 " 两氢一氧(杭州)数字科技有限公司 "。相关信息显示,该公司经营范围涵盖进出口代理、各类商品批发等,似乎与跨境贸易、跨境电商等领域相关。
发展历程:从2014到2022
主要发展里程碑:
- 2015年1月,钉钉正式发布,第一天日活用户就稳定突破10万。
- 2015年12月,钉钉企业数超过100万家。
- 2016年3月,超150万家。
- 2016年9月,钉钉3.0上线。
- 2016年12月,突破300万家。
- 2017年6月,钉钉举办中国酷公司超级发布会
- 2017年9月,突破500万家
- 2017年11月,钉钉智连未来超级发布会
- 2017年12月,钉钉用户数超过一亿
- 2018年9月,钉钉入股蓝凌,补充大型企业服务生态
- 2018年12月9日,钉钉在北京召开2018年秋冬发布会公布了基于办公场景的“人、财、物、事”全链路数字化解决方案。宣布中国企业全面进入数字化办公时代。
版本 | 主要功能 |
---|---|
第一版1.0 2014年12月-2015年5月 | 企业通讯录、DING、免费通话 |
第二版2.0 2015年5月-2016年8月 | 协同办公:移动考勤、OA审批、日志、钉盘 |
第三版3.0 2016年9月-2017年9月 | 行业定制:行业专属定制、开放平台、外部联系人 |
第四版4.0 2017年10月-至今 | 智能线下:智能前台、智能投屏、智能云打印;与智能硬件结合,打破线上局限,解决线下场景 |
钉钉和阿里云的全面融合
钉钉总裁为叶军。云钉一体化战略: 将分散各处的钉钉事业部、办公协作软件TeamBition, 阿里云视频云团队, 数字政务中台事业部、用于交付政府项目乌鸫科技部分团队、研发SaaS应用构建平台的宜塔团队和阿里云智能云全面融合。
钉钉体系架构
钉钉的技术栈继承自阿里巴巴集团。阿里有着”大中台,小前台“的组织战略,所以钉钉在大的框架上是复用集团的能力,包括集团的中间件、存储引擎、微服务框架等。在此之上,钉钉聚焦在核心能力的研发,比如:IM 核心系统、系统单元化、音视频通讯,弱网优化,图片收发极致体验等等。
钉钉作为 ToB 产品,业务场景跟 ToC 的 IM 产品有很大区别,架构上也各有侧重。
在钉钉的IM中,通过 RocketMQ实现了系统解耦、异步削峰填谷,还通过定时消息实现分布式定时任务等高级特性。同时与 RocketMQ 深入共创,不断优化解决了很多RocketMQ本身的问题,并且孵化出 POP 消费模式等新特性,使 RocketMQ 能够完美支持对性能稳定性和时延要求非常高的 IM 系统。
技术挑战
ToB与ToC的差异
作为企业级应用,需要保证帮助用户提升沟通体验。
ToB 的工作沟通和 ToC 的场景生活沟通存在较大差异, ToC的IM产品比如微信,在有完整的关系链后,只需满足大部分用户需求即可。
然而微信的很多体验其实并不友好:比如聊天消息中的视频图片在固定时间内没有打开则会无法下载,卸载重装之后聊天记录全部丢失。
而 ToB 场景下:聊天记录是非常重要的内容,钉钉为保证用户消息不丢失,提供了多端同步和消息云端存储的能力,用户任意换端都能查看完整的聊天记录。
在工作过程中,大量会议是工作效率杀手,钉钉还提供了已读、Ding 等效率套件,为工作沟通提供新选项。
安全要求高
在ToB 的工作场景下,用户对信息安全要求非常高,信息安全是企业的生命线。
钉钉提供了人和组织架构打通的工作群,用户离开组织后自动退出企业工作群,这样就很好地保障了企业信息的安全。
同时,在已经支持的全链路加密能力上提供了三方加密能力,可以最大程度保障企业用户的信息安全性。
稳定性要求高
企业用户对稳定性的要求也非常高,如果钉钉出现故障,深度使用钉钉的企业都会受到巨大影响。
因此,钉钉 IM 系统在稳定性上也做了非常深入的建设,架构上对依赖和流量做了深入治理,核心能力所有依赖都为双倍。
比如虽然 RocketMQ 已经非常稳定,也没有发生过故障,但是对 RocketMQ 可能出现故障的产品依然做了很好的保护,使用 RocketMQ 定时消息和堆积能力做热点治理和流量防护,让系统面对大规模流量时能从容应对,并且建设了异地多活和可弹性扩缩容能力,疫情期间很好地保证了学生们的在线课堂。
在稳定性机制上,常态化容灾演练、突袭演练、自动化健康巡检等也能很好地保证线上稳定性。比如波浪式流量就是在做断网演练时发现。
业务多样性
针对不同行业的业务多样性,还要尽可能地满足用户的通用性需求,比如万人群、全员群等,目前钉钉已经做到能够支持 10 万人级别的群。
更多的业务需求将依赖于我们抽象出的通用开放能力,将 IM 能力尽可能地开放给企业和三方 ISV,使得不同形态的业务都能在钉钉平台上得到满足 。
钉钉的创新
钉钉主要能力如下:
存储创新
由于消息需要长期保存,钉钉做存储的一个重点必然是降低长期数据的存储成本。钉钉在其中做了很多事情,比如冷热分离,读写扩散,消息清理。没有成本上的优化,业务的增长带来的是不可持续的成本增长,这是无法接受的。
单元化
单元化可以满足多层需求:
高可用:钉钉保障vip用户的地域级别容灾能力,钉钉设计了一套基于单元化异地容灾方案,当中心机房宕机,两分钟内一键把vip用户调度到容灾单元,保障用户正常使用IM;
国际化:海外地区对于数据有合规要求,钉钉在当地部署应用,给海外用户提供了流畅的用户体验。
支持大客户及特殊行业:钉钉不仅承接了中小企业沟通办公需求,还承接不少政企用户,他们有私有化部署的需求,需要钉钉具备云部署能力。
容量:随着业务发展,所有流量在中心机房处理,扩展性差,把流量分散到多个地域是一个必然选择。
平台开放
除了自身服务分级收费外,钉钉另一个收入来源是基于开放平台的"流量变现"。通过提供开放平台给SaaS应用和硬件产品,钉钉再从中收取10%的佣金,钉钉将成为一个面向企业的“超级应用”。目前平台已经有500万个低代码应用,预计一年后超过1000万个。
这些年,钉钉做了哪些优化?
- 降低存储扩散量
最早的IM使用的是写扩散模型,这种模式也是在推特和微博常用的一种方案,很多IM早期时间都是借鉴这种方式。在一个万人群,如果是写扩展,一条消息需要写一万次收件箱。而优化成读扩散模型后,一条消息只需要写一次收件箱即可,扩散量降低到万分之一。
- 智能限流
当总体消息量超过系统阈值后,智能限流机制可以根据当时流量情况,对消息发送频率高的群进行限制,传统的限流如果不智能的话,就不可以做精细化控制,误杀程度高。
- 万人群成员多级缓存
万人群联系人列表也是一个性能点,在钉钉客户端、服务端做群成员的多级缓存,提高了at列表、查看群成员等场景的体验。同时可以降低对于DB的读写压力,提高了系统稳定性。
- 端到端体验保障
客户端定期做极限压测,在群消息大规模刷屏时,保障用户体验流畅不卡顿。
- 历史消息可回溯
在ToB场景下,数据是企业的资产,企业对于历史消息有查询需求,这和ToC产品的消息又不太一样,比如微信的离线消息是存在客户端的,清空就没有了。
如何做好庞大历史消息的查询需求呢?需要解决低流量且消息不遗漏。
钉钉的技术栈
TODO. 目前公开资料比较少。只有一些粗略的信息:
- 微信和钉钉后台主要是 C++ 和 Java 混合开发
- 钉钉PC 客户端最新版Dutter,基于Flutter 跨四端设计,支持Android, iOS, MacOS和windows
- 飞书的前身是 Lark ,后端语言多了 Golang,前端还是一样。至于飞书有没有变化我不太清楚。
- Skype 后端不清楚,不过我估计大概率也是有 C++,前端是 Electron。
钉钉的竞争对手们
飞书
飞书是字节跳动于2016年自研的新一代一站式协作平台,是保障字节跳动全球数万人高效协作的办公工具。 飞书将即时沟通、日历、云文档、云盘和工作台深度整合,通过开放兼容的平台,让成员在一处即可实现高效的沟通和流畅的协作,全方位提升企业效率。
微信
2016年腾讯发布企业微信。发力toB领域。
华为welink
华为有19万员工,遍布全球170多个国家和地区。他们是如何高效地联系、工作?这一切都源于华为背后的智能工作平台——WeLink,集打卡、资讯、日程管理、会议、办公协作于一身华为云WeLink。
2017年,WeLink 1.0在华为上线,提供会议、消息、邮件、待办审批、知识共享各种功能,为全球华为员工带来了一个智能高效的协作工具和平台。
2021年12月26日,华为云正式发布智能工作平台WeLink,入局企业级的智能办公赛道。WeLink也来自华为内部数字化办公转型实践,在商业化之前华为已经使用了3年。
未来
- 钉钉要抓紧和语雀完成融合。
- 多设备消息漫游:同时支持手机、pad、pc
- 国际化:多语言、支持国际定位POI、支持国际
- 电话:支持GCM消息推送
- 安全可靠:核心应用99.99%可用性
- SaaS平台:提供应用市场平台,为企业个性化定制微应用
参考链接
- 飞书
- 企业级IM王者——钉钉在后端架构上的过人之处
- 钉钉——基于IM技术的新一代企业OA平台的技术挑战和实战
- 深度揭密RocketMQ在钉钉IM系统中的应用实践