今年的疫情来势汹汹,新冠病毒作为2020最具代表性的黑天鹅事件,虽然引起了一系列不良的连锁反应,但是却让“停工不停业、停课不停学”成为了疫情时期的刚需。
在疫情期间钉钉下载量激增,直冲各大应用商城下载量榜首,同时在线人数最多达到了2亿人。即使现在各行业已经正常复工,但钉钉的下载与使用量仍保持一个高速的提升,截至目前为止已有3亿的用户和1500w的企业组织在上面进行工作和学习。
但在这飞速发展的背后,对于技术也自然提出了更高的要求,尤其IM作为钉钉的核心功能,随着用户应用的不断深入,因此在业务和系统上也迎来了更大的机遇和挑战。
在9月18日云栖大会上,阿里云智能高级技术专家木洛就为我们详细介绍了,表格存储Tablestore是如何助力钉钉消息存储架构的升级,帮助钉钉顶住持续增长的流量。
钉钉IM消息存储面临的业务挑战
1、用户对于产品的品质要求越来越高。在功能上,要求场景化、定制化;在体验上,需要多设备状态同步,历史消息漫游。另外,为了满足一些大型企业的沟通需求,还需要支持人数超过万人的大群。这些要求,都是一个企业级IM必须能够满足的。
2、疫情过后,钉钉IM系统规模快速扩大,日均消息突破千亿,高峰期消息发送TPS超过千万,消息的存储大小更是突破1个P,系统的水平扩展性和成本控制已经成为了目前的核心需要解决的问题。
3、企业经常会面临一些大规模复杂场景下的业务,如何能在这种情况下提供全年99.995%可用性,也是我们需要攻克的重要课题。
什么是表格存储
表格存储 Tablestore是提供集存储、搜索和分析多功能一体的一站式结构化数据存储平台,覆盖物联网和互联网下的多场景应用。表格存储TableStore采用与Google Bigtable类似的宽表模型,天然的分布式架构,能支撑高吞吐的数据写入以及PB级数据存储。同时其简单可靠的数据模型和架构,帮助企业数据在存储和计算系统之间自然地流转。
表格存储如何帮助钉钉实现升级
钉钉整个消息系统架构可以分为三层,分别是:消息端、接入层以及消息系统。在一个完整的信息流写入过程中,消息首先会从端发送到接入服务器,接入层将消息投递到消息系统后,消息系统会通过一个MQ(消息队列)来对消息进行异步处理,最后则会有一组消息处理服务器来处理消息。
而在消息处理阶段,又能分为存储、同步和通知三个步骤。首先系统会将消息持久化存储到存储库内以支持消息漫游,之后再通过写扩散或者读扩散的方式写入同步库内,最后消息索引库会异步地对消息存储库内的消息进行全文索引以支持消息在线检索。
这个架构下存储层的核心是三个库,也就是存储库、同步库和索引库。存储库存储全量消息,根据数据的冷热进行分层存储。同步库支持消息读写扩散写入,支持多端多位点实时拉取消息。索引库对消息及元数据进行索引,支持模糊查询以及消息全文检索。
而表格存储Tablestore之所以能承担了这三个库的存储,核心优势是:
一,表格存储Tablestore设计实现了Timeline模型,是专为IM/Feeds场景设计,可简化模型抽象和开发。
二,表格存储Tablestore单表能支持海量数据规模存储,冷热分层,支撑消息场景下PB级、万亿行规模低成本存储。
三,表格存储Tablestore分布式存储计算分离架构,可支撑每秒千万TPS扩散消息写,同时能达到毫秒级查询性能。
四,表格存储Tablestore具有Serverless服务形态,极致弹性,存储和计算按需扩容,满足低成本诉求。
达到的效果
在2020年,钉钉把原来的存储系统全量升级到表格存储TableStore,而表格存储Tablestore为钉钉提供了强大的建模能力和检索能力,高效地支撑复杂多样的业务功能实现。同时,其良好的水平拓展能力,也极好地满足了钉钉业务快速发展的需求。
另外,在成本控制上,表格存储Tablestore可根据IM的业务特性,实现冷热数据的分层存储以及弹性扩缩容能力,降低存储系统的运行成本,实现业务的可持续发展。