大型网站系统与Java中间件实践 - (EPUB全文下载)
文件大小:0.23 mb。
文件格式:epub 格式。
书籍内容:
大型网站系统与Java中间件实践
第1章 分布式系统介绍
第2章 大型网站及其架构演进过程
第3章 构建Java中间件
第4章 服务框架
第5章 数据访问层
第6章 消息中间件
第7章 软负载中心与集中配置管理
第8章 构建大型网站的其他要素
后记
第1章 分布式系统介绍
1.1 初识分布式系统
我第一次听说分布式系统,大约是在2000年的时候。当时很偶然地了解到, 1997年版本的电影《泰坦尼克号》中的特效就是通用多台运行Linux的机器组成的系统来共同完成的。整个系统的规模有多大,我没有确切数字,印象中是一百多台机器。这个集群的规模现在看不算大,但在当时深深地震撼了我。更加让我感慨的是,那个时候身边正好有一位同学在用3D软件做特效,因为过于复杂,在寝室要熄灯时总是不能全部完成。如果能够把其他人的电脑拿过来一起分担工作,同时渲染,应该就能在熄灯前完成,那样就不需要把电脑放到负责管理宿舍楼的大爷那边来保证它一直有电了。
1.1.1 分布式系统的定义
对于分布式系统的定义,一直以来我都没有找到或者想到特别简练而又合适的定义。这里引用一下Distributed Systems Concepts and Design(Third Edition)中的一句话: “A distributed system is one in which components located at networked computers communicate and coordinate their actions only by passing messages” 。从这句话我们可以看到几个重点,一是组件分布在网络计算机上,二是组件之间仅仅通过消息传递来通信并协调行动。
图1-1是一个分布式系统的示意图,从用户的视角看,用户面对的就是一个服务器,提供用户需要的服务,而实际上是靠背后的众多服务器组成的一个分布式系统来提供服务。分布式系统看起来就像一个超级计算机一样。
图1-1 分布式系统示意图
我们来理解一下分布式系统的定义。首先分布式系统一定是由多个节点组成的系统,一般来说一个节点就是我们的一台计算机;然后这些节点不是孤立的,而是互相连通的;最后,这些连通的节点上部署了我们的组件,并且相互之间的操作会有协同。有了这样的原则,我们就可以看看身边都有哪些分布式系统了。像大家平时都会使用的互联网就是一个分布式系统,我们通过浏览器去访问某一个网站(例如淘宝) ,在对浏览器发出请求的背后是一个大型的分布式系统在为我们提供服务,整个系统中有的负责请求处理,有的负责存储,有的负责计算,最终通过相互的协同把我们的请求变成了最后的结果返回给浏览器,并呈献给我们。
1.1.2 分布式系统的意义
从单机单用户到单机多用户,再到现在的网络时代,应用系统发生了很多的变化。而分布式系统依然是目前很热门的讨论话题。那么,分布式系统给我们带来了什么,或者说为什么要有分布式系统呢?下面从三个方面来介绍一下其中的原因:
升级单机处理能力的性价比越来越低。
单机处理能力存在瓶颈。
出于稳定性和可用性的考虑。
那么我们先来看单机处理能力包括什么。一般来说,我们关注的是单机的处理器(CPU) 、内存、磁盘和网络。下面我们就用处理器来举例说明与单机处理能力相关的问题。
我们都知道摩尔定律:当价格不变时,每隔18个月,集成电路上可容纳的晶体管数目会增加一倍,性能也将提升一倍,如图1-2所示。
这个定律告诉我们,随着时间的推移,单位成本的支出所能购买的计算能力在提升。不过,如果我们把时间固定下来,也就是固定在某个具体时间点来购买单颗不同型号处理器,那么所购买的处理器性能越高,所要付出的成本就越高,性价比就越低。那么,就是说在一个确定的时间点,通过更换硬件做垂直扩展的方式来提升性能会越来越不划算。除此之外,同样是在某个固定的时间点,单颗处理器有自己的性能瓶颈,也就是说即使你愿意花更多的钱去买计算能力也买不到了,这就是前面提到的第二点。而第三点,强调的是分布式系统带来的稳定性、可用性的提升。如果我们采用单机系统,那么在这台机器正常的时候一切OK,一旦出问题,那么系统就完全不能用了。当然,可以考虑做容灾备份等方案,而这些方案就会让你的单机系统演变成分布式系统了。
图1-2 摩尔定律
多年以来分布式系统相关技术一直是技术方面的热点,在接下来的一节中我们看一些分布式系统的基础知识。
1.2 分布式系统的基础知识
在前面的内容中提到过,分布式系统是多个节点连通后组成的系统,我们先来介绍单个节点,就是单个计算机,首先看一下计算机的组成要素。
1.2.1 组成计算机的5要素
提起冯·诺依曼(John Von Neumann) ,应该很多读者都知道他是“计算机之父” ,他对世界上第一台电子计算机-ENIAC的设计提出过建议,而且他在共同讨论的基础上起草的EDVAC(电子离散变量自动计算机)设计报告,对后来的计算机的设计有决定性影响。就是在这个101页的报告中,提到了计算机的5个组成部分以及采用二进制编码等设计。我们看一下冯·诺依曼型计算机的这5个组成部分,如图1-3所示。
图1-3 组成计算机的5要素
如图1-3所示,组成计算机的基本元素包括输入设备、输出设备、运算器、控制器和存储器,存储器又分为了内存和外存。在计算机断电时,内存中存储的数据会丢失,而外存则仍然能够保持存储的数据。
在单机系统中,这5个部分构成了整个计算机系统。而分布式系统从外部看起来就像是一个超级计算机。那么,这个超级计算机是否也是由上面的5个部分组成的呢?如果是,这5个部分具体又是怎么运作的呢?在后面的章节中,我们会具体谈到这部分内容。
1.2.2 线程与进程的执行模式
有了基础的硬件后,要完成工作就需要我们进行相应的开发,而我们代码最后是要通过进程中的线程来运行,因此我们接下来要看的就是线程与进程的执行模式。相信绝大部分接触程序设计的人员都和我一样是先接触单线程开发的。事实上那个时候我并不懂得线程的概念,就是写一段代码,执 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » 大型网站系统与Java中间件实践 - (EPUB全文下载)