简介

今天我们不讲三国,我们讲一讲elasticsearch(以下简称ES)读写分离,这是个好东西,全文索引的时候使用它贼得劲,对elasticsearch索引原理不太清楚的,请自行查找相关的文章

这里不做阐述,最近我在网上找了好多,可是关于elasticsearch读写分离的文章确实少之又少,因为es不想MySQL那样的数据库有主从复制的机制,使用mycat等第三方的插件

也可以实现读写分离的效果;所以我们要根据es的分片的机制去实现读写分离,具体的原理如下图所示:

图画的比较丑,我这里再详细说明一下

1、首先我们需要配置es集群的配置文件,让es集群分为hot和cool两个区

2、然后我们在导入数据到es集群之前,首先需要创建settings,在创建settings的时候,我们需要指定分片全部分到hot区、副本数为0(增加导入数据的速度),

3、导入数据到es,这样我们导入数据的时候就是在hot区进行的

4、调整副本数为1,这样是为了后面的操作

5、修改settings,指定分区为cool区,这样数据就会复制到cool区

6、读取数据,这样我们读取数据的时候就会从cool区去读取了

ES集群环境

IP地址

端口

Es版本号

分区

10.122.33.103

9202/9302

6.4.2

Hot

10.122.33.104

9202/9302

6.4.2

hot

10.122.33.96

9202/9302

6.4.2

Cool

10.122.33.97

9202/9302

6.4.2

Cool

10.122.33.97

9202/9302

6.4.2

Cool

#######################################

配置流程

Elasticsearch配置文件:

首先我们需要配置es集群的配置文件(以下只列出了读写分离所需要的配置):

#指定node的属性标签名(也就是上面说的分区名)

node.attr.rack: hot

#强制使分片与副本分离。若只有hot标签的节点,索引只有分片可以写入,副本无法分配;若有hot、cool两种标签节点,相同分片与其副本绝不在相同标签节点上

cluster.routing.allocation.awareness.force.rack.values: hot,cool

cluster.routing.allocation.awareness.attributes: rack

指定分片分到hot区

#创建索引setting,指定分片在那个分区上(index_test1为索引名)

curl -H "Content-Type: application/json" -XPUT 'http://10.122.33.103:9202/ dm_transaction_service_sum /' -d '{

"settings" : {

"index.routing.allocation.require.rack": "hot",

"number_of_replicas" : 0

}

}'

#查看分片的情况(从查看分片的信息我们可以看到,默认的五个分片都在hot区)

导入数据到hot区

#插入数据到es

按照上面分片的结果,可以知道所有的写操作都在103和104两台机器上

更改副本数

#更改副本数为1

curl -H "Content-Type: application/json" -XPUT 'http://10.122.33.103:9202/ dm_transaction_service_sum_v20190114_new /_settings' -d '{

"number_of_replicas" : 1

}'

指定分片分区为cool

#把分片都挪到cool分区上,供后续索引查询使用

curl -H "Content-Type: application/json" -XPUT 'http://10.122.33.103:9202/ dm_transaction_service_sum_v20190114_new /_settings' -d '{

"index.routing.allocation.require.rack": "cool",

"number_of_replicas" : 0

}'

#查看集群分片的情况(现在所有的分片都在cool分区上)

怎么样,看到这里,应该明白了es读写分离了吧!!!!

如果您觉得我的文章对你有一定的帮助,帮我点个赞偶

