标签 架构 下的文章

后端好书阅读与推荐(六)


后端好书阅读与推荐系列文章:
后端好书阅读与推荐
后端好书阅读与推荐(续)
后端好书阅读与推荐(续二)
后端好书阅读与推荐(续三)
后端好书阅读与推荐(续四)
后端好书阅读与推荐(续五)
后端好书阅读与推荐(续六)

Elasticsearch权威指南

Elasticsearch: The Definitive Guide (豆瓣): https://book.douban.com/subject/25868239/

Elasticsearch是一个强大的开源搜索引擎(不仅如此,还是一个分布式存储实时分析系统),作为后端开发者,我们常常需要用到它,甚至是借鉴其原理来实现自己特定的功能,因为了解一下是很有必要的。这本书不仅讲了使用方法,还讲了原理,很适合我们学习与查阅。

亮点:

  • Elasticsearch使用Java开发并使用 Lucene 作为其核心来实现所有索引和搜索的功能,它的目的是通过简单的 RESTful API 来隐藏 Lucene 的复杂性。也对用户隐藏了分布式系统的复杂性,而且提供了一系列运行良好的默认值,从而让全文搜索变得简单,达到开箱即用的效果
  • ES与传统RDB的对比:
    • Relational DB -> Databases -> Tables -> Rows -> Columns
    • Elasticsearch -> Indices -> Types -> Documents -> Fields
  • ES的自动实现了分片、负载均衡、发现、冗余、选主、同步、扩展迁移、容错等功能。一个节点(node)就是一个Elasticsearch实例,而一个集群(cluster)由一个或多个节点组成,它们具有相同的cluster.name,集群中一个节点会被选举为主节点(master),它将临时管理集群级别的一些变更,例如新建或删除索引、增加或移除节点等。索引只是一个用来指向一个或多个分片(shards,是一个 Lucene 实例)的逻辑命名空间(logical namespace),分片可以是主分片(primary shard)或者是复制分片(replica shard)。索引中的每个文档属于一个单独的主分片,所以主分片的数量决定了索引最多能存储多少数据,复制分片只是主分片的一个副本,它可以防止硬件故障导致的数据丢失,同时可以提供读请求,启动新节点时集群会重新组织并均匀分配各个分片
  • ES提供了丰富的数据操纵功能,不仅有简单的查询字符串搜索(含通配符),还有DSL,可以构建更复杂、强大的查询
  • 批量请求可以减少网络往返次数开销,以及日志数量,可以提升性能(mysql也有这种做法),这个批量的大小要根据你的硬件来定制
  • 倒排索引是全文搜索的核心技术,也就是按照每个单词(经过分词后)划分归属集,存储包含这个单词的文档,检索是按照单词的,所以可以很快返回相关文档
  • ......

此外需要注意的是Elasticsearch发展太快,书籍只是用来系统性的学习的,如果真的要使用起来,还是要去官网看最新的用法,但是基本原理和思想变化是不多的。


后端好书阅读与推荐(续三)


后端好书阅读与推荐系列文章:
后端好书阅读与推荐
后端好书阅读与推荐(续)
后端好书阅读与推荐(续二)
后端好书阅读与推荐(续三)

这里依然记录一下每本书的亮点与自己读书心得和体会,分享并求拍砖。

实战Java高并发程序设计

实战Java高并发程序设计 (豆瓣) https://book.douban.com/subject/26663605/

这本书是国产书籍里面质量较高的一本了(很多国产书都是东拼西凑或者敷衍了事),作者从实际出发,结合理论,讲的很有逻辑,而且还有很多形象的手绘,和那本Java并发编程实战相比更新一些,读起来也更容易一些。