周期学习计划(1.1) ES的基础

学习目标:

  1. es官网https://www.elastic.co/cn/elasticsearch/
  • 什么是ES,Es解决了什么问题
  • 分布式存储与搜素功能对比 Lucene,solr,es
  • es的基本术语
  • ES集群架构原理
  • Es如何解决脑裂问题
  • es如何处理读写

学习内容:

  • 什么是ES,Es解决了什么问题

ES是一种分布式搜索引擎,

解决了空格支持,拆词查询,搜索内容不能高亮,海量数据查库的问题

  • 分布式存储与搜素功能对比 Lucene,solr,es

luncene是一个类库,里面的很多功能需要自己去实现

solr基于lucene做了很多的封装.现在国外很多大厂在用

Es也是基于lucene. 支持数据导到pb级别,目前市场占有率es大于solr.

 

  • es的基本术语
esmysql 
index 
文档cocument 
字段fields 

 

es中的存储情况

stu_index

{
    age:123,
    name:'aber'
},
{
    age:124,
    name:'aber'
},
{
    age:126,
    name:'aber'
}

 

  • 核心概念

映射mapping 表结构定义

近实时NRT 近实时

结点node 每一台服务器

shard replica 数据分片和备份

  • ES集群架构原理

类似于kafuka的模式,首先将所有数据分散到每一个服务器上,然后会在其他设备上做一个replica. 需要注意的是只有shard提供查询,replica只有在shard挂起的时候才会启用.

倒排索引

es的安装

es的监控工具es head

首先查下github

可以得只三种方式, google浏览器插件 es head(推荐). 编译git hub代码. docker

https://github.com/zt1115798334/elasticsearch-head-master

There are multiple ways of running elasticsearch-head.

Running with built in server
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
open http://localhost:9100/
This will start a local webserver running on port 9100 serving elasticsearch-head

中间可能会有nodejs的环境要求,需要安装好. 要node -v 和npm --v生效

访问的时候需要解决跨域问题修改elasticsearch,yml

新增配置打卡跨域功能

http.cors.enabled:true

http.cors.allow-origin:*

然后kill 进程,重启elasticsearch

访问http://ip:9200

  • 集群宕机高可用

可以通过页面设置索引名称(表名).以及分片和副本数量.然后系统会随机布局.主分片在页面会有标志.

宕机时的分片重新生效

注意这里和卡夫卡有区别,kafka的恢复结点只能作为从节点, 而es恢复以后是可以作为主节点的

kafka同一个topic的数据可以按照partion(quene)的方式分在不同的broker(服务器里面).然后同步到其他分片,恢复时候使用的是通过设置的同步最大延迟判断设备是In sync replicas(ISR)和out sync replicas(OSR).然后从ISR里面选一个作为master.

而es是同一个index(表)只能在一个服务器里面.

集群脑裂

当宕机的服务器恢复的时候,没有和其他服务器一起组建集群.(比如通信故障).这个时候恢复的集群就会把自己投票成为master.因为这个master的往往没有所有的数据,就会造成内容不全

如何解决脑裂:

修改投票人数 :这个n代表着最开始设置结点的时候设置的值.在7.x的过程这个参数被取消,恢复时候预防脑裂的功能交给了es自己实现.

  • 文档读写原理

当发生写文档的时候,首先找到协调结点(客户端访问哪台哪台就是,如果是域名那就是是负载句均衡发给谁谁就是.所以协调结点是个逻辑概念,不是物理概念)

这里和kafka完全不一致,kafka读写都只能在master

 

 

 


学习时间:

2021.0428


学习产出:

  • es解决的什么问题,什么场景下使用

es解决的是传统数据库无法解决的搜索引擎的问题,也就是大数据量下的快速模糊搜索.

  • es的存储方式和基本概念

es最核心的两个元素就是服务器(master/slave)和index(对应数据库的表). 在存储的时候会通过json存储原始内容, 通过分词生成倒排序序列. 在创建index的时候可以指定主节点分配地址和用几个replica.每个节点都是全量存储.

  • es是如何进行读写的

写的时候首先访问到协调服务器(访问谁谁就是协调服务器).然后首先找到你index的master服务器(如果在本机就省了).先将内容写入master,然后将内容同步到slave.slave再反馈给协调服务器.协调服务器会在所有节点同步完再返回给客户端.

读的时候首先访问协调服务器,协调服务轮询分配一个master或者slave返回数据

  • es的读写和kafka,rocket有什么区别

相同点二者都是有mater节点, 写的时候都是从master开始,二者脑裂都由内部解决

区别在于

  1. es的写完后会开始阻塞执行同步slave,等所有切片执行写操作成功后才会内容.而kafka不是,kafka的master操作完成异步同步slave,并且根据slave同步的速度区分出In sync replicas(ISR)和out sync replicas(OSR).所以主从同步速度对es影响远大于kafka
  2. es数据按照index存储,master和salve数据都是全量的.  .而kafka同一个topic分为多个quene.每个quene存储一部分topic数据.
  3. es读的时候协调结点把请求轮询发送给master和slave,都可以输出内容,而kafka只能master结点输出
  4. es服务器恢复后可能作重新为master.kafka只能作为slave

 

 

下一篇: https://blog.csdn.net/habazhu1110/article/details/116237163

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值