- 论坛徽章:
- 1
|
现在是越来越懒了,我把个人认为的mysql sharding写一下。
1.Master(W/R) 单实例读写master服务器的时代
2.Master (W) + Slaves (R) 下一步,慢慢地就发展到了Mater和Slave的时代,因为单实例无法承载应用的所有请求。所以,把所有的write queries(INSERT/UPDATE/DELETE)
给予master,把所有或者近乎所有的 read queries给予slave。
3.Vertical Partitioning (垂直拆分)
*继续往后发展之后,可能不只是读请求超过负载,就连写请求也会超过负载。
*当出现write-heavy applications时候,我们该怎么办?
*使用Vertical Partitioning,把一些重业务分离出来(按库分离或者按表分离)。分别单独放在一个服务器,分担读写分离的请求。分散Top Master的写请求
基于上述的架构,会碰到的瓶颈:
(1):become harder and harder
(2): Lose some JOIN-functionality
(3): if table grew so rapidly ,so
the performance of the host wasn’t guranteed any more。
怎么办?
加更多的salve?
买更贵的服务器?
就算你怎么加,它都会hit limit。
4.当上述又得不到解决的时候,horizontal partitioning到来了。
*前面讨论的瓶颈,以及后时代的web数据管理。基于上述的理论解决。而这个早在1996年多人大型游戏online(MMO (Massive Multiplayer Online) Games world)就已经开始积极使用。
基于上图描述,根据上述的算法,针对一张photos表的分割,根据"%10”的算法,连接10台服务器的哪一台进行处理。(其实是有图片的,就是一个表根据"%10"的方法,分布到不同的服务器中),这个要从程序方面调用来解决了。
图我就不贴了,如果有兴趣的,我可以把ppt到时候贴出来。
|
评分
-
查看全部评分
|