高扩展性的学习路线
2015-03-24来源:易贤网

【伯乐在线导读】:通常当我们对扩展性感兴趣时,我们东寻西找链接、书籍和参考资料。这篇短文是 Leandro 精心挑选出的参考资料,并给出了学习路径,他希望对你的学习之旅有所帮助。

名单

01359D07-774C-4DEA-98AF-476A7AE83E4E

声明:你不需要有 N 台机器来搭建一个高扩展性系统,你只要使用 Vagrant 就能很容易模拟成 N 台机器。

学习参考资料:

既然你可以通过虚拟服务器来武装自己了,那你不仅要读这些文章,而且还要动手实践。

首先,看看《使用 Nodejs +Nginx + 静态缓存应用 + 负载均衡器 + 测试教程》来预热一下,只需要 7 分钟。

把这些单词放入你的词汇表 scalability(扩展性)、failover(灾备)、 single point of failure (SPOF)(单点故障)、 sharding(分区)、 replication(复制) 和 load balancing(负载均衡) 。即使你根本不理解它们,也不要紧。

为了对扩展性系统有总体概念和更好地了解来龙去脉,我强烈推荐你阅读《Scalable Web Architecture and Distributed Systems(扩展性web架构和分布式系统)》。这是一篇非常棒的导论。

在对概念有清晰了解以后,你现在可以开始学习如何使用 load balancer(负载均衡器) 和处理一些你将要面对的决策问题。你可以尝试运行haproxy,并且避免它产生single point of failure too(单点故障)。

通过 实现300万个请求/秒的服务 挑战你自己,完成这项任务你可能需要 生成300万个请求,调优Web服务器 和 规模化并测试。

你的应用已经可以扩展了,现在你轮到数据库了。它是你应用中非常重要的一部分,在这里我推荐你至少要阅读,MongoDB 是如何通过 sharding 和 replication 来扩展数据库,还有Cassandra 是如何通过 linear scalability(线性扩展)和 adding nodes to the cluster(在集群中添加节点) 来扩展。

你的应用和数据库现在有很好的扩展性和容错能力。有利于节省服务器不必要的工作负载,然后会有更快的用户响应。

假定我们已经在一个单独的数据中心部署了这套系统,现在我们有另一个SPOF。所有的服务器都在同一个地方,可能会有自然灾害,或者仅仅是断电。好消息,Cassandra可以非常方便地支持多个数据中心, 看看 Google 是如何处理的。如果你的用户在巴西,不要让他访问时间过长。记住,即使在最好的情况下, 我们仍然会有延迟。

更多信息请查看IT技术专栏

推荐信息