让阿里再次伟大--钉钉如何长成独角兽的?

news2025/1/15 6:45:57

文章目录

    • 引子
    • 开端
    • 发展历程:从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万个。

这些年,钉钉做了哪些优化?

  1. 降低存储扩散量

最早的IM使用的是写扩散模型,这种模式也是在推特和微博常用的一种方案,很多IM早期时间都是借鉴这种方式。在一个万人群,如果是写扩展,一条消息需要写一万次收件箱。而优化成读扩散模型后,一条消息只需要写一次收件箱即可,扩散量降低到万分之一。

  1. 智能限流

当总体消息量超过系统阈值后,智能限流机制可以根据当时流量情况,对消息发送频率高的群进行限制,传统的限流如果不智能的话,就不可以做精细化控制,误杀程度高。

  1. 万人群成员多级缓存

万人群联系人列表也是一个性能点,在钉钉客户端、服务端做群成员的多级缓存,提高了at列表、查看群成员等场景的体验。同时可以降低对于DB的读写压力,提高了系统稳定性。

  1. 端到端体验保障

客户端定期做极限压测,在群消息大规模刷屏时,保障用户体验流畅不卡顿。

  1. 历史消息可回溯

在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系统中的应用实践

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/145460.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ArcGIS基础实验操作100例--实验58二维点、线转三维

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验58 二维点、线转三维 目录 一、实验背景 二、实验数据 三、实验步骤 (1&…

二、kubernetes集群环境搭建

文章目录1.前置知识点2.kubeadm 部署方式介绍3.安装要求4.最终目标5.集群环境6 初始化环境6.1 检查操作系统版本6.2 主机名解析6.3 时间同步6.4 禁用selinux6.5 禁用swap分区6.6 修改linux的内核参数6.7 配置ipvs功能6.8 安装docker6.9 安装Kubernetes组件6.10 准备集群镜像6.1…

多线程案例

日升时奋斗,日落时自省 目录 1、单例模式 1.1、饿汉模式 1.2、懒汉模式 1.3、饿汉和懒汉的线程安全 2、生产者消费者模型 2.1、理论解释 2.2、优势 2.3、阻塞队列代码解析 2.4、生产者消费者代码解析 2.5、简单实现阻塞队列代码解析 3、定时器 3.1、定时…

Java中String、StringBuffer 和 StringBuilder 的区别

1. String 字符串常量,字符串长度不可变。Java 中 String 是 immutable(不可变)的。 2. StringBuffer 1.如果要频繁对字符串内容进行修改,出于效率考虑最好使用 StringBuffer,如果想转成 String 类型,可以调…

论文笔记Neural Ordinary Differential Equations

论文笔记Neural Ordinary Differential Equations概述参数的优化连续标准化流(Continuous Normalizing Flows)生成式的隐轨迹时序模型(A generative latent function time-series model)这篇文章有多个版本,在最初的版…

嵌入式系统IO体系简述

前言: CPU的主要职责是负责运算,而计算机是需要各种外设的,否则无法和人进行交互。早期x86体系的CPU,需要使用前端总线(fsb)和北桥芯片相连,北桥再和南桥相连。南北桥是一种架构的划分&#xff…

数据结构与算法——算法分析(3)

算法的时间复杂度计算 算法基本操作执行的次数还会随着问题输入的数据集不同而不同 最坏时间复杂度:在最坏的情况下,算法的时间复杂度 平均时间复杂度:所有可能输入在等概率的情况下算法的期望运行时间 最好时间复杂度:在最好的…

企业内训方案|数据治理/项目管理/敏捷项目管理/产品管理

企业内训方案|数据治理/项目管理/敏捷项目管理/产品管理 》》数据治理 数据管理基础 数据处理伦理 数据治理 数据架构 数据建模和设计 数据安全 数据集成和互操作 文件和内容管理 参考数据和主数据 数据仓库和商务智能 元数据管理 数据质量 大数据和数据科学 数据管理成熟度评…

网络协议HTTP:了解Web及网络基础

文章整理自图书图解Http第一章:使用Http协议访问Web第二章:Http的诞生第三章:网络基础TCP/IP协议一:应用层二:传输层三:网络层四:链路层五:TCP/IP通信传输流第四章:IP、T…

http与https的区别我真的知道吗

之前每次看到类似“http与https的区别?”的问题时,都会自己思考一下答案,好像只是浅显地知道https比http安全,但究竟为什么更安全,却又似乎说不出个所以然,或者说很多细节地方自己都是不清楚的。为了搞清楚…

Linux权限shell命令以及运行原理

文章目录一、Linux权限的概念二、Linux权限管理2.1.文件访问者的分类(角色)2.2文件属性2.3文件访问权限的相关设置方法2.4访问者角色的修改2.5目录权限含义2.6默认权限三、粘滞位四、 shell命令以及运行原理一、Linux权限的概念 权限的概念通常是指行事…

ffmpeg录制H265格式的桌面视频

ffmpeg本身不支持H265,如果需要支持,需要事先编译出libx265,读者可以到libx265的官方网站https://www.videolan.org/developers/x265.html上找到下载地址,本人下载的是x265_3.5.tar.gz。 编译libx265时,定位到其目录下…

java基础 网络编程

网络编程概念: 让程序可以和网络上的其他设备中的程序进行数据交互。 网络通信基本模式: CS:Client-Server 自己写客户端和服务器交流 BS:Browser/Server 通过浏览器和服务器交流 实现网络编程关键的三要素…

python中的函数与变量

一、函数python中函数的基本格式则为:def函数名参数名函数体返回,python作为一门面向对象的语言,同样可分为类函数、实例函数。 # 定义一个函数 def add(x, y):"""函数的说明:param x: 参数x的作用:param y: 参数y的作用:return: 函数返…

碱性环境吸钯树脂技术

汞和贵金属的选择性去除回收离子交换树脂 Tulsimer CH-95S 是一款为了从工业废水中去除回收汞和贵金属而开发的螯合树脂。 Tulsimer CH-95S是一款拥有聚乙烯异硫脲官能基的大孔树脂,这种树脂对汞有的选择性。它也选择其他的贵金属,如黄金,铂…

消息收发弹性——生产集群如何解决大促场景消息收发的弹性降本诉求

作者:宸罡 产品介绍—什么是消息收发弹性 大家好,我是来自阿里云云原生消息团队的赖福智,花名宸罡,今天来给大家分享下阿里云 RocketMQ5.0 实例的消息弹性收发功能,并且通过该功能生产集群是如果解决大促场景消息收发…

JS in CSS:一键支持响应式布局

前言 如今网速不再成为适配移动端时选择响应式设计的限制因素,在资源充足的条件下,针对各端各自设计应用界面能达到应用最佳用户体验,毕竟不同类型的设备交互体验是不同的,但在团队前端资源拮据时,相比无脑自适应&…

基于Java+jquery+SpringMVC校园网站平台设计和实现

基于JavajquerySpringMVC校园网站平台设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联…

临时白名单

临时白名单介绍 相关常量 临时白名单列表介绍 前两个临时白名单可以豁免后台启动Service、豁免uid后台1min后进入idle状态等,最后一个临时白名单可以后台启动FGS。 // 由于高优先级消息而暂时允许逃避后台检查的一组应用程序 ID,短信/彩信 Composite…

【Vue路由】路由守卫、生命周期钩子、路由器工作模式

文章目录生命周期钩子案例实现总结路由守卫全局路由守卫独享守卫组件内守卫总结路由器的两种工作模式总结生命周期钩子 我们在News组件列表中的第一行加一个渐变文字。同时原来的路由缓存功能也要保存。 案例分析: 我们实现这个渐变的效果,是使用周期定…