Redis集群_Redis-cluster_ElasticSearch全文检索总结

一、redis集群

1、集群认识:

多台服务器集中在一起,实现同一业务。如:数据库集群、应用集群、功能集群。

2、分布式认识:

不同模块分布在不同服务器。

3、对比:

(1)相同点:都能处理高并发,而且都需要多台服务器协同。
(2)不同点:分布式中不同服务器处理是不同业务.而集群处理时同一业务。
(3)一般在一个系统中:一般在一个系统中同时存在分布式和集群,将不同业务分布到不同集群。

4、为什么使用集群:

(1)防止单点故障;
(2)处理高并发,太多请求一台服务器搞不定;
(3)处理大量数据,太多内存数据一台服务器搞不定;

5、集群特点及能力:

集群具备特性:
(1)可扩展性:新功能可不断增加服务器;
(2)高可用性:解决单点故障;
集群具备能力:
(1)负债均衡:合理分配请求到集群各服务器;
(2)错误恢复能力:主备用负债均衡器(虚拟IP);

6、Redis集群方案:

(1)主从复制:主从同步,读写分离,主备切换;只解决了高并发。

a、优点:
支持主从复制,主机会自动将数据同步到从机,可以进行读写分离;
b、缺点:
①Redis不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。
②主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。
③Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。
只解决高并发

(2)哨兵模式:

a、监控主服务器和从服务器是否正常运行。
b、主服务器出现故障时自动将从服务器转换为主服务器。
c、主从可以自动切换,系统更健壮,可用性更高。
d、缺点:Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂

(3)Redis-Cluster集群(采纳)

优点:处理高并发,完成主从同步,读写分离,主备切换,自动切换,分布式存储
缺点:麻烦一点 扩容还是比较麻烦

7、java操作redis-cluster集群

 	Set<HostAndPort> nodes = new HashSet();
        nodes.add(new HostAndPort("127.0.0.1", 6379));
        nodes.add(new HostAndPort("127.0.0.1", 6380));
        nodes.add(new HostAndPort("127.0.0.1", 6381));
        nodes.add(new HostAndPort("127.0.0.1", 6382));
        nodes.add(new HostAndPort("127.0.0.1", 6383));
        nodes.add(new HostAndPort("127.0.0.1", 6384));
        JedisCluster cluster = new JedisCluster(nodes);

8、集群面试题

(1)简单说一下你对分布式理解?

不同功能分布在不同服务器集群中。

(2)简单说一下你对集群理解?

多个服务器完成同一个任务。

(3)说一下分布式和集群联系和区别

一般在一个系统中同时存在分布式和集群,将不同业务分布到不同集群。

(4)redis集群方式有哪些?

主从复制;哨兵模式;Redis-Cluster集群。

(5)简单说一下redis-cluster里面槽?

槽是存放数据,存放是要通过key计算槽位,选择对应的服务器来存储,获取也是同样的算法。
默认16384个槽位要均匀分布到主节点上面
为了槽里面数据安全要对主节点进行1-N从节点备份。

(6)简单说一下redis-cluster里面选举投票机制

所有master主节点都参与投票,默认半数以上挂点,启动容错机制,提升从节点为主节点。

(7)怎么通过命令连接redis集群 redis-cli -c -h -p
(8)怎么通过jedis连接集群?

创建配置对象;设置四个参数;创建Jedis对象。

二、ElasticSearch全文检索。

1、ES认识

elasticSearch全文检索。

2、为什么不直接使用luence?为什么要使用ES?

(1) Luence 的API操作特别繁琐,用起来不方便,所以我们要学习ElastisSearch,
(2) 而且ES它支持分布式集群
(3)通过发送restfull 风格就可以完成的数据操作
put/delete/post/get
(4)上手Elasticsearch非常容易。

3、 ES特点

特点1:分布式的实时文件存储,每个字段都被索引并可被搜索
特点2:分布式的实时分析搜索引擎
KB-MB-GB-TB-PB
特点3:可以扩展到上百台服务器,处理PB级结构化或非结构化数据
特点4:高度集成化的服务,你的应用可以通过简单的 RESTful API、各种语言的客户端甚至命令行与之
交互。
特点5:上手Elasticsearch非常容易。

4、 其他的全文搜索框架,ES和Solr的比较–面试题

(1)ES 在实时搜索效率要高于solr
(2)solr它是重量级 用起来做很多配置,但是功能很强大
(3)共同点 它们都是支持分布式

5、 安装es服务器

(1)下载 解压 就可以运行
(2)es在启动服务的,已经在集群环境里面,设置分片:shared (分成主分片primary shared 从分片 replica shared)
(3)服务器健康状态:
red:红色 – 主分片 和 从分片都不能使用
yellow:黄色 – 主分片可以使用 从分片丢失
green: 绿色 – 主分片和从分片都可以使用 --保证单点故障

6、 操作ES的客户端

curl
-推荐使用Kibana5
red–>yellow–>green(健康状态)
luence操作:
​创建索引 – 搜索索引
index索引 document文档 field
ES:索引库(index)/表(type)/

7、使用:

(1)restfull 风格:

PUT /crm/employee {}
GET /crm/employee/1
POST /crm/employee/1 {}
DELETE /crm/employee/1

(2)ES的增删改查:

PUT index/type/id —自己指定一个id值 (id唯一标识)
POST index/type --自动生成唯一标识
GET index/type/id --查询
GET index/type/id?_source=name,age --查询
GET index/type/id/_source
DELETE index/type/id

猜你喜欢

转载自blog.csdn.net/weixin_44671176/article/details/100753821