转自http://www.iteye.com/news/29872
当我们对可伸缩性感兴趣时,便会寻找链接、说明、书籍、引用等各种可以学习利用的资料。本文篇幅较短,但希望能够帮助你高效地开启高可伸缩性编程之旅。
声明:
你无需使用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来区域性的服务用户的?
相关推荐
高性能服务器网络可伸缩性.doc
Node.js是一种主流框架,它允许你使用JavaScript快速构建具有高度可伸缩性的网络程序。可是,它有自己的学习曲线,这本较为深入的指南性图书首先介绍了Node.js平台的安装,然后重点关注:创建和加载模块;使用缓冲区...
Node.js是一种主流框架,它允许你使用JavaScript快速构建具有高度可伸缩性的网络程序。可是,它有自己的学习曲线,这本较为深入的指南性图书首先介绍了Node.js平台的安装,然后重点关注:创建和加载模块;使用缓冲区...
Node.js是一种主流框架,它允许你使用JavaScript快速构建具有高度可伸缩性的网络程序。可是,它有自己的学习曲线,这本较为深入的指南性图书首先介绍了Node.js平台的安装,然后重点关注:创建和加载模块;使用缓冲区...
通过深入学习,您将能够更好地理解并发编程的挑战,掌握构建高性能、高可伸缩性的并发应用所需的技能。 在资源内容中,我们将涵盖以下关键方面: 首先,我们将简要概述 JUC 库的重要性以及它在现代多核处理器环境中...
同时支持声明式和命令式编程,兼具开发的灵活性和高性能。网络结构自动设计,模型效果超越人类专家。 支持超大规模深度学习模型的训练 飞桨突破了超大规模深度学习模型训练技术,实现了支持千亿特征、万亿参数、数...
可伸缩性较低 线程的应用场景 Timer 确保TimerTask访问的对象本身是线程安全的 Servlet和JSP Servlet本身要是线程安全的 正确协同一个Servlet访问多个Servlet共享的信息 远程方法调用...
1.2.3 性能和可伸缩性 8 1.3 ASP.NET 2.0的其他新特性 8 1.3.1 新的开发人员体系结构 8 1.3.2 新的编译系统 12 1.3.3 页面框架的新增内容 13 1.3.4 访问数据的新对象 15 1.3.5 新的服务器控件 15 1.4 建立ASP...
ASP.NET 2.0的目标是提高开发人员的效率、改善应用程序的性能和可伸缩性。 本书全面介绍了ASP.NET 2.0的新特性和各方面的编程知识,是 ASP.NET初学者以及想了解ASP.NET 2.0新技术的读者的理想参考书。该书从...
Visual c++ MFC扩展编程实例及源代码,非常经典的学习教材 本书主要介绍了运用Visual C++ 5.0或6.0的高级编程技巧,内容涉及MFC程序设计的最新概念,全书提供了大量VC的编程实例,旨在帮助读者较为全面地掌握VC编程...
多线程可以有效提升计算和处理效率,大大提升吞吐量和可伸缩性,深得广大程序员和公司的青睐。很多人学习完JavaSE/JavaEE之后想往更深入的技术进行探索,比如对大数据、分布式、高并发类的专题进行攻克时,立即遇到...
多线程可以有效提升计算和处理效率,大大提升吞吐量和可伸缩性,深得广大程序员和公司的青睐。很多人学习完JavaSE/JavaEE之后想往更深入的技术进行探索,比如对大数据、分布式、高并发类的专题进行攻克时,立即遇到...
高性能跨平台(Win&Linux;)网络通信框架 HP-Socket 没有最好只有更好, 非源代码,太大无法上传,...HP-Socket 的设计充分注重功能、通用型、易用性与伸缩性; HP-Socket 项目主页:http://www.oschina.net/p/hp-socket
·讲述Windows网络程序设计的入门教程,展示了各种WindowsI/O方法,详细说明了高性能可伸缩性服务器的开发过程,并给出详尽的实例代码。 ·将编程方法、网络协议和应用实例有机结合起来,详细介绍了Internet广播和IP...
《HBase权威指南》探讨了如何通过使用与HBase高度集成的Hadoop将HBase的可伸缩性变得简单;把大型数据集分布到相对廉价的商业服务器集群中;使用本地Java客户端,或者通过提供了REST、Avro和Thrift应用编程接口的...
·讲述Windows网络程序设计的入门教程,展示了各种WindowsI/O方法,详细说明了高性能可伸缩性服务器的开发过程,并给出详尽的实例代码。 ·将编程方法、网络协议和应用实例有机结合起来,详细介绍了Internet广播和IP...
·讲述Windows网络程序设计的入门教程,展示了各种WindowsI/O方法,详细说明了高性能可伸缩性服务器的开发过程,并给出详尽的实例代码。 ·将编程方法、网络协议和应用实例有机结合起来,详细介绍了Internet广播和IP...
·讲述Windows网络程序设计的入门教程,展示了各种WindowsI/O方法,详细说明了高性能可伸缩性服务器的开发过程,并给出详尽的实例代码。 ·将编程方法、网络协议和应用实例有机结合起来,详细介绍了Internet广播和IP...