您的位置:首页 > 运维架构 > 网站架构

读书笔记:分布式系统系统与概念(图灵丛书)

2017-07-30 17:06 281 查看
书的第一章作者介绍了分布式系统的概念,分布在网络的不同组件并相互传递消息协调的系统,其特征是组件的并发性(这是说可以很多进程或线程可以同时运行,充分利用硬件资源)、缺乏全局时钟(网络上没有一个共有的时钟来同步不同节点上的操作)、故障的独立(故障具有隔离性)。然后讲了分布式系统的例子,以及趋势包括分布式计算和移动化(现在有很多不同的联网设备:pad、手机等等)、分布式多媒体(这几年兴起的视频、直播等)、云概念。最后再列出挑战。异构性(系统中存在不同的网络比如局域网、广域网、无线网,硬件,操作系统,编程语言,比如json、xml之类的统一数据交换格式就是解决异构系统通讯的),开放性(就是说网络复杂的不同异构组件直接能不能通过遵守统一个规约达到彼此兼容的目的,不然的话,一个组织生产的软件,另一个系统无法使用,因为没有约定的接口和规范,比如一个组织定义json的格式为标准格式,另外一个组织非要采用另外一种格式,那么a发过来的json数据b系统是无法解析的,这样就不能行使正常功能),安全性(这个不多说),可伸缩性(就是说我们可以随意增加或减少软硬件资源而由此带来的分布式程序修改的程度,程度低说明可伸缩性好),事故处理(比如缓存的雪崩和击穿,熔断和服务降级处理,冗余控制,调用链跟踪等),并发性和透明性。

第二章开始讨论系统模型,这里分为物理模型和体系结构,物理模型是什么呢?书中引出了基线物理模型,比如一个分布式系统由10台计算机构成,10个节点就是物理模型。那么体系结构是什么呢?它是一组抽象概念构成的集合,比如通信实体(进程)、组件(想想中间价)、web服务。这些元素之间需要通讯所以有了通讯范型的概念,包括进程间通讯(socket)、远程调用通讯(rpc、rmi)、间接通讯(分布式缓存、消息队列)。这些体系结构元素构筑了体系结构模式的概念,元素和体系结构模式又一起组成了不同的模型,比如交互模型(定义进程之间的通讯包括时钟同步和时序,异步和同步),故障模型(怎么处理故障,比如mq中的一个节点宕掉了),安全模型。

第三章开始介绍不同节点的之间的互联。包括进程间通讯、远程调用、间接通讯。介绍了网络类型、数据交换模式、协议、带宽和数据传输速率等概念。

第四章介绍了进程间通讯的概念,进程间通讯主要介绍了udp和tcp,这些消息成对交换模式在一个进程和一组进程通讯的场景下就不好使了,这时候就催生了ip组播通讯的模式(不提供消息传递保证和排序保证)。

第五章介绍了远程调用的概念,主要讲了rmi和rpc没什么新意略过。

第六章介绍了间接通讯的概念,包括发布订阅模式,消息队列和基于共享内存。也没什么新意,参考jms规约,active mq就可以了解发布订阅和消息队列,至于内存共享可以参考redis集群。

第七章介绍了操作系统对上层的支持,包含进程和线程,以及通讯和内核。

第八章介绍了分布式组件和对象,主要结合corba介绍了组件和对象的概念,略过。

第九章介绍了web服务,最初的web服务是通过请求-应答协议使用url定位并获取web中的资源,但是这种方式受应用程序范围的限制不能在客户和服务器之间提供更丰富的互操作性,为此产生了分布式服务即soa,早起的web服务是web service,它通过soap采用统一的xml数据交换格式定义了一组web服务规范。并结合java的webservice实现做了讲解,这些都是老概念,具体的可以参考jax-ws,xfire,cxf,axis等web
service框架。

第十章介绍了对等系统,即p2p对等网络。传统的客户端-服务器应用系统需要web服务提供者提供并管理一定规模的服务器资源,而管理这些资源和故障恢复都要消耗大量的资源,这样旨在最大度利用网络中的资源尤其是边缘计算机资源使资源共享达到最大化的p2p对等网络便出现了。书中以音乐文件共享系统nasper为例讲解了对等网络中的路由、负载均衡、可靠性传输和容错等方面。

第十一章和十二章介绍的安全性和分布式文件系统(单机文件系统的分布式扩展)都没什么新东西,略过不表。

第十三章讲解了分布式统一命名服务,可以参考java的jndi。

第十四章讲解时间和全局状态,分布式系统为了协调不同节点之间事件的同步交互便需要一个统一的时钟作为同步的基准。如果没有统一的时钟,比如我们需要保证消息消费的有序性是无法实现的。还比如在本地系统中连续调用的两个服务(时延可以忽略)放在分布式环境中第二个服务的调用时钟就是第一个服务的时钟+时延。

第十五章讲解了分布式系统中的一致性问题,可以参考分布式锁机制、拜占庭将军算法、paxos协议、raft协议、zab协议。

第十六、十七章讲解分布式事务,首先介绍了事务(保证分布式数据一致性)的概念,介绍了其特性(原子性、一致性、隔离性、持久性即acid原则),以及事务对临界资源的并发访问的控制(实际上就是并发访问的串行化)。第十七章引入分布式场景,详细介绍了2pc(确认阶段、提交阶段)和3pc(多了一个预提交提交阶段),这两种方式都是以牺牲系统性能为代价的。在2pc中一个事务中有a、b两个操作分别操作a1、b1两个远程节点,如果第一阶段a1挂掉或者b1挂掉就可以执行本地事务恢复操作,如果a1挂掉b1正常也可以恢复;如果第二阶段a失败b就不会执行,直接恢复操作,如果a成功b失败则会出现问题。在3pc中能解决2pc的问题,因为如果a成功b失败,在预提交阶段就会出现,但此阶段是加提交,所以可以回滚完成事务恢复。如果预提交阶段成功了,提交阶段b1出问题这时也会出现问题,但这种几率较少,可以忽略,如果对这方面有强制要求可以通过事务补偿ji
zhi

第十八章讲解不同节点的数据复制(维护数据一致性),参考mysql replication机制,redis replication机制。

第十九章讲解移动和计算,略过

第二十章讲解分布式多媒体系统以及二十一章的google分布式系统,搜索(爬虫、索引、pagerank)、大数据(mapreduce、bigtable、gfs),略过。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