在 mysql 应用中,最让人揪心的就是同步延迟问题,原因是多方面的,但带来的负面影响非常大,甚至都无法解释。
mysql作为最流行的关系型数据库之一,它的强项可能并不是速度,并行复制能力也并不强,所以如果你要重度依赖mysql,那么必须意识到同步延迟可能是常态。
那么如何尽量去避免呢?
1:应用解决方案
在开发中,假设延迟是存在的,对于核心业务必须要严谨,比如说文章队列,如果获取不到从库文章信息,是不是再一次投递队列,或者从主库查询,尽量减少延迟带来的影响,当然设计的复杂度就增加了。
如果你重度依赖缓存,那么如何避免缓存信息是脏的,这更难解决。
2:减负
mysql无法是增删改查,要保持数据量可控,我最喜欢在不影响应用的前提下删除数据,看似很low的解决方案其实很管用。
尽量减少慢查询,以前同步延迟都是查询带来的,但这次却不是,而是队列大量更新和插入带来的,比如说每天全量推送用户,长时间高并发写,同步不可避免,所以一定要控制并发写入和更新量。
3:选择合适的解决方案
mysql尽量作为存储使用,因为大规模的查询和更新并不是它的优势,所以非核心业务,可以考虑 redis 和mongodb,尤其是队列解决方案,不建议使用mysql,或者说有多套解决方案。
4:拆分
受限于mysql本身机制,可以通过升级mysql版本,提升并行复制能力。或者根据不同的场景,使用多个库,甚至多个mysql实例,避免核心服务受影响。
一方面服务能够解耦,另外也方便扩展。这也是分而治之的解决思路之一。
5:负载均衡
有的时候发现某些从库不延迟,就一台延迟,可以通过策略,摘除这台从库,但必须意识到,这只是临时解决方案,出现大量的延迟,说明问题可能已经比较严重了。
目前规模还小,如果大了呢?那时候可能是灾难性的。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 自动驾驶如何解决道路安全难题?
- 虚拟电厂:解决能源转型的实际难题
- 华为拿什么破解AI核心难题?
- 消息架构的设计难题以及应对之道
- 智能制造基础问题,难题与实现要点浅见
- RabbitMQ延迟消息的延迟极限是多少?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
About Face 4: 交互设计精髓
[美] 艾伦·库伯、[美] 罗伯特·莱曼、[美] 戴维·克罗宁、[美] 克里斯托弗·诺埃塞尔 / 倪卫国、刘松涛、杭敏、薛菲 / 电子工出版社 / 2015-10 / 118.00元
《About Face 4: 交互设计精髓》是《About Face 3:交互设计精髓》的升级版,此次升级把全书的结构重组优化,更加精练和易用;更新了一些适合当下时代的术语和实例,文字全部重新编译,更加清晰易读;增加了更多目标导向设计过程的细节,更新了现行实践,重点增加 移动和触屏平台交互设计,其实《About Face 4: 交互设计精髓》多数内容适用于多种平台。 《About F......一起来看看 《About Face 4: 交互设计精髓》 这本书的介绍吧!