`

《大型分布式网站架构设计与实践》-试读

阅读更多

最近几年计算机领域中最火的无疑是大数据、云(可能是由于马云也带云吧尴尬),连我这个没有使用到的人也在各种媒体,各种博客和资讯中被狂轰乱炸中被动接受,因此对于像我这样在项目中没有直接接触到各种云、大数据、分布式的人,需要一本来全面的介绍和解释这种技术或这种概念的书籍,闲来无事正好赶上试读活动就来拜读下,由于水平太烂,如有不正之处,还请各位看官多多指教。

 

正如作者所说:

一个大型、稳健、成熟的分布式系统的背后,往往会涉及众多的支撑系统,我们将这些支撑系统称为分布式系统的基础设施。

 本书的试读章节主要介绍了构建分布式网站所依赖的基础设施,作者给我们详细介绍了这些内容,如安装,运行,甚至有些可以让读者直接轻松入门,还有一些项目中会使用到的解决方案,比如Mysql的扩展(业务拆分、复制策略、分表与分库)。

 

分布式系统的基础设施

分布式缓存——memcache

memcache用于在应用中减少对数据库的访问,提高应用的访问速度,并降低数据库的负载。memcache为了在内存中提供数据的高速查找能力,memcache 使用 key-value 形式存储和访问数据,在内存中维护一张巨大的 HashTable,使得对数据查询的时间复杂度降低到 O1),保证了对数据的高性能访问。内存的空间总是有限的,当内存没有更多的空间来存储新的数据时,memcache就会使用 LRULeast Recently Used)算法,将最近不常访问的数据淘汰掉,以腾出空间来存放新的数据。

书中详细介绍分布式缓存的典型代表memcache,以及memcache的前世今生和算法原理,配合memcache APIdemo结合,使读者可以快速的入门。

  

持久化存储——MySQLHBase

MySQL作为开源关系型数据库的典范,正越来越广泛地被互联网企业所使用。作者通过对传统系统使用Mysql中遇到的问题结合实际案例来给出相应的解决方案,MySQL 扩展,业务拆分,复制策略,分表与分库等,让读者大呼过瘾。

HBase做为天生就能够很好地支持海量数据的存储,能够以更友好、更方便的方式支持表的分区,并且 HBase 还支持多个 Region Server 同时写入,能够较为方便地扩展系统的并发写入能力。并发写入性能十分出色。但HBase本身所支持的查询维度有限,难以支持复杂的条件查询,如 group byorder byjoin 等,这些特点使它的应用场景受到了限制。

 

消息系统 ——ActiveMQ & JMS 

   分布式系统中,消息系统的应用十分广泛,消息可以作为应用间通信的一种方式。消息被保存在队列中,直到被接收者取出。由于消息发送者不需要同步等待消息接收者的响应,消息的异步接收降低了系统集成的耦合度,提升了分布式系统协作的效率,使得系统能够更快地响应用户,提供更高的吞吐。

 

垂直化搜索引擎 

     Lucene 为搜索引擎提供了强大的、令人惊叹的 API,在企业的垂直化搜索领域得到了极为广泛的应用。为了学习搜索引擎的基本原理,有效地使用 Lucene,并将其引入到我们的应用程序当中,本节将介绍 Lucene 的一些常用的 API 和使用方法,以及索引的优化和分布式扩展。

Solr 是一个基于 Lucene、功能强大的搜索引擎工具,它对 Lucene 进行了扩展,提供一系列功能强大的 HTTP 操作接口,支持通过 Data Schema 来定义字段、类型和设置文本分析,使得用户可以通过 HTTP POST 请求,向服务器提交 Document,生成索引,以及进行索引的更新和删除操作。对于复杂的查询条件,Solr 提供了一整套表达式查询语言,能够更方便地实现包括字段匹配、模糊查询、分组统计等功能;同时,Solr 还提供了强大的可配置能力,以及功能完善的后台管理系统。Solr 的架构如图 2-25 所示。

  

5其他基础设施 

除了前面所提到的分布式缓存、持久化存储、分布式消息系统、搜索引擎,大型的分布式系统的背后,还依赖于其他支撑系统,包括后面章节所要介绍的实时计算、离线计算、分布式文件系统、日志收集系统、监控系统、数据仓库等,以及本书没有详细介绍的 CDN 系统、负载均衡系统、消息推送系统、自动化运维系统等。

 

 谈谈个人项目

本人在项目中只使用过memcacheActiveMQ & JMS, No-sql使用过mongdb。在这里简单说下使用过的mongdb

说实话使用mongdb的项目其实是比较坑的,因为在项目中使用的数据远远没有达到海量,其实一个Mysql处理起来就绰绰有余,但是由于大数据太火了,现在做项目你要是不说你的项目大、不说你的项目是分布式的、不说你的项目处理数据能力强,你出去都不好意思和别人打招呼。唉!不说了说多了都是泪啊。基于此,所以就在项目上用上了mongdb来处理我们系统的“大数据”。但是那种把mongdb当作为普通数据库来使用的淡淡忧伤没有经历过的人是不会懂的,比如典型Nosql没有Join导致无法进行多表关联或者进行复杂查询的问题,因此要做一些冗余字段来方便查询和计算,但是mongdb的优点使用起来也是相当方便,尤其是数据结构变动时,基本上完全不用考虑mongdb数据库,直接添加/删除字段就OK!

 

 总结:

作者结合自己在阿里巴巴及淘宝网的实际工作经历展开论述。《大型分布式网站架构设计与实践》既可供初学者学习,帮助读者了解大型分布式网站的架构,以及解决问题的思路和方法,也可供业界同行参考,给日常工作带来启发。在书中通过一些架构设计的典型案例,帮助读者了解大型分布式网站设计的一些常见场景及遇到的问题,是一本非常赞的书籍,值得拥有。

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics