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

今年的疫情来势汹汹,新冠病毒作为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的业务特性,实现冷热数据的分层存储以及弹性扩缩容能力,降低存储系统的运行成本,实现业务的可持续发展。

原文链接:https://developer.aliyun.com/article/772684?

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

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

  1. 钉钉授权时报获取钉钉用户信息失败,失败原因:访问ip不在白名单之中的解决办法

    前言 公司里的一个钉钉h5应用项目,进入里需要钉钉授权,提示:钉钉授权时报获取钉钉用户信息失败,失败原因:访问ip不在白名单之中的解决办法,这个错误有一段时间了,后来在官方的文档里找到解决方法 钉钉官 ...

  2. 手机投屏索尼电视显示无法访问服务器,钉钉视频会议投屏不成功是什么原因 钉钉视频会议如何屏幕共享...

    钉钉视频会议如何投屏到电视机.投影仪?钉钉视频会议投屏码在哪?钉钉投屏不成功怎么办?钉钉视频会议如何屏幕共享?钉钉是办公软件,有群直播功能,主要用来教学,但是钉钉视频会议功能不仅是免费的,而且很强大, ...

  3. 搜狗输入法回应误推地震信息;近亿人在钉钉上报健康情况;Rust 1.41.0发布 | 极客头条...

    整理 |郭芮 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的 ...

  4. 网站项目通过钉钉机器人向钉钉群发送信息

    项目使用场景描述 PC网站内填好的数据发送至钉钉群,以钉钉机器人卡片形式发送 样例如图: 开发思路 首先我使用的是vue前端和egg.js后端(基于node.js) 开发思路流程: 网页内填写数据(表 ...

  5. 钉钉企业内部应用获取登录用户信息

    1.创建企业内部应用 首先在钉钉开放平台注册企业内部应用. 选择[企业内部开发] 创建H5微应用 填写相关信息 企业内部H5微应用创建完成 2.接口开发前准备 开发前必读 了解不同应用所能支持的能力 ...

  6. 【“鲸智搭”入驻钉钉应用市场!三步走,教你轻松搭建流程表单】

    官宣! 鲸智无代码平台 "鲸智搭" 正式入驻钉钉服务市场 钉钉入驻企业可在工作台直接搜索试用 0门槛搭建流程表单,赋能企业提效 限时特惠:即日起开通, 可享受1个月免费试用特权! ...

  7. oracle定时器定时删除30天前的数据_使用 TDengine 存储能耗数据并通过钉钉机器人接收报警信息...

    小 T 导读:福建中海创集团(FUJIAN HISTRON)始创于1992年,是一家专业从事综合智能服务的大型企业集团.基于多年打造的"工业4.0"的核心技术.商业模式与产业链体系 ...

  8. linux 硬件告警信息,shell 操作钉钉机器人实现告警提醒

    我们知道,之前的运维告警多通过mail 等方式通知到相应的人员,难以实现随时随地的查看.随着手机app的发展,很多告警开始发送到im软件上去.目前比较常用的是发送到微信和钉钉上,今天我们将重点放在钉钉 ...

  9. Python封装发送信息到钉钉群

    发送信息到钉钉群 from dingtalkchatbot.chatbot import DingtalkChatbotclass SendText:def __init__(self, webhoo ...

最新文章

  1. 特朗普“模仿”奥巴马?进阶版换脸技术DeepFakes来了
  2. 面对重重问题 光伏扶贫路在何方?
  3. 设计模式的理解:享元模式 (Flyweight)
  4. hive增量表和全量表_hive 拉链表 实现全量数据 增量更新
  5. sql学习笔记---公用表达式(CTE)
  6. 谈谈yii2-gii如何自定义模板
  7. 《MySQL——事务》
  8. leetcode 69. x 的平方根 思考分析
  9. ios 内存管理的理解(一) 简述
  10. 用汇编的眼光看C++(之算术符重载)
  11. python3入门基础语法总结_Python基础语法总结(3)
  12. 2017c语言自学贴吧,【图片】17年1.9开启我的C语言学习之路—小白篇【c语言吧】_百度贴吧...
  13. 无法启动调试--未安装 Silverlight Developer 运行时。请安装一个匹配版本
  14. 树形目录生成器.bat
  15. 解决idea中http://java.sun.com/jsp/jstl/core“红色异常
  16. intelx79服务器芯片组,Intel X79 高速芯片组是什么
  17. Servlet、ServletConfig、ServletContext
  18. 【开源电机驱动】如何计算电机参数
  19. 算法学习01- 生兔子的问题
  20. 加入美团2021届北斗计划,用科技定义未来生活

热门文章

  1. 弃用官方网站!Python 将所有 Bug 迁移到 GitHub 中
  2. 一定是h的方式不对阅读_德国留学 ▏德国高速真要限速350km/h了?!
  3. 深度学习-Tensorflow2.2-tf.data输入模块{2}-tf.data输入实例-10
  4. linux桌面添加软件快捷方式,如何在 Ubuntu 桌面手动添加应用快捷方式
  5. mysql4.1加密_Java版Mysql4.1之前的old_password加密算法
  6. InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor
  7. 面试系列12 redis和memcached有什么区别
  8. 20175221曾祥杰 实验四《Android程序设计》
  9. python中的__iter__ __reversed__ __next__
  10. PREV-3_蓝桥杯_带分数