es的三种缓存

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es的三种缓存相关的知识,希望对你有一定的参考价值。

参考技术A 也称filter cache,作用是对一个查询中包含的过滤器执行结果进行缓存,满足了term, range过滤器的clause会被缓存(5.1.1版本term被 取消了 ),bool不会被缓存,但是bool过滤器包含的子term会被缓存。
curl "http://$HOST/_nodes/stats/indices/query_cache,request_cache,fielddata?pretty&human"

当一个查询发送到es cluster的某个节点上时,这个节点会把该查询扩散分发到其余节点,并在相应分片上执行,将分片上执行的结果成为“本地结果集”。这些本地结果集最终会汇集到最初请求到达的那个协调节点,这些“分片级”的“本地结果集”会合并成“全局结果集“。query-and-fetch里面的query过程。request cache就是缓存这些”分片级本地结果集“的。但是request cache在每次refresh_interval后就会被清空,所以其生命周期是一个refresh_interval。(个人感觉不需要开启)

field data与doc_values作用一样,都是让我们在inverted index倒排索引的基础上做aggregation统计、sort排序。

squid的三种模式

一、squid代理服务器概述;

概述:Squid Cache(简称为Squid)是http代理服务器软件。Squid用途广泛,可以作为缓存服务器也可以作为缓存代理服务器,代理用户向web服务器请求数据并进行缓存,可以过滤流量帮助网络安全,也可以作为代理服务器链中的一环,向上级代理转发数据或直接连接互联网。还也可以用在局域网中,使局域网用户通过代理上网;Squid将数据缓存在内存中,同时也缓存DNS查寻的结果,除此之外,它还支持非模块化的DNS查询,对失败的请求进行消极缓存。Squid支持SSL,支持访问控制;

优势:

1.提高客户端访问速度;

2.隐蔽内部主机的ip地址;

3.部署简单,可以实现访问控制;

作用

——代理上网(正向代理,透明代理)

——网站静态页面缓存加速(反向代理)

1、普通代理(也叫传统代理,正向代理)

客户端必须在自己的浏览器里指定代理服务器的ip地址和代理服务监听的端口号,才能通过squid代理服务器上网。

技术图片

 

 

2、透明代理

透明代理,本质作用是和普通代理是一样的,但是透明代理,客户端不需要在自己的浏览器里指定代理服务器的ip地址和代理服务监听的端口号,给客户端的感觉自己是直接和公网通信,但是必须把网关地址指向代理服务器的内网接口ip地址。

技术图片

 

 

 3、反向代理

传统和透明是为客户端服务的,借助squid加快访问web服务的速度,或者是公司内部对员工上网行为做限制使用的,而反向代理模式下的squid的服务对象是web服务器,通过squid来隐藏真实web服务器IP,加快客户的访问速度,还有负载均衡的功能。

技术图片

 

 

 二、部署实验

1、正向代理
内网客户机 (ens33:192.168.40.133)

squid服务器 (ens33:192.168.40.132     ens36:192.168.40.128)

web务器 (ens33:192.168.40.211 部署测试页面)

配置内网客户机 ,将默认路由指向squid服务器的内网IP(ens33的IP)

[root@localhost ~]#  route add default gw 192.168.40.132
安装linux图形化和火狐浏览器用户接下来的测试

# yum groupinstall "X Windows System" "Desktop"  (也可以直接用Linux图形化版测试)

# yum install firefox

安装、配置ssquid服务器

# yum install squid

修改squid主配置文件/etc/squid/squid.conf 、在squid监听端口下加入,不写会报错,随意一个地址都可以

# vim  /etc/squid/squid.conf

http_port 192.168.40.132:3128
cache_mem 64 MB
cache_dir ufs /opt/squid_cache 1000 16 256
cache_effective_user squid
cache_effective_group squid
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
http_access allow all
visible_hostname proxy.test.com
cache_mgr webmaster@test.com
编辑内核参数,开启路由转发

# vim /etc/sysctl.conf  (永久生效)

net.ipv4.ip_forward = 1          (echo "1" > /proc/sys/net/ipv4/ip_forward     临时生效)

# sysctl -p        (刷新内核参数)
net.ipv4.ip_forward = 1

# service squid restart 
Redirecting to /bin/systemctl restart squid.service
测试结果,客户机切换至图形化然后再用火狐浏览器上添加代理服务器

# init 5 #切换至图形化

把代理设置成  squid服务器

技术图片

 

 

 内网客户机  通过squid代理 成功访问web服务器

技术图片

 

 

访问web服务器的ip就能看见网页了,值得一提的是squid是具有缓存web服务器静态资源的功能的,因为这里的网站首页本身就是一个html的静态文件,当你第一次访问过后,squid服务器就已经把首页文件缓存到自己的磁盘上了也就是说即使现在把web服务器上的web服务关闭了,网页也可以通过squid的缓存正常访问的!
想在命令行终端使用SQUID需要在/etc/profile/环境变量的文件里添加一个环境变量

export HTTP_PROXY=http://192.168.10.10:3128

2、透明代理部署

大部分与正向代理一样

不同点:透明模式因为客户机不用指定squid的代理IP所以squid就要在自己的配置文件里声明是用哪块网卡代理的请求,后面的transparent代表的是透明模式

# vim  /etc/squid/squid.conf

http_port 192.168.40.132:3128 transparent  (加上)
squid服务器防火墙配置

这条规则的作用在于:经过ens33网卡 这个网段 所有的80端口的请求,全部转发给3128端口

# iptables -t   nat  -I  PREROUTING   -i ens33  -s  192.168.40.0/24  -p tcp  --dport  80  -j  REDIRECT  --to  3128

重启squid

# service squid restart

squid限制客户机请求资源大小

将这一条写入squid的主配置文件客户机请求的资源就不能超过100MB了(写在visible_hostname下面)

reply_body_max_size 100 MB

注意取消132的代理,换为默认

技术图片

3、反向代理部署
——squid服务器 (ens33内网:192.168.40.132    ens33公网:10.0.128.1)
——内网web服务器 (ens33内网:192.168.40.211 )
——内网web服务器 (ens33内网:192.168.40.155)
——外网客户机  windos10  ip  10.0.128.247  gw  10.0.128.1
web服务器配置

web服务器155、211安装Apache,并写一个网站的首页文件,这里的web服务要将自己的网关配置为squid的ens33的IP

# vim /etc/sysconfig/network-scripts/ifcfg-ens33  (或者router add default gw 192.168.40.132)
GATEWAY=192.168.40.132
[root@localhost ~]# curl 192.168.40.211
haha
[root@localhost ~]# curl 192.168.40.155
wq

配置、安装squid
# yum -y install squid

改squid主配置文件,定位到59行左右,如下修改

http_port 10.0.128.4:80 vhost               
cache_mem 64 MB
cache_dir ufs /opt/squid_cache 1000 16 256
cache_effective_user squid
cache_effective_group squid
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
http_access allow all
visible_hostname proxy.test.com
cache_mgr webmaster@test.com
cache_peer 192.168.40.211 parent 80 0 originserver round-robin
cache_peer 192.168.40.155 parent 80 0 originserver round-robin
~                                                              

 

以上是关于es的三种缓存的主要内容,如果未能解决你的问题,请参考以下文章

hibernate的三种状态和缓存

使用memcache处理缓存的三种方案

TimesTen 应用层数据库缓存学习:19. 理解AWT缓存组的三种模式

Java三大框架之——Hibernate中的三种数据持久状态和缓存机制

hibernate的三种对象状态

HIbernate学习笔记3 之 缓存和 对象的三种状态