架构师速成8.3-可用性之分库分表
Posted blfbuaa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了架构师速成8.3-可用性之分库分表相关的知识,希望对你有一定的参考价值。
有状态分布式,涉及的知识就比較多了,只是我们能够拿几个现实的样例由浅入深的来理解。
数据库的分库分表
- 如果你是一个开发负责人,開始使用单机的数据库,突然一天数据库硬盘挂掉了。你没有做备份,然后就没有然后了。
- 进入第2个公司,你意识到备份的重要性。每天定时备份到还有一台机器,突然有一天,数据库硬盘挂掉了。
你心想幸好我有备份,然后巴拉巴拉的恢复起来。用了2个小时。老板说不错,可是—-我们由于宕机造成大量用户流失,信誉下降,然后就又没有然后了。上面说的就是单点的问题。
- 进入第3个公司,你认为单点非常可怕,所以主备做起来,数据自己主动同步到备库,做到随时准备切换。突然有一天,主数据库硬盘挂掉了,你从容的改动数据库连接指向备库。重新启动系统恢复了,仅仅用了5分钟。
此时掌声一片,你沉浸在无比的欢乐中,老板说不错,可是—就在这5分钟我们丢了一个上亿的单子。我擦。你不是有益的吧!
(事实上这有可能是真实的片段,我们创业时,就30分钟断网。结果正好在举行一个大型的营销策划,不说了,我擦一会眼泪)。然后就又没有然后了。事实上当你用上主备时,说明数据库已经有状态了,必须要区分谁是主,谁是备。
- 进入第4个公司,你不但做了主备,还做了高可用,通过HA实现了瞬时切换。
突然有一天。主数据库硬盘挂掉了。你从容的端起了你的屌丝杯,世界清静了。
老板说不错,小子我看好你。
从此你走向人生巅峰。出任CTO,迎娶白富美。可是没过多久问题来了,随着用户不断的添加。你的数据库摇摇欲坠,不时就抽疯。老板说搞定他,不然我就搞定你。
- 咋办,分库分表啊!
怎样分,这就涉及到很多其它的规则了,比方依照用户id是最常见的做法。此时你不但须要管主备并且还须要在程序中确定怎样路由。结果集合并,如果再有机器添加。还要涉及数据迁移。另外还要防止出现反复id的脏数据,须要全局唯一主键。等等。
亚美蝶!知道有状态的痛苦了吧。这也是为什么有些同学转投nosql的存储的非常大原因,nosql替你屏蔽了这些规则。他在内部实现了路由、分库、合并等等。
- 提到这里不得不提一下淘宝的牛逼产品–drds(沈公子是不是应该给些广告费啊)。
- 分布式SQL引擎
- 将数据依照条件分散到多个数据节点(分库分表),对于数据操作sql进行分布式优化,获得最佳运行效率
- 自主运维
- DRDS的用户运维平台提供DRDS接入、分布式DDL、拆分信息维护、平滑扩缩容、分布式DML、监控等经常使用功能,让运维工作变得更简单
- 小表复制
- 对于配置表。常量表等不常常变化的表进行多节点对等同步,加速该类表与其它拆分表做关联查询的速度
- 分布式全局唯一id
- 提供全局唯一数字id服务。帮助您在分布式环境下。继续保持类似唯一键、主键等数据的全局(全部节点)唯一性
- 分布式SQL引擎
- 看到了吧。这就是有状态带来的痛苦。为了把有状态变为无状态有时候你须要做大量的工作。
以上是关于架构师速成8.3-可用性之分库分表的主要内容,如果未能解决你的问题,请参考以下文章
所向无敌!分布式系统速成笔记被阿里架构师爆出!在Github已获赞93.6K