1.课程介绍
1. 集群与分布式概述;(掌握)
2. redis集群方案选择;(掌握)
3. Redis-Cluster概述;(掌握)
4. Redis-Cluster环境搭建;(掌握)
5. Redis-Cluster环境测试;(掌握)
认识ElasticSearch(了解)
2. ES的及其工具的安装(了解)
3. Restful认识(了解)
4. RestApi模式的文档增删改查(了解)
5. DSL查询与过滤(掌握)
6. 分词与映射(掌握)
7. ES的Java API(掌握)
redis集群
什么是集群:
集群就是 很多服务器组成的一个网络。指的是将多台服务器集中在一起,实现同一业务。
分布式
多个服务器 去处理不同的业务
往往后面使用的时候,分布式和集群一起来用
redis集群方案
(1)主从复制
优点:
处理高并发 完成 主从同步 读写分离 主备切换
缺点:
服务宕机之后,需要手动启动,会造成一些数据的丢失
(2)哨兵模式
优点:
处理高并发 完成 主从同步 读写分离 主备切换 自动切换
缺点:
服务里面存储的数据都是一样,占用内存比较大 … 扩容比较麻烦
(3)redis-cluster(推荐)
优点:
处理高并发 完成 主从同步 读写分离 主备切换 自动切换, 分布式存储
缺点:麻烦一点 扩容还是比较麻烦
什么是Redis-Cluster
为何要搭建Redis集群。Redis是在内存中保存数据的,而我们的电脑一般内存都不大,这也就意味着Redis不适合存储大数据,适合存储大数据的是Hadoop生态系统的Hbase或者是MogoDB。Redis更适合处理高并发,一台设备的存储能力是很有限的,但是多台设备协同合作,就可以让内存增大很多倍,这就需要用到集群。
分布存储机制-槽
容错机制-投票
Redis 3.2
需要 6 台 redis 服务器。搭建伪集群。
需要 6 个 redis 实例。
需要运行在不同的端口 6379-6384
2.5.2.Jedis代码测试
@Test
public void testCluster() throws IOException, InterruptedException {
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);
try {
String res = cluster.get("name");
System.out.println(res);
// cluster.quit();
} catch (Exception e) {
e.printStackTrace();
// cluster.quit();
}
}
}
ElasticSearch(简称ES)
ES即为了解决原生Lucene使用的不足,优化Lucene的调用方式,并实现了高可用的分布式集群的搜索方案,其第一个版本于2010年2月出现在GitHub上并迅速成为最受欢迎的项目之一。
首先,ES的索引库管理支持依然是基于Apache Lucene™的开源搜索引擎。
ES也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
不过,ES的核心不在于Lucene,其特点更多的体现为:
分布式的实时文件存储,每个字段都被索引并可被搜索
分布式的实时分析搜索引擎
可以扩展到上百台服务器,处理PB级结构化或非结构化数据
高度集成化的服务,你的应用可以通过简单的 RESTful API、各种语言的客户端甚至命令行与之
交互。
上手Elasticsearch非常容易。它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。它拥有开瓶即饮的效果(安装即可使用),只需很少的学习既可在生产环境中使用。
ElasticSearch是什么
和Lucene一样,都是用来做全文检索(创建索引和搜索索引).只是lucene是全文检索工具包,而ES是全文搜索服务器.
相关概念理解
(1)Near Realtime(NRT)
(2)Index:索引库
(3)Type:类型
(4)Document&field
(5)Cluster
(6)Node
(7)shard
(8)replica(ˈreplɪkə,复制品)
集群健康状态
针对一个索引,Elasticsearch 中其实有专门的衡量索引健康状况的标志,分为三个等级: green,绿色。这代表所有的主分片和副本分片都已分配。你的集群是 100% 可用的。
yellow,黄色。所有的主分片已经分片了,但至少还有一个副本是缺失的。不会有数据丢失,所以搜索结果依然是完整的。不过,你的高可用性在某种程度上被弱化。如果更多的分片消失,你就会丢数据了。所以可把 yellow 想象成一个需要及时调查的警告。
red,红色。至少一个主分片以及它的全部副本都在缺失中。这意味着你在缺少数据:搜索只能返回部分数据,而分配到这个分片上的写入请求会返回一个异常。如果你只有一台主机的话,其实索引的健康状况也是 yellow,因为一台主机,集群没有其他的主机可以防止副本,所以说,这就是一个不健康的状态,因此集群也是十分有必要的