点击上方 "程序员小乐"关注, 星标或置顶一起成长
每天凌晨00点00分, 第一时间与你相约
每日英文
Leave all your unhappiness to yesterday, give all your hopes to tomorrow, and do all your hard work today.
把所有的不快给昨天,把所有的希望给明天,把所有的努力给今天。
每日掏心话
所谓的幸福,就是在平淡生活里的那一份执着和坚守。
责编:乐乐
链接:www.tbwork.org/2019/11/10/ant-ldc-arch/
标题:《浅谈双十一背后的蚂蚁LDC架构和其CAP分析》
往日回顾:又一个程序员“倒”下,Pandownload凉了...
正文
本文是蚂蚁支付宝的架构演进。阿里巴巴演进请看此文(阅读量1.3万+):阿里巴巴为什么能抗住90秒100亿?看完这篇你就明白了!
小结:分库分表解决的最大痛点是数据库单点瓶颈,这个瓶颈的产生是由现代二进制数据存储体系决定的(即I/O速度)。单元化只是分库分表后系统部署的一种方式,这种部署模式在灾备方面也发挥了极大的优势。
思考一下:应用间其实也存在交互(比如A转账给B),也就意味着,应用不需要链接其他的数据库了,但是还需要链接其他应用。如果是常见的RPC框架如dubbo等,使用的是TCP/IP协议,那么等同于把之前与数据库建立的链接,换成与其他应用之间的链接了。为啥这样就消除瓶颈了呢?首先由于合理的设计,应用间的数据交互并不巨量,其次应用间的交互可以共享TCP链接,比如A->B之间的Socket链接可以被A中的多个线程复用,而一般的数据库如MySQL则不行,所以MySQL才需要数据库链接池。
注:网上和支付宝内部有另外一些分法,比如流水型和状态性,有时候还会分为三类:流水型、状态型和配置型。个人觉得这些分法虽然尝试去更高层次的抽象数据分类,但实际上边界很模糊,适得其反。
即便架构师们设计了完美的CRG,但即便在蚂蚁的实际应用中,各个系统仍然存在不合理的CRG分类,尤其是CG不分的现象很常见。
这里可以思考下,为何先切数据库映射,再切流量呢?这是因为如果先切流量,意味着大量注定失败的请求会被打到新的正常单元上去,从而影响系统的稳定性(数据库还没准备好)。
if( 不存在分区的可能性 || 分区后不影响可用性或一致性 || 有影响但考虑了分区情况-P){ if(可用性分区容忍性-A under P)) return "AP"; else if(一致性分区容忍性-C under P) return "CP";}else { //分区有影响但没考虑分区情况下的容错 if(具备可用性-A && 具备一致性-C){ return AC; }}
如果你了解过比特币或者区块链,你就知道区块链的基础理论也是PAXOS。区块链借助PAXOS对最终一致性的贡献来抵御恶意篡改。而本文涉及的分布式应用系统则是通过PAXOS来解决分区容忍性。再说本质一点,一个是抵御部分节点变坏,一个是防范部分节点失联。
分区容忍性:OB节点之间是有互相通信的(需要相互同步数据),所以存在分区问题,OB通过仅同步到部分节点来保证可用性。这一点就说明OB做了分区容错。
可用性分区容忍性:OB事务只需要同步到(N/2)+1个节点,允许其余的一小半节点分区(宕机、断网等),只要(N/2)+1个节点活着就是可用的。极端情况下,比如5个节点分成3份(2:2:1),那就确实不可用了,只是这种情况概率比较低。
Practice of Cloud System Administration, The: DevOps and SRE Practices for Web Services, Volume 2. Thomas A. Limoncelli, Strata R. Chalup, Christina J. Hogan.
MySQL 5.7 半同步复制技术 cnblogs.com/zero-gg/p/9057092.html
BASE 理论分析 jianshu.com/p/f6157118e54b
Keepalived baike.baidu.com/item/Keepalived/10346758?fr=aladdin
PAXOS en.wikipedia.org/wiki/Paxos_(computer_science)
OceanBase 支撑 2135 亿成交额背后的技术原理 cnblogs.com/antfin/articles/10299396.html
Backup en.wikipedia.org/wiki/Backup
欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,学习能力的提升上有新的认识,欢迎转发分享给更多人。
欢迎各位读者加入订阅号程序员小乐技术群,在后台回复“加群”或者“学习”即可。
猜你还想看
阿里、腾讯、百度、华为、京东最新面试题汇集
面试热身:5 亿整数的大文件,排个序?
线上服务 CPU 100%?一键定位 So Easy!
基于 token 的多平台身份认证架构设计
文章有问题?点此查看未经处理的缓存