当前位置:网站首页>复制延迟案例(2)-读己之写
复制延迟案例(2)-读己之写
2022-08-02 03:37:00 【JavaEdge.】
许多应用让用户提交一些数据,然后查看提交的内容。如客户DB中的记录或某主题的评论。提交新数据必须发送到主节点,但当用户读数据时,可能从【从节点】读取。这对读密集和偶尔写入的负载很合适。
但异步复制则有问题,如图-3:若用户在写后马上查看数据,则新数据可能尚未到达副本。对用户而言,看起来好像是刚提交的数据丢了,用户会不高兴。
此时,需“写后读一致性(read-after-write consistency)”,也称读写一致性(read-your-writes consistency)。该机制保证:若用户重新加载页面,他们总能看到自己最近提交的更新。但对其他用户没有任何保证,这些用户的更新可能会在稍后才能刷新看到。
主从复制实现 写后读一致性
若用户访问:
可能会被修改的内容,读主
否则,读从
这要求实际查询前,就得考虑内容是否可能会被修改。如社交网络上的用户个人资料信息通常只能由用户本人编辑,而其他人无法编辑。简单规则:从主节点读取用户自己的档案,在从节点读取其他用户的档案。
若应用大部分内容都可能被用户编辑,则上面方案就没啥用,因为大部分内容都读主节点,导致丧失读操作的扩展性。就得考虑其他标准来决定是否读主。如跟踪最近更新时间,若更新后1min 内,则总是读主节点。并监控从节点的复制延迟程度,避免对任意比主节点滞后超过一分钟的从节点发出查询。
客户端还可记住最近更新时的时间戳,并附带在读请求中,据此,系统可确保对该用户提供读服务时,都应该至少包含了该时间戳的更新。若当前从节点不够新,可读另一个从节点或一直等待从节点直到收到最近的更新。时间戳可以是逻辑时间戳(指示写入顺序的日志序列号)或实际系统时钟。
若副本分布在多IDC(如考虑与用户的地理接近及高可用性),会更复杂。必须先把请求路由到主节点所在IDC(该IDC可能离用户很远)。
若同一用户从多个设备请求服务,如桌面浏览器和移动APP,就更复杂了。这时,可能就需提供跨设备的写后读一致性,即若用户在某设备输入一些信息,然后在另一个设备查看,则应该看到刚输入的信息。此时,还需考虑:
- 记住用户上次更新时间戳的方法实现更困难,因为一台设备上运行的程序不知道另一台设备上发生啥。元数据需要一个中心存储,做到全局共享
- 若副本分布在多IDC,无法保证来自不同设备的连接会路由到同一IDC。如用户台式计算机使用家庭宽带连接,而移动设备使用蜂窝数据网络,则设备的网络路线可能完全不同。若方案要求必须读主,则首先要确保来自不同设备的请求路由到同一IDC。
边栏推荐
猜你喜欢

el-dropdown(下拉菜单)的入门学习

位居榜首 | 未来智安荣登CCIA「2022年中国网安产业潜力之星」榜单

剩余参数、数组对象的方法和字符串扩展的方法

深蓝学院-视觉SLAM十四讲-第六章作业

el-select和el-tree结合使用-树形结构多选框

普氏分析法-MATLAB工具箱函数
![[Study Notes] How to Create an Operation and Maintenance Organizational Structure](/img/9d/037c9d2d66644d6b949721d506be03.png)
[Study Notes] How to Create an Operation and Maintenance Organizational Structure

Nexus 5 phone uses Nexmon tool to get CSI information

Location、navigator和History对象

单目三维目标检测之CaDDN论文阅读
随机推荐
Zabbix删除一些大表历史数据脚本
Go的安装使用(一)
arr的扩展方法、数组的遍历及其他方法
flasgger手写phpwind接口文档
shell中常用的基础命令
两端是圆角的进度条微信对接笔记
QT+OPENCV+FFTW内存问题
el-input 只能输入整数(包括正数、负数、0)或者只能输入整数(包括正数、负数、0)和小数
单目三维目标检测之CaDDN论文阅读
树莓派4B安装OPENCV遇到ffmpeg库版本太高的问题【后续更新】
深度学习基础之批量归一化(BN)
Autowired注解与Resource注解的区别
ES6中变量的使用及结构赋值
企业级的dns服务器的搭建
七分钟深入理解——卷积神经网络(CNN)
Your device is corrupt. It cant‘t be trusted and may not work propely.
视觉SLAM十四讲--第13讲 实践:设计SLAM系统(最详细的代码调试运行步骤)
ScholarOne Manuscripts提交期刊LaTeX文件,无法成功转换PDF!
MySQL读写分离mysql-proxy部署
节流阀和本地存储