剖析Elasticsearch集群系列涵盖了当今最流行的分布式搜索引擎Elasticsearch的底层架构和原型实例. 本文是这个系列的第一篇,在本文中,我们将讨论的Elasticsearch的底层存储模型及CRUD(创建.读取.更新和删除)操作的工作原理. Elasticsearch是当今最流行的分布式搜索引擎,GitHub. SalesforceIQ.Netflix等公司将其用于全文检索和分析应用.在Insight,我们用到了Elasticsearch的诸多不同功能,比如: 全文检索 比如找…
转载:http://www.infoq.com/cn/articles/analysis-of-elasticsearch-cluster-part01 1.辨析Elasticsearch的索引与Lucene的索引 Elasticsearch中的索引是组织数据的逻辑空间(就好比数据库).1个Elasticsearch的索引有1个或者多个分片(默认是5个).分片对应实际存储数据的Lucene的索引,分片自身就是一个搜索引擎.每个分片有0或者多个副本(默认是1个).Elasticsearch的索引还…
转载:http://www.infoq.com/cn/articles/anatomy-of-an-elasticsearch-cluster-part02 共识——裂脑问题及法定票数的重要性 共识是分布式系统的一项基本挑战.它要求系统中的所有进程/节点必须对给定数据的值/状态达成共识.已经有很多共识算法诸如Raft.Paxos等,从数学上的证明了是行得通的.但是,Elasticsearch却实现了自己的共识系统(zen discovery),Elasticsearch之父Shay Banon在…
转载:http://www.infoq.com/cn/articles/anatomy-of-an-elasticsearch-cluster-part03 近实时搜索 虽然Elasticsearch中的变更不能立即可见,它还是提供了一个近实时的搜索引擎.如前一篇中所述,提交Lucene的变更到磁盘是一个代价昂贵的操作.为了避免在文档对查询依然有效的时候,提交变更到磁盘,Elasticsearch在内存缓冲和磁盘之间提供了一个文件系统缓存.内存缓存(默认情况下)每1秒刷新一次,在文件系统缓存中使…
Redis介绍: 一.介绍 redis 是一个开源的.使用C语言编写的.支持网络交互的.可以基于内存也可以持久化的Key-Value数据库. redis的源码非常简单,只要有时间看看谭浩强的C语言,在去看redis的源码能看懂50-60%. redis目前最大的集群应该是新浪的应该. redis目前是vmvaer来支持的,很多的开源软件都需要某些组织来支持的.如果一个开源软件没有金钱来支持的话很难走的持久   二.Redis和Memcache对比…
解剖 Elasticsearch 集群 - 之三 本篇文章是一系列涵盖 Elasticsearch 底层架构和原型示例的其中一篇.在本篇文章中,我们会讨论 Elasticsearch 如何提供准实时搜索以及如何在搜索相关度计算与延迟间权衡. 在之前的文章中,我们讨论了 Elasticsearch 如何应对分布式系统的一些基本挑战.这里我们主要讨论: Elasticsearch 的准实时 为什么深度分页会很危险? 权衡搜索相关度的计算 准实时搜索(Near real-time search) El…
解剖 Elasticsearch 集群 - 之一 本篇文章是一系列涵盖 Elasticsearch 底层架构和原型示例的其中一篇.在本篇文章中,我们会讨论底层的存储模型以及 CRUD(创建.读取.更新和删除)操作在 Elasticsearch 中是如何工作的. 全文搜索(Full-text search) 例如,找到与搜索词最为相关的维基百科文章. 聚合(Aggregations) 例如,对搜索词在广告网络中进行直方图可视化展示. 空间地理位置 API(Geospatial API) 例如,拼车…
在分布式系统中,应用数量众多,应用调用链复杂,常常使用ELK作为日志收集.分析和展示的组件.本篇文章将讲讲解如何部署ELK,然后讲解如何使用Filebeat采集Spring Boot的日志输出到Logstash上,logstash再将日志输出到Elasticsearch上,最后展示到kibana上面.整个日志采集流程如下图: 在传统的日志采集只会用ELK,那么为什么需要使用filebeat呢,因为logstash是java应用,解析日志是非的消耗cpu和内存,logstash安装在应用部署的机器…
Elasticsearch 是一个极其强大的搜索和分析引擎,其强大的部分在于能够对其进行扩展以获得更好的性能和稳定性. 本教程将提供有关如何设置 Elasticsearch 集群的一些信息,并将添加一些操作技巧和最佳实践来帮助您入门.但应该强调的是,每个 Elasticsearch 设置可能会因多种因素而异,包括服务器上的工作负载.索引数据量.硬件规格,甚至操作员的经验. 什么是 Elasticsearch 集群? 顾名思义,Elasticsearch 集群是一组连接在一起的一个或多个 Elas…
之前在IDC机房线上环境部署了一套ELK日志集中分析系统, 这里简单总结下ELK中Elasticsearch健康状态相关问题, Elasticsearch的索引状态和集群状态传达着不同的意思. 一.  Elasticsearch 集群健康状态一个 Elasticsearch 集群至少包括一个节点和一个索引.或者它 可能有一百个数据节点.三个单独的主节点,以及一小打客户端节点——这些共同操作一千个索引(以及上万个分片).但是不管集群扩展到多大规模,你都会想要一个快速获取集群状态的途径.Cluste…