elasticsearch实现读写分离的更多相关文章

  1. 让Elasticsearch集群冷热分离、读写分离【转】

    转自:https://blog.csdn.net/jiao_fuyou/article/details/50511255 根据Elasticsearch中文社区<ES冷热分离(读写分离) hot ...

  2. elasticsearch 冷热数据的读写分离

    步骤 一.冷热分离集群配置 比如三个机器共六个node的es集群. 每个机器上各挂载一个ssd 和 一个sata.每个机器需要启动两个es进程.每个进程对应不同类型的磁盘. 关键配置: node.ma ...

  3. 读写分离&分库分表学习笔记

    读写分离 何为读写分离? 见名思意,根据读写分离的名字,我们就可以知道:读写分离主要是为了将对数据库的读写操作分散到不同的数据库节点上. 这样的话,就能够小幅提升写性能,大幅提升读性能. 我简单画了一 ...

  4. mybatis plugins实现项目【全局】读写分离

    在之前的文章中讲述过数据库主从同步和通过注解来为部分方法切换数据源实现读写分离 注解实现读写分离: http://www.cnblogs.com/xiaochangwei/p/4961807.html ...

  5. Spring aop应用之实现数据库读写分离

    Spring加Mybatis实现MySQL数据库主从读写分离 ,实现的原理是配置了多套数据源,相应的sqlsessionfactory,transactionmanager和事务代理各配置了一套,如果 ...

  6. MySQL+Amoeba实现数据库主从复制和读写分离

    MySQL读写分离是在主从复制的基础上进一步通过在master上执行写操作,在slave上执行读操作来实现的.通过主从复制,master上的数据改动能够同步到slave上,从而保持了数据的一致性.实现 ...

  7. J2EE 项目读写分离

    先回答下 1.为啥要读写分离? 大家都知道最初开始,一个项目对应一个数据库,基本是一对一的,但是由于后来用户及数据还有访问的急剧增多, 系统在数据的读写上出现了瓶颈,为了让提高效率,想读和写不相互影响 ...

  8. mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离

    数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境. 主要思路 简单说,实现mysql主备复制-->利用mycat实现负载均衡. 比较了 ...

  9. Spring 实现数据库读写分离

    随着互联网的大型网站系统访问量的增高,数据库访问压力方面不断的显现而出,所以许多公司在数据库层面采用读写分离技术,也就是一个master,多个slave.master负责数据的实时更新或实时查询,而s ...

随机推荐

  1. I/O复用 poll简介

    1.基本概念 poll起源于SVR3,开始时局限于流设备,在SVR4时取消了此限制,允许poll工作在任何描述符上,但涉及到流设备时,它还提供了附加信息. poll的机制与select类似,与sele ...

  2. flutter 小知识

    隐藏控件,占空间 new Offstage( offstage: true, //这里控制 child: Container(color: Colors.blue,height: 100.0,), ) ...

  3. CentOS 搭建dns服务器 解析任意域名

    DNS服务器IP地址:192.168.1.219 服务器版本:centos6.6一:软件安装 [root@localhost ~]# yum -y install bind* 二:修改主配置文件 [r ...

  4. 数据挖掘Aprior算法详解及c++源码

    [算法大致描述] Aprior算法主要有两个操作,扫描数据库+统计.计算每一阶频繁项集都要扫描一次数据库并且统计出满足支持度的n阶项集. [算法主要步骤] 一.频繁一项集 算法开始第一步,通过扫描数据 ...

  5. 使ie6/7/8支持css3的方法

    使用PIE.htc让IE6\7\8支持CSS3部分属性 包括圆角,阴影,背景渐变等效果 下载地址 http://css3pie.com/download/ 需要注意几点的是 第一,pie是以相对页面h ...

  6. <python练习题>python练习题(常练勿忘)

    学了python,去面试经常出现,某个或某些库不熟悉导则想不起来怎么写,知道思路而写不出来,多半还是不够熟悉,这里就作为熟悉python的地方,多做做题,多思考. 题目1:店铺ID为00000000- ...

  7. 2019ICPC南京网络赛F Greedy Sequence

    题意:对于1<=i<=n每次找到(pos[i]-k,pos[i]+k)内不大于i的最大那个数,ans[i]=ans[mx]+1,若ans[mx]未知则递归处理ans[mx] PS:这个题比 ...

  8. C++11 auto 与 右值

    auto: auto T = xxx; // 产生一个变量,自动推导变量类型.  存在变量拷贝的消耗.auto& T = xxx; // 产生一个变量的引用,自动推导变量类型.减少拷贝的消耗. ...

  9. python redis 批量设置过期key

    在使用 Redis.Codis 时,我们经常需要做一些批量操作,通过连接数据库批量对 key 进行操作: 关于未过期: 1.常有大批量的key未设置过期,导致内存一直暴增 2.rd需求 扫描出这些ke ...

  10. 改变this 指向的3种方法

    1.在函数内部声明一个that,然后将this赋值给that, var that=this; 最后用that 代替this使用 <!DOCTYPE html> <html lang= ...