注:本节的例子来自百度文库的一位工程师,在此表示感谢.
MySQL
在做 replication
时,主从复制之间必然要经历一个复制过程,即主从延迟的时间.尤其是主从服务器处于异地机房时,这种情况更加明显.
把 facebook
官方的一篇技术文章,其加州的主数据中心到弗吉尼亚州的主从同步延期达到70ms;
考虑如下场景:
1:
用户 U
购买电子书 B, insert into Master (U,B);
2:
用户 U
观看电子书 B, select
购买记录[user=’A’,book=’B’] from Slave.3:
由于主从延迟,第2步中无记录,用户无权观看该书.
这时,可以利用
memached
在 master
与 slave
之间做过渡(图
5.2):
1:
用户 U
购买电子书 B, memcached->add(‘U:B’,true)
2:
主数据库 insert into Master (U,B);
3:
用户 U
观看电子书 B, select
购买记录[user=’U’,book=’B’] from Slave.
如果没查询到,则 memcached->get(‘U:B’),查到则说明已购买但 Slave 延迟.4: 由于主从延迟,第2步中无记录,用户无权观看该书.
本文探讨了在主从复制延迟情况下,电商购物过程中用户无法观看已购买电子书的问题,并提出使用memcached作为过渡方案来解决延迟带来的影响。
798

被折叠的 条评论
为什么被折叠?



