钉钉架构设计

钉钉架构设计
www.zeeklog.com  - 钉钉架构设计

钉钉架构设计方案

万人群高流量支撑

IM场景下万人群的高流量支撑是非常有挑战的事情。为了解决这个问题,钉钉进行了以下优化:

  1. 降低存储扩散量

    • 最初使用的是写扩散模型,一条消息需要写一万次收件箱。
    • 优化成读扩散模型后,只需要写一次收件箱,扩散量降低到万分之一。
  2. 智能限流

    • 当总体消息量超过系统阈值时,智能限流机制可以根据当前流量情况对群进行限制,防止误杀。
  3. 万人群成员多级缓存

    • 在钉钉客户端和服务端做群成员的多级缓存,提高了at列表和查看群成员等场景的体验,并降低了DB的读写压力,提高了系统稳定性。
  4. 端到端体验保障

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

历史消息可回溯

在ToB场景下,数据是企业的资产。企业对于历史消息有查询需求,而微信的离线消息是存在客户端的,清空就没有了。钉钉通过将近时消息推送到客户端本地,历史消息在服务端进行处理,保证消息无遗漏地同步下来。

场景化支持

ToC IM产品场景化都比较通用,但钉钉针对不同场景体验做了不同支持。这带来了以下挑战:

  1. 系统模型必须扩展性强:可以灵活、快速支持业务场景化需求。
  2. 在保障支持业务快速的情况下,保持IM核心系统高可用。

以钉钉班级群为例,使用小程序开发,可以不发版做bugfix,实现业务需求迭代。服务端切分为业务层和Im Core层,实现了新需求不改动Im Core层,从而达到业务和技术共同迭代的目的。

单元化

单元化满足了多层需求:

  1. 高可用:钉钉保障vip用户的地域级别容灾能力,设计了一套基于单元化异地容灾方案。
  2. 国际化:海外地区对于数据有合规要求,当地部署应用,提供流畅的用户体验。
  3. 支持大客户及特殊行业:钉钉不仅承接了中小企业沟通办公需求,还承接不少政企用户,需要具备云部署能力。
  4. 容量:随着业务发展,扩展性差,把流量分散到多个地域是一个必然选择。

钉钉通过一套代码部署、一套运维体系实现了单元化,满足了上层多种需求。技术团队开发了一系列基础设计,如动态路由、业务层数据同步组件等,可以将钉钉部署在任一国家、地区,甚至用户的自有机房。

Read more

超快速,使用ChatGPT编写回归和分类算法

超快速,使用ChatGPT编写回归和分类算法

本文将使用一些 ChatGPT 提示,这些提示对于数据科学家在工作时非常重要。 微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩 以下是一些示例ChatGPT 提示的列表以及数据科学家的响应。 ChatGPT 提示 为决策树回归算法生成 python 代码。 下面是使用scikit-learn在 Python 中进行决策树回归的示例代码: import numpy as np import matplotlib.pyplot as plt from sklearn.tree import DecisionTreeRegressor # Generate random data rng = np.random.default_rng() x = 5 * rng.random(100) y = np.sin(x) + 0.

By Ne0inhk
力扣每日一题:993.二叉树的堂兄弟节点 深度优先算法

力扣每日一题:993.二叉树的堂兄弟节点 深度优先算法

993.二叉树的堂兄弟节点 难度:简单 题目: 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。 如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。 我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。 只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。 示例: 示例 1: 输入:root = [1,2,3,4], x = 4, y = 3 输出:false

By Ne0inhk
1239.串联字符串的最大长度 关于字符串的回溯算法!

1239.串联字符串的最大长度 关于字符串的回溯算法!

题目: 给定一个字符串数组 arr,字符串 s 是将 arr 某一子序列字符串连接所得的字符串, 如果 s 中的每一个字符都只出现过一次,那么它就是一个可行解。 请返回所有可行解 s 中最长长度。 提示: 1 <= arr.length <= 16 1 <= arr[i].length <= 26 arr[i] 中只含有小写英文字母 示例: 示例 1: 输入:arr = ["un","iq","ue"] 输出:4 解释:所有可能的串联组合是

By Ne0inhk