关于OT算法的协同的核心算法部分已经写完了。

再简单谈一下关于协同文档底层架构的问题,因为目前我的方案还没有最终落地所以并不清楚实际情况中会出现哪些问题,

说一下传输层,传输层是用的MQTT,得益于RabbitMQ的插件MQTT,实现了消息队列,当然了MQ和Redis是老搭档了,少不了Redis的入场,Redis基本上只负责服务器缓冲层的作用,因为大量的JSON数据会传输到后端存储起来,用Redis最好不过了,这里使用的是Redis的有序set,这样咱们的数据进来的时候可以根据时间戳进行排序,等到新用户进来的时候,可以快速从缓冲区拿出数据,并且很快的编译出完整的文档来,目前Mysql的作用也是很大的,使用Mysql主要是考虑有以下2点问题:

Redis缓冲区如果数据过多一定会出现新用户进入前端处理太多的逻辑导致页面卡死
Redis配合Mysql也是市面上常见的解决方案
Mysql作为持久层,框架更多,方便理解,对于大数据存储更加得心应手

基本逻辑很简单,当用户离开时候,会通过Mqtt拿到离开指令并给与当前页面的文本(这里的操作是同步的,程序备份的时候,所有用户的改动都将存在本身的缓存区中,等待缓冲区结束),程序将Redis的缓存区数据拿出,备份到mysql缓冲区历史中,并将Redi缓冲区清空,mysql存储一版本的成型文档,当新用户进入的时候,首先会从mysql拿到成型文档,接下来会从该版本之后的缓存区版本实现ot整合操作,形成最终文档。

我这里的方案完全依赖于前端,Ot算法在前端实现,在前端进行,后端只做存储,和消息传递,这样的好处不用多说,将算法的压力分摊到各个用户浏览器,后台的压力极小,缺点也很明显,没办法在后台处理各种逻辑,全都由用户动作处理。

(完)

再谈OT算法的协同文档制作的底层基础架构记录相关推荐

  1. Svelte框架实现表格协同文档

    首先,从框架搭建上,本篇示例采用当下流行的前后端分离的开发方式,前端使用npm作为脚手架搭建Svelte框架. 后端使用Java的SpringBoot作为后端框架. 首先,介绍下在前端Svelte框架 ...

  2. FLANN快速近似最邻近算法官方指导文档

    FLANN快速近似最邻近算法官方指导文档 Introduction Quick Start 快速学习 Downloading and compiling FLANN 下载和编译 Upgrading f ...

  3. NLP之TM之LDA:利用LDA算法瞬时掌握文档的主题内容—利用希拉里邮件数据集训练LDA模型并对新文本进行主题分类

    NLP之TM之LDA:利用LDA算法瞬时掌握文档的主题内容-利用希拉里邮件数据集训练LDA模型并对新文本进行主题分类 目录 输出结果 设计思路 核心代码 训练数据集 LDA模型应用 输出结果 设计思路 ...

  4. requestPermissions读写手机存储权限_泛圈云盘可为企业建立高效安全的云办公在线协同文档存储?...

    泛圈企业云盘结合智能手机和无线网络,实现对任何办公地点和办公时间的无缝访问,提高办公效率.它可以连接客户原有的各种IT系统,包括OA.邮件.ERP等各种个人业务系统,使手机也可以用来操作.浏览.管理公 ...

  5. 表格控件对比_小白如何开发出苏宁易购同款表格协同文档系统?

    SpreadJS是一款基于 HTML5 的纯前端电子表格控件,兼容 450 种以上的 Excel 公式,具有 "高性能.跨平台.与 Excel 高度兼容"的产品特性,满足 Web ...

  6. Echarts地图详细镇区的划分_echarts乡镇地图,echarts地图街道-算法与数据结构文档

    Echarts地图详细镇区的划分_echarts乡镇地图,echarts地图街道-算法与数据结构文档类资源-CSDN下载

  7. Web3.0:Skiff 去中心化隐私协同文档

    随着国家反垄断和数据隐私保护的强监管落地,原本过得风生水起的web2.0大平台型企业都受到了重大的冲击.在平台模式中往往用户和平台是一种零和游戏,例如平台无底线的数据采集.大数据杀熟.高额抽成等等. ...

  8. web_socket 协同文档编辑

    源码地址:http://files.cnblogs.com/files/fxnet/web_socket协同文档编辑.zip 服务端用nodejs ,主要原理是后端生成一个版本号 为了防止请求顺序错乱 ...

  9. 视频会议软件中的协同文档技术

    现今的视频会议软件产品不单只是音.视频的传输,还包括协同数据功能.协同数据功能主要包括:电子白板共享.文档协同浏览.共享桌面等功能.现在我们主要讨论的是视频会议软件中的协同文档技术.协同文档浏览主要是 ...

最新文章

  1. centos 7.0 查看selinux状态|关闭|开启
  2. WPF中实现文件夹对话框(OpenFileDialog in WPF)
  3. 任务调度之Elastic-Job1
  4. Lua中的loadfile、dofile、require详解
  5. 后端学习 - Java容器
  6. windbg-!address、!vadump、!vprot(读取内存状态)
  7. AnalogClock和DigitalClock时间和日期控件
  8. C语言中的回调函数(Callback Function)
  9. 爬虫运行成功但没数据_我整来了几台服务器,就是为了给你演示一下分布式爬虫的整个过程...
  10. 参加了 InfoQ 的虚拟座谈会
  11. 路由器 mac 和 bssid是一个吗
  12. 创业维艰--书摘+乱七八糟
  13. 买卖股票的最佳时机 II Java (贪心算法)
  14. 【Paper】Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation
  15. 人生苦短我学python表情包_人生苦短,我学PYTHON
  16. BLUES吉他学习笔记004 bluesrv[8]
  17. Arduino - 驱动HC-SR501 人体红外感应模块
  18. 利用洪特规则计算原子离子磁矩过程详解
  19. 2019最全的大数据技术解读,如何4个月掌握大数据核心技术?
  20. 如何看懂IIS服务器网站日志

热门文章

  1. 唐都8254电子发声实验
  2. MongoDB 学习笔记八 复制、分片、备份与恢复、监控
  3. python实现离散型变量分组统计
  4. 运行shell脚本时怎么知道jdk路径_linux查看java jdk安装路径和设置环境变量 – HouYing – 博客频道 – CSDN.NET...
  5. webservice的安全问题
  6. 【极致通话降噪】高通QCC3071 三麦克风通话降噪方案
  7. IE7,IE8与IE6兼容路上的痛苦
  8. 芯片漫游指南(1)-- UVM世界观
  9. 在Visual Studio上开启自己的C++学习之旅
  10. 2023年最新zabbix监控Linux服务+ensp交换机