II
SOA
CIP
/ . 2014.9
ISBN 978-7-121-23885-7
. . . . TP393.092
CIP 2014 169308
173 100036
787 980 1/16 28.75 640
2014 9 1
2014 9 1
79.00
010
zlts@ dbqq@phei.
010
r
e
t
p
a
h
c
第 2 章
分布式系统基础设施
第 2 章 分布式系统基础设施 │ 59
一个大型、稳健、成熟的分布式系统的背后,往往会涉及众多的支撑系统,我们将这些支
撑系统称为分布式系统的基础设施。除了前面所介绍的分布式协作及配置管理系统 ZooKeeper,
我们进行系统架构设计所依赖的基础设施,还包括分布式缓存系统、持久化存储、分布式消息
系统、搜索引擎,以及 CDN 系统、负载均衡系统、运维自动化系统等,还有后面章节所要介
绍的实时计算系统、离线计算系统、分布式文件系统、日志收集系统、监控系统、数据仓库等。
分布式缓存主要用于在高并发环境下,减轻数据库的压力,提高系统的响应速度和并发吞
吐。当大量的读、写请求涌向数据库时,磁盘的处理速度与内存显然不在一个量级,因此,在
数据库之前加一层缓存,能够显著提高系统的响应速度,并降低数据库的压力。
作为传统的关系型数据库,MySQL 提供完整的 ACID 操作,支持丰富的数据类型、强大的
关联查询、where 语句等,能够非常容易地建立查询索引,执行复杂的内连接、外连接、求和、
排序、分组等操作,并且支持存储过程、函数等功能,产品成熟度高,功能强大。但是,对于
需要应对高并发访问并且存储海量数据的场景来说,出于对性能的考虑,不得不放弃很多传统
关系型数据库原本强大的功能,牺牲了系统的易用性,并且使得系统的设计和管理变得更为复
杂。这也使得在过去几年中,流行着另一种新的存储解决方案——NoSQL,它与传统的关系型
数据库最大的差别在于,它不使用 SQL 作为查询语言来查找数据,而采用 key-value 形式进行
查找,提供了更高的查询效率及吞吐,并且能够更加方便地进行扩展,存储海量数据,在数千
个节点上进行分区,自动进行数据的复制和备份。
在分布式系统中,消息作为应用间通信的一种方式,得到了十分广泛的应用。消息可以被
保存在队列中,直到被接收者取出,由于消息发送者不需要同步等待消息接收者的响应,消息
的异步接收降低了系统集成的耦合度,提升了分布式系统协作的效率,使得系统能够更快地响
应用户,提供更高的吞吐。当系统处于峰值压力时,分布式消息队列还能够作为缓冲,削峰填
谷,缓解集群的压力,避免整个系统被压垮。
垂直化的搜索引擎在分布式系统中是一个非常重要的角色,它既能够满足用户对于全文检
索、模糊匹配的需求,解决数据库 like 查询效率低下的问题,又能够解决分布式环境下,由于
采用分库分表,或者使用 NoSQL 数据库,导致无法进行多表关联或者进行复杂查询的问题。
本章主要介绍和解决如下问题:
分布式缓存 memcache 的使用及分布式策略,包括 Hash 算法的选择。
常见的分布式系统存储解决方案,包括 MySQL 的分布式扩展、HBase 的 API 及使用
场景、Redis 的使用等。
如何使用分布式消息系统 ActiveMQ 来降低系统之间的耦合度,以及进行应用间的通信。
垂直化的搜索引擎在分布式系统中的使用,包括搜索引擎的基本原理、Lucene 详细的
使用介绍,以及基于 Lucene 的开源搜索引擎工具 Solr 的使用。
60 │ 大型分布式网站架构设计与实践
2.1 分布式缓
原创力文档

文档评论(0)