性能工程高手课
庄振运
Facebook性能优化和容量管理高级专家
立即订阅
2337 人已学习
课程目录
已更新 33 讲 / 共 36 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 代码不要眼前的苟且,而要效率的提升和性能的优化
免费
开篇:认识代码性能和系统容量效率 (3讲)
01 | 程序员为什么要关心代码性能?
02 | 程序员也要关心整个系统和公司成本吗?
03 | 导读:专栏是怎么设计的?需要哪些知识?
性能定律和数理基础 (5讲)
04 | 性能工程三定律:IT业和性能优化工作的“法律法规”
05 | 概率统计和排队论:做性能工作必须懂的数理基础
06 | 性能数据的分析:如何从大量数据中看出想要的信号?
07 | 性能数据的展示:一图胜千言,说出你的数据故事
08 | 经验总结:必须熟记的一组常用性能数字
性能测试 (5讲)
09 | 性能测试的种类:如何快准狠地抓住一个测试的本质?
10 | 性能测试的规划和步骤:为什么性能测试不容易一蹴而就呢?
11 | 性能测试的工具:七大测试场景如何选择高质量的测试工具?
12 | 九条性能测试的经验和教训:如何保证测试结果可靠且可重复?
13 | 性能测试的工程集成:如何与产品开发和运维业务有机集成?
性能分析 (5讲)
14 | 性能分析概述:性能问题归根结底是什么原因?
15 | CPU篇:如何让CPU的运行不受阻碍?
16 | 内存篇:如何减少延迟提升内存分配效率?
17 | 存储篇:如何根据性能优缺点选择最合适的存储系统?
18 | 网络篇:如何步步拆解处理复杂的网络性能问题?
性能优化 (6讲)
19 | 性能优化六大原则:三要三不要,快速有效地进行优化
20 | 性能优化十大策略:如何系统地有层次地优化性能问题?
21 | CPU案例:如何提高LLC(最后一级缓存)的命中率?
22 | 系统案例:如何提高iTLB(指令地址映射)的命中率?
23 | 存储案例:如何降低SSD峰值延迟?
24 | 跨层案例:如何优化程序、OS和存储系统的交互?
性能工程实践 (5讲)
25 | 如何在生产环境中进行真实的容量测试?
26 | 怎么规划和控制数据库的复制延迟大小?
27 | 多任务环境中的Java性能问题,怎样才能不让程序互相干扰?
28 | 网络数据传输慢,问题到底出在哪了?
29 | 如何彻底发挥SSD的潜力?
容量规划与服务效率 (3讲)
30 | 服务器的管理和部署:工业界近几年有哪些发展趋势?
31 | 规划部署数据中心要考虑哪些重要因素?
32 | 服务的容量规划:怎样才能做到有备无患?
性能工程高手课
登录|注册

26 | 怎么规划和控制数据库的复制延迟大小?

庄振运 2020-01-24
你好,我是庄振运。
在正文开始前,首先要祝你新年快乐!今天我们要通过我在 LinkedIn(领英)公司做过的一个项目,来学习如何控制数据库复制延迟。
我在 LinkedIn 工作的时候,就遇到过因为数据复制延迟太大而导致的生产事故。当时出现了这样的情况:一个用户刚刚更新了自己的照片,可是他的朋友们却迟迟看不到更新。
你是不是觉得 LinkedIn 又不是微博,看个照片而已,早点晚点也没什么大不了的?
但换个内容,这性质就严重了。LinkedIn 网站上面会播放广告,在一定时间内,广告商往往会设置一定的广告投放预算限额,比如一天一万元。如果广告投放的收入统计数据被延迟,就会导致很严重的统计错误,实际支出严重地超过预算。一切有关钱的事,可都是大事。
所以,从用户数据的有效性、时间性和一致性来考虑,数据的传输复制延迟当然是越小越好。

什么是数据库的复制延迟?

那到底什么是数据库的复制延迟呢?如果让我用一句话来说,数据库的复制延迟其实就是当线上服务需要多个数据库时(比如为了分散流量),一条信息从源头数据库传递复制到下游数据库时经过的延迟。
还是用 LinkedIn 的例子来说明。LinkedIn 的全球用户已经超过 5.9 亿,用户流量异常庞大。这些用户流量,是由用户的各种活动而生成的事件数据。LinkedIn 的系统要求是,实时地捕获这些用户数据,并不断存储在后台数据库中。这些存放在数据库中的用户数据很重要,会被各种应用程序和其他服务读取,比如广告投放就需要消费这些数据。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《性能工程高手课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(4)

  • hello
    老师,祝您新年快乐

    作者回复: 谢谢!新年快乐!

    2020-01-24
    2
  • 钱晓明
    请问LinkedIn是用的mysql数据库吗?对于单个数据中心,对于大量用户事件写入和读取怎么解决的?是通过数据库复制做主从集群吗?我觉得主库估计也得做分片吧?目前来看解决这个复制延迟主要就是通过部署更多节点的方式吗?

    作者回复: LinkedIn之前用Espresso,基于Mysql的。离开3年了,应该有些变化。大量的用户流量只能通过水平扩展来适应(horizontal scaling);是的,分片。
    数据库复制主要是为了分散读取,并且全球多数据中心同步。
    解决复制延迟也是通过水平扩展,分散的节点越多,处理越快。

    2020-01-31
  • 黄海峰
    听不懂,应该具体一点,实践篇应该具体到用什么软件什么命令执行,现在实践篇也是理论。。。

    作者回复: 这一讲的目的是“工程实践”一些规划的理论;用的例子是LinkedIn公司的例子(Espresso数据库, Databus复制)。这些软件都是Linkedin内部开发的;虽然都有开源,但是我觉得外面用的公司不多。
    这个专栏的目的是给大家整体介绍这个职业,所以宏观的知识多些。
    不过这一讲听不懂也不用灰心。我在专栏里介绍了很多种容量和性能方面的工作;但是,具体到一个公司,一个岗位,所作的具体工作多数时候其实很窄的;不需要都会的。
    我建议多从宏观上把握,具体到某项工作时,再钻进去学。这样就不会迷失在具体的繁琐工作中。

    2020-01-28
  • Scott
    这个好像对我们很有用,我们预估是直接用上一周同一天的流量来预测,问题是有时候遇到特殊情况,比如春节国庆,就行不通了。

    作者回复: 嗯,如果是面向终端客户的,特殊日期/事件必须单独考虑。

    2020-01-27
收起评论
4
返回
顶部