钉钉轻松顶住信息洪流的原因,竟然是它

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 在9月18日云栖大会上,阿里云智能高级技术专家木洛就为我们详细介绍了,表格存储Tablestore是如何助力钉钉消息存储架构的升级,帮助钉钉顶住持续增长的流量。

今年的疫情来势汹汹,新冠病毒作为2020最具代表性的黑天鹅事件,虽然引起了一系列不良的连锁反应,但是却让“停工不停业、停课不停学”成为了疫情时期的刚需。
在疫情期间钉钉下载量激增,直冲各大应用商城下载量榜首,同时在线人数最多达到了2亿人。即使现在各行业已经正常复工,但钉钉的下载与使用量仍保持一个高速的提升,截至目前为止已有3亿的用户和1500w的企业组织在上面进行工作和学习。

但在这飞速发展的背后,对于技术也自然提出了更高的要求,尤其IM作为钉钉的核心功能,随着用户应用的不断深入,因此在业务和系统上也迎来了更大的机遇和挑战。

在9月18日云栖大会上,阿里云智能高级技术专家木洛就为我们详细介绍了,表格存储Tablestore是如何助力钉钉消息存储架构的升级,帮助钉钉顶住持续增长的流量。

钉钉IM消息存储面临的业务挑战
1、用户对于产品的品质要求越来越高。在功能上,要求场景化、定制化;在体验上,需要多设备状态同步,历史消息漫游。另外,为了满足一些大型企业的沟通需求,还需要支持人数超过万人的大群。这些要求,都是一个企业级IM必须能够满足的。
2、疫情过后,钉钉IM系统规模快速扩大,日均消息突破千亿,高峰期消息发送TPS超过千万,消息的存储大小更是突破1个P,系统的水平扩展性和成本控制已经成为了目前的核心需要解决的问题。
3、企业经常会面临一些大规模复杂场景下的业务,如何能在这种情况下提供全年99.995%可用性,也是我们需要攻克的重要课题。

1.png

什么是表格存储
表格存储 Tablestore是提供集存储、搜索和分析多功能一体的一站式结构化数据存储平台,覆盖物联网和互联网下的多场景应用。表格存储TableStore采用与Google Bigtable类似的宽表模型,天然的分布式架构,能支撑高吞吐的数据写入以及PB级数据存储。同时其简单可靠的数据模型和架构,帮助企业数据在存储和计算系统之间自然地流转。

2.png

表格存储如何帮助钉钉实现升级
钉钉整个消息系统架构可以分为三层,分别是:消息端、接入层以及消息系统。在一个完整的信息流写入过程中,消息首先会从端发送到接入服务器,接入层将消息投递到消息系统后,消息系统会通过一个MQ(消息队列)来对消息进行异步处理,最后则会有一组消息处理服务器来处理消息。
而在消息处理阶段,又能分为存储、同步和通知三个步骤。首先系统会将消息持久化存储到存储库内以支持消息漫游,之后再通过写扩散或者读扩散的方式写入同步库内,最后消息索引库会异步地对消息存储库内的消息进行全文索引以支持消息在线检索。
这个架构下存储层的核心是三个库,也就是存储库、同步库和索引库。存储库存储全量消息,根据数据的冷热进行分层存储。同步库支持消息读写扩散写入,支持多端多位点实时拉取消息。索引库对消息及元数据进行索引,支持模糊查询以及消息全文检索。

3.png

而表格存储Tablestore之所以能承担了这三个库的存储,核心优势是:
一,表格存储Tablestore设计实现了Timeline模型,是专为IM/Feeds场景设计,可简化模型抽象和开发。
二,表格存储Tablestore单表能支持海量数据规模存储,冷热分层,支撑消息场景下PB级、万亿行规模低成本存储。
三,表格存储Tablestore分布式存储计算分离架构,可支撑每秒千万TPS扩散消息写,同时能达到毫秒级查询性能。
四,表格存储Tablestore具有Serverless服务形态,极致弹性,存储和计算按需扩容,满足低成本诉求。

达到的效果
在2020年,钉钉把原来的存储系统全量升级到表格存储TableStore,而表格存储Tablestore为钉钉提供了强大的建模能力和检索能力,高效地支撑复杂多样的业务功能实现。同时,其良好的水平拓展能力,也极好地满足了钉钉业务快速发展的需求。
另外,在成本控制上,表格存储Tablestore可根据IM的业务特性,实现冷热数据的分层存储以及弹性扩缩容能力,降低存储系统的运行成本,实现业务的可持续发展。

相关实践学习
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
相关文章
|
6月前
|
移动开发 测试技术 开发工具
【钉钉免登录】(详解)钉钉接口,H5微应用,钉钉免登录及获取当前用户信息
【钉钉免登录】(详解)钉钉接口,H5微应用,钉钉免登录及获取当前用户信息
273 1
【钉钉免登录】(详解)钉钉接口,H5微应用,钉钉免登录及获取当前用户信息
|
6月前
|
JSON API 数据格式
钉钉中,你可以使用API来获取文件或文件夹的信息
钉钉中,你可以使用API来获取文件或文件夹的信息
199 2
|
8月前
钉钉回传中文信息乱码怎么处理?
钉钉回传中文信息乱码怎么处理?
406 0
|
5月前
|
安全 小程序 API
在钉钉中,自己企业内系统的一些信息,想要通过上下游组织中的外部群进行传达,一般采取怎样的方式处理?
在钉钉中,自己企业内系统的一些信息,想要通过上下游组织中的外部群进行传达,一般采取怎样的方式处理?
53 0
|
6月前
|
JSON API 数据格式
在钉钉中,你可以使用API来获取文件或文件夹的信息
在钉钉中,你可以使用API来获取文件或文件夹的信息
80 2
|
8月前
|
小程序 PHP
获取钉钉小程序中用户的部门信息
获取钉钉小程序中用户的部门信息
231 0
|
SQL Shell 数据库
【Django | 开发】面试招聘信息网站(划分面试官权限&集成钉钉消息)
【Django | 开发】面试招聘信息网站(划分面试官权限&集成钉钉消息)
【Django | 开发】面试招聘信息网站(划分面试官权限&集成钉钉消息)
|
机器人 Java
Java后台推送告警信息到钉钉
Java后台推送告警信息到钉钉的实现
600 0
Java后台推送告警信息到钉钉
|
数据采集 供应链 机器人
Python - 抓取 iphone13 pro 线下店供货信息并发送到钉钉机器人,最后设置为定时任务
Python - 抓取 iphone13 pro 线下店供货信息并发送到钉钉机器人,最后设置为定时任务
390 0
Python - 抓取 iphone13 pro 线下店供货信息并发送到钉钉机器人,最后设置为定时任务
|
运维 jenkins Unix
Jenkins构建信息推送钉钉(个人定制)
公司内部持续集成用的Jenkins,办公通讯用的钉钉,代码维护用的GitLab。 持续集成的构建详情在日常开发中需要频繁查看,过程是否报错,提交的概要。 但是旧有的版本流程,只有记录了合入主干的时侯,输出一个签入签出的文本, 所以有时候还需要借助运维大佬帮忙找为毛失败,很浪费大伙的时间,成本太高。 所以我就在想,如何简化这个过程,让效率更高。 当看到钉钉支持卡片化和 markdown 化推送信息的时侯,我就知道游戏开始了。
368 0