多种网盘链接检测插件 购买前,请先检测网盘链接是否有效
《分布式对象存储——原理 架构及Go语言实现 》_1
《分布式对象存储——原理 架构及Go语言实现 》_2
《分布式对象存储——原理 架构及Go语言实现 》_3
内容简介:
分布式对象存储
原理、架鹣及G0语言实现
Hu世杰著
人民邮电出版社
北京
图书在版编目(CIP)数据
分布式对象存储:原理、架构及Go语言实现/Hu世
北京:人民邮电出版社,2018.6
ISBN978-7-15-48055-2
I.①分…Ⅱ①Hu…Ⅲ.①数字信息一存储Ⅳ
①G202
中guo版本图书馆P数据核字(00第073199
内容提要
本书从云存储的需求出发讲述对象存储的原理,循序渐进地建立起一个分布式对象存储的架构
并且将软件实现出来。全书共8章,分别涉及对象存储简介、可扩展的分布式系统、元数据服务、数
据校验和去重、数据冗余和即时修复、断点续传、数据压缩和数据维护等。本书选择用来实现分布式
对象存储软件的编程语言是当前流行的Go语言
本书适合从事云存储方面工作的工程师或架构师,也适合想要学习和实现分布式对象存储的读者
Hu世杰
责任编辑Chen冀康
责任印制焦志炜
人民邮电出版社出版发行北京市丰台区成寿等路11号
编100164电子件315@ ptpress coma
网址hp:/www.pprcss.com
固安县铭成印刷有限公司印刷
开本:800×1000116
印张:13.5
字数:268千字
2018年6月第1散
印数:1-2400册
2018年6月河北第1次印刷
定价:59.00元
读者服务热线010)81055410印装质量热线010)81055316
反盗版热线010)81055315
广告经营许可证:京东工商广登字20170147号
前言
本书写作目的
早在几年前,云存储还只是存在于业界大佬们口中的一个概念,其应用场景仅供大
公司使用。突飞猛进的网络技术似乎在一瞬间就把这个概念普及到千家万户,现在云存
储已经是大家司空见惯的一个网络服务了。比如大家用的百度云盘、已经成为实质上的
业界标准的亚MA逊S3、微软的 One Drive、苹果公司的 iCloud和GuGe的 GuGe Cloud等
现在市面上和云存储相关的图书本来就不多,而专门讲述对象存储实现的书就更
是难得一见,且内容大多以 OpenStack、Swi和ceph这些已经较为成熟的开源软件的
架构和实现为例。读者一开始就知道怎么做,然后解释为什么要这么做。guo
本书则另辟蹊径,完全从云存储的需求出发讲述对象存储的原理,循序渐进、从
无到有地建立起一个分布式对象存储的架构,并且将软件实现出来。换句话说,本书
首先介绍为什么要这么做,然后解释怎么做
本书选择用来实现分布式对象存储软件的编程语言是0,但并不是非它不可的
读者也可以在了解对象存储的原理之后选用其他的语言来实现
在读完本书之后,每一位读者都将对对象存储服务这一概念有一个较为深入的理
解,部分读者甚至能够实现自己的对象存储服务。一件
2分布式对象存储—一原理、架构及Go语言实现
对象存储和云存储的关系
言
对象存储是云存储的一部分,它提供了云存储后端的存储服务。云存储是建立在
对象存储之上的一个整体的解决方案,除了后端的存储服务之外,它还需要包括各种
操作系统和平台上运行的客.户.端、身份认证、多种管理和监控功能等
本书主要集中在对象存储的原理架构和实现上,对云存储其他组件也会有一定的
介绍,但不会是本书的主要内容
开本
分布式存储的好处
传统的高端服.务.器性能强劲、成本高昂,以前只有大公司用来搭建自己的私有存
储。互联网生态下的云存储则用数量弥补质量,以大量低成本的普通PC服.务.器组成网
络集群来提供服务。相比传统的高端服.务.器来说,同样价格下分布式存储提供的服务
更好、性价比更高,且新节点的扩展以及坏旧节点的替换更为方便
本书的目标读者
如果你是云存储方面的学者、工程师或架构师,那么本书适合你
如果你是一位对云存储感兴趣的人或者是云存储的用户,那么光凭看这本书你可
能无法实现一个自己的对象存储服务,但是在读完本书之后,你依然能够学到很多相
关的知识
对Go语言和HTP/REST协议的了解可以帮助你实现并执行本书中的代码,但这
不是必需的。本书对每一段代码都会有详细的解释来帮助读者了解其内容。即使对语
言和协议一无所知的读者也能了解代码的含义和执行效果。
前言←43
如果你是一位对云存储比较熟悉的读者,你可能已经了解对象存储服务的架构以
及一些常见问题的成因,但这也不是阅读本书所必需的条件。本书会以提出问题并解
决问题的方式介绍对象存储服务的架构设计。即便是对对象存储一窍不通的读者也可
以在这个过程中亲眼见证对象存储服务的架构是如何一步步丰满起来的。一
本书的主要内容
第1章,我们提出了一个单机版的对象存储原型系统,介绍了最简单的对象REST
接口
第2章,我们将这个原型系统进行了扩展,将它分拆成接口服务和数据服务,使
得这些服务可以互相独立地提供服务功能,让我们的系统得以自由扩展。
第3章,我们又往系统中加入了元数据服务,用于保存描述对象的元数据,包括
对象的名字、版本、大小、散列值等。有了元数据服务,我们就可以使得对象的名字
和对象的内容解耦合
共享同一份存储实体,这样做可以降低对存储空间的要不同但内容相同的对象可以
第4章,我们实现对象数据的校验和去重,使得名
第5章,为了增强数据的可靠性,我们提出了数据冗余的概念并实现了RS纠删
我们在对象数据存取的过程中以流的形式进行编解码,可以在一定程度上修正对象数
据的损坏
第6章,为了战胜现实世界不良的网络环境,我们实现了断点续传。客.户.端在下载对象
时自由指定下载数据的偏移量,也可以通过特殊的接口以分批的方式上传对象的数据
第7章,我们介绍数据压缩。在大多数情况下,数据压缩都应该在客.户.端实现
但如果你需要设计一个通过浏览器就可以使用的对象存储系统,且你的大多数对象
数据都适合进行压缩,那么可以参考我们在本章实现的gip数据压缩,进一步降低对
存储空间和下载带宽的要求。
#############################################
|
|