elasticsearch实现读写分离
简介
今天我们不讲三国,我们讲一讲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实现读写分离的更多相关文章
- 让Elasticsearch集群冷热分离、读写分离【转】
转自:https://blog.csdn.net/jiao_fuyou/article/details/50511255 根据Elasticsearch中文社区<ES冷热分离(读写分离) hot ...
- elasticsearch 冷热数据的读写分离
步骤 一.冷热分离集群配置 比如三个机器共六个node的es集群. 每个机器上各挂载一个ssd 和 一个sata.每个机器需要启动两个es进程.每个进程对应不同类型的磁盘. 关键配置: node.ma ...
- 读写分离&分库分表学习笔记
读写分离 何为读写分离? 见名思意,根据读写分离的名字,我们就可以知道:读写分离主要是为了将对数据库的读写操作分散到不同的数据库节点上. 这样的话,就能够小幅提升写性能,大幅提升读性能. 我简单画了一 ...
- mybatis plugins实现项目【全局】读写分离
在之前的文章中讲述过数据库主从同步和通过注解来为部分方法切换数据源实现读写分离 注解实现读写分离: http://www.cnblogs.com/xiaochangwei/p/4961807.html ...
- Spring aop应用之实现数据库读写分离
Spring加Mybatis实现MySQL数据库主从读写分离 ,实现的原理是配置了多套数据源,相应的sqlsessionfactory,transactionmanager和事务代理各配置了一套,如果 ...
- MySQL+Amoeba实现数据库主从复制和读写分离
MySQL读写分离是在主从复制的基础上进一步通过在master上执行写操作,在slave上执行读操作来实现的.通过主从复制,master上的数据改动能够同步到slave上,从而保持了数据的一致性.实现 ...
- J2EE 项目读写分离
先回答下 1.为啥要读写分离? 大家都知道最初开始,一个项目对应一个数据库,基本是一对一的,但是由于后来用户及数据还有访问的急剧增多, 系统在数据的读写上出现了瓶颈,为了让提高效率,想读和写不相互影响 ...
- mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离
数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境. 主要思路 简单说,实现mysql主备复制-->利用mycat实现负载均衡. 比较了 ...
- Spring 实现数据库读写分离
随着互联网的大型网站系统访问量的增高,数据库访问压力方面不断的显现而出,所以许多公司在数据库层面采用读写分离技术,也就是一个master,多个slave.master负责数据的实时更新或实时查询,而s ...
随机推荐
- 带头节点的单链表-------C语言实现
/***************************************************** Author:Simon_Kly Version:0.1 Date:20170520 De ...
- ArcGIS version not specified.
问题 在调用arcgis10 的ISurface用来取指定航线的地形时,这段代码在加载.dem时总是出错. 报: Fail to open raster dataset 解决方法: 在窗体中加载Map ...
- 【转】/bin/bash^M: bad interpreter: 没有那个文件或目录
运行脚本时出现了这样一个错误,打开之后并没有找到所谓的^M,查了之后才知道原来是文件格式的问题,也就是linux和windows之间的不完全兼容,解决的方法有两种: 1 如果os中已经安装dos2un ...
- PAT_A1112#Stucked Keyboard
Source: PAT A1112 Stucked Keyboard (20 分) Description: On a broken keyboard, some of the keys are al ...
- 用mybatis进行模糊查询总是查不到结果!
//IStudentDao.xml @Override public List<Student> selectStudentByName(String name) { SqlSession ...
- jQuery中html()再探究(转载)
我们先来看段代码,很简单,如下: /*html部分*/ <div id="div1"> <span>111</span> <span> ...
- Front Page
General Team FST stay night from ShanDong University 19 - 20 CCPC QinHuangDao Gold (4 th) IUPC YinCh ...
- 几何问题 poj 1408
参考博客: 用向量积求线段焦点证明: 首先,我们设 (AD向量 × AC向量) 为 multi(ADC) : 那么 S三角形ADC = multi(ADC)/2 . 由三角形DPD1 与 三角形CPC ...
- Ubuntu安装mongo可视化工具
一.robo 3T 是mongodb的一个非常好用的可视化管理工具,曾经名为robomongo,现在被收购后改名为robo 3T.且现在robo 3T 1.1版本能支持mongodb3.4.现在在Ub ...
- 干货满满!10分钟看懂Docker和K8S
2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司. 这家公司主要提供基于PaaS的云计算技术服务.具体来说,是和LXC有关的容器技术. LXC,就是Linux容器虚 ...