如何开始学习高伸缩性编程?
2014-12-10 13:48
309 查看
发表于2014-12-01 17:27|6510次阅读| 来源leandromoreira.com|12
条评论| 作者Leandro
负载均衡数据中心高可伸缩
摘要:可伸缩性编程变得越来越重要,当今任何Web都应具备高可伸缩。那么如何才能学好高可伸缩编程呢?本文作者列出了一个简单的学习向导。简单,但只要坚持,你一定会成为高手。
【编者按】大数据地兴起对应用程序提出了更高地要求,其中高可伸缩性就是当今任何Web都应具备的条件之一。那么如何才能学好高可伸缩编程呢?本文作者列出了一个简单的学习向导。简单,但只要坚持,你一定会成为高手。
当我们对可伸缩性感兴趣时,便会寻找链接、说明、书籍、引用等各种可以学习利用的资料。本文篇幅较短,但希望能够帮助你高效地开启高可伸缩性编程之旅。
声明:
你无需使用N台机器来构建/测试一个集群/高可伸缩的系统,只需使用
Vagrant就可以轻易部署N+台机器。
引用
现在,你可以用这些虚拟服务器技术来武装自己,我希望大家不但要通晓这些理论知识,而且要付诸实践。
首先,通过查看该教程来激发自己:
using nodejs + nginx + applying static caching + load balancing + testing
,所有这些大概需要7分钟时间。
将这些单词及词意添加到你的词汇量当中:
scalability,
failover,
single point of failure (SPOF),
sharding,
replication,
load balancing;即使你不能完全理解它们。
为了对可伸缩系统有个总体的概念和更好地了解来龙去脉,我强烈建议你阅读
Scalable Web Architecture and Distributed Systems。
对概念有了清晰的理解过后,你可以进入下一个层次,如何使用一个
负载均衡器,有什么
决策以及会遇到哪些
问题,然后你可以尝试运行一个
haproxy,并且避免让它产生
单点故障。
动手实践,亲自去
实现300万个请求/秒的服务,为了完成这一任务,你需要
生成300万个请求,
微调你的Web服务,最终
规模化并且进行测试。
你的应用程序已经实现了可伸缩,现在轮到数据库了,它是应用程序里非常重要的一部分。这里,我强烈建议你阅读如何使用MongoDB进行
分片(sharding)和
复制(replication)来进行扩展、Cassandra的
线性扩展和
在集群中添加节点来提高易用性。
由于你的应用程序和数据库都进行了很好的可伸缩和容错,那么你的
服务器就可以节省大量不必要的工作量,并且会有
更快的用户响应。但要记住,一个好的请求是永远无法实现“真正的服务的”。
假设我们在一个数据中心里部署整个基础架构,现在,我们有另一个SPOF。因为所有的服务器都在同一个空间,所以要避免一些自然灾害的发生,比如最简单的停电。
Cassandra可以非常方便地支持多个数据中心,你可以看看
谷歌是如何解决这类问题的。如果你的用户是在巴西,那么,访问时间最好不要长于他需要时间,请记住,即使在最好的情况下,我们仍然会有
延迟。
测试
下面这些问题可以很好地测试你对可伸缩编程的掌握程度,请认真回答。
为什么要可伸缩?人们通常都是如何实现的?
如何在N个服务器间的RAM上处理用户会话?
LB如何知道哪台服务器是正常运行的?LB是如何知道哪台服务器发送请求的?
LB不是另一个SPOF?我们如何为LB提供故障转移?
操作系统是否被64K端口限制?Linux是否能方便快捷地实现?
Mongo是如何解决故障转移和高可伸缩?Cassandra怎么样?当集群里新进一个节点时,Cassandra是如何进行分片的?
什么是缓存锁?我应该使用什么缓存策略?
怎样才能使单个域里拥有多个IP地址?BGP是什么?我们是如何使用DNS或BGP来区域性的服务用户的?
来自:
How to start learning high scalability
如何开始学习高伸缩性编程?
条评论| 作者Leandro
负载均衡数据中心高可伸缩
摘要:可伸缩性编程变得越来越重要,当今任何Web都应具备高可伸缩。那么如何才能学好高可伸缩编程呢?本文作者列出了一个简单的学习向导。简单,但只要坚持,你一定会成为高手。
【编者按】大数据地兴起对应用程序提出了更高地要求,其中高可伸缩性就是当今任何Web都应具备的条件之一。那么如何才能学好高可伸缩编程呢?本文作者列出了一个简单的学习向导。简单,但只要坚持,你一定会成为高手。
当我们对可伸缩性感兴趣时,便会寻找链接、说明、书籍、引用等各种可以学习利用的资料。本文篇幅较短,但希望能够帮助你高效地开启高可伸缩性编程之旅。
声明:
你无需使用N台机器来构建/测试一个集群/高可伸缩的系统,只需使用
Vagrant就可以轻易部署N+台机器。
引用
现在,你可以用这些虚拟服务器技术来武装自己,我希望大家不但要通晓这些理论知识,而且要付诸实践。
首先,通过查看该教程来激发自己:
using nodejs + nginx + applying static caching + load balancing + testing
,所有这些大概需要7分钟时间。
将这些单词及词意添加到你的词汇量当中:
scalability,
failover,
single point of failure (SPOF),
sharding,
replication,
load balancing;即使你不能完全理解它们。
为了对可伸缩系统有个总体的概念和更好地了解来龙去脉,我强烈建议你阅读
Scalable Web Architecture and Distributed Systems。
对概念有了清晰的理解过后,你可以进入下一个层次,如何使用一个
负载均衡器,有什么
决策以及会遇到哪些
问题,然后你可以尝试运行一个
haproxy,并且避免让它产生
单点故障。
动手实践,亲自去
实现300万个请求/秒的服务,为了完成这一任务,你需要
生成300万个请求,
微调你的Web服务,最终
规模化并且进行测试。
你的应用程序已经实现了可伸缩,现在轮到数据库了,它是应用程序里非常重要的一部分。这里,我强烈建议你阅读如何使用MongoDB进行
分片(sharding)和
复制(replication)来进行扩展、Cassandra的
线性扩展和
在集群中添加节点来提高易用性。
由于你的应用程序和数据库都进行了很好的可伸缩和容错,那么你的
服务器就可以节省大量不必要的工作量,并且会有
更快的用户响应。但要记住,一个好的请求是永远无法实现“真正的服务的”。
假设我们在一个数据中心里部署整个基础架构,现在,我们有另一个SPOF。因为所有的服务器都在同一个空间,所以要避免一些自然灾害的发生,比如最简单的停电。
Cassandra可以非常方便地支持多个数据中心,你可以看看
谷歌是如何解决这类问题的。如果你的用户是在巴西,那么,访问时间最好不要长于他需要时间,请记住,即使在最好的情况下,我们仍然会有
延迟。
测试
下面这些问题可以很好地测试你对可伸缩编程的掌握程度,请认真回答。
为什么要可伸缩?人们通常都是如何实现的?
如何在N个服务器间的RAM上处理用户会话?
LB如何知道哪台服务器是正常运行的?LB是如何知道哪台服务器发送请求的?
LB不是另一个SPOF?我们如何为LB提供故障转移?
操作系统是否被64K端口限制?Linux是否能方便快捷地实现?
Mongo是如何解决故障转移和高可伸缩?Cassandra怎么样?当集群里新进一个节点时,Cassandra是如何进行分片的?
什么是缓存锁?我应该使用什么缓存策略?
怎样才能使单个域里拥有多个IP地址?BGP是什么?我们是如何使用DNS或BGP来区域性的服务用户的?
来自:
How to start learning high scalability
相关文章推荐
- 如何开始学习高伸缩性编程
- 如何开始学习计算机编程
- 如何开始学习计算机编程
- 如何开始学习编程?
- 不同年龄段的孩子如何开始学习编程
- 如何开始学习编程?
- 雷鸣的游戏人生(六) --- 如何开始学习编程?
- [转]你应当如何学习C++(以及编程)
- 关于如何学习编程及选择何种编程语言
- 如何学习linux编程
- 学习如何使用 Cookie 编程
- 别再犹豫,现在就开始学习C++,做编程的王者!
- 新手如何开始学习JSP
- Proxy源代码分析--谈谈如何学习linux网络编程
- 如何学习编程
- 开始学习MFC数据库编程
- 你应当如何学习C++(以及编程)
- 献给迷茫中的初学者如何去学习编程
- 你应当如何学习C++(以及编程)(rev#1)
- 你应当如何学习C++(以及编程)(rev#1)