1.集群
1.1什么是集群:
集群就是 很多服务器组成的一个网络。指的是将多台服务器集中在一起,实现同一业务。
1.2为什么要集群:
一台服务器不能满足开发需要的时候,需要多台服务器来支持。这个时候就需要做集群,但是集群往往伴随着分布式;
2.分布式
分布式是指将不同的业务分布在不同的地方. web应用和数据库服务分开.
分布式和集群一起使用
便于维护
解决高并发 ,单点故障问题
便于扩容
3 Redis集群
为什么需要集群:
(1)解决单点故障
(2)处理高并发
(3)处理大数据(高并发) --解决存储问题
集群方案的选择:
(1)主从复制 (读写分离 主从同步)
优点:
支持主从复制,主机会自动将数据同步到从机,可以进行读写分离
缺点:
Redis不具备自动容错和恢复功能,如果想具备自动重起 ,需要安装插件
(2)哨兵模式
自动化的系统监控和故障恢复功能
优点缺点:
主从复制优点都在, 通过哨兵自动恢复
缺点:比较难扩容,服务占用空间比较多
(3)Redis-Cluster集群
redis的分布式存储,也就是说每台redis节点上存储不同的内容。
优点:
上面有都有,解决分布式存储问题 ,容错问题
4 搭建redis-cluster
(1) 拷贝6个redis 分别命名为 6379-6384
(2) 修改配置
port 6379
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
appendonly yes
(3) 每个redis服务 写一个startup.bat启动文件
title redis-6379
redis-server.exe redis.windows.conf
(4)安装ruby环境
傻瓜式安装
(5)安装Redis的Ruby驱动 rubygems-3.0.6
a)解压
b)D:\Program Files\Redis_cluster\rubygems-2.7.7 然后命令行执行 ruby setup.rb
(6)通过驱动安装的redis
a)进入6379的目录
b)执行gem install redis
(7) 启动 6379-6384服务
创建集群
拷贝redis-trib.rb到6379的redis节点
redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384
5 ES的(elasticSearch) 是什么
5.1ES的概念和特点
ES是什么?
es (elasticSearch): 全文检索的框架,专门做搜索,支持分布式,集群
es:全文检索的框架 --封装lucene的,支持分布式(集群) --特点
(1)原生Lucene使用的不足,优化Lucene的调用方式
(2)高可用的分布式集群 ,处理PB级别数据
1024KB – 1MB
1024MB – 1GB
1024GB – 1TB
1024TB - 1PB
(3)它的目的是通过简单的 RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。达到开箱即用的效果
lucene:全文检索 – api的比较麻烦 操作全文检索的最底层技术
核心: 创建索引 搜索索引
5.2 ES的对手
Solr和ES区别:
(1)Solr重量级, 支持很多种类型操作,支持分布式式,它里面有很多功能,但是在实时领域上面,没有es好
(2)Es 轻量级, 支持json的操作格式, 在实时搜索领域里面做的不错,]如果想使用其他的功能,需要额外安装插件
6 ES的使用
ES 分为服务端 和 客户端
(1)ES服务端
解压 -->bin/elasticsearch.bat -->localhost:9200
a)配置内存:
config/jvm.options
-Xmx1g
-Xms1g
b)健康状态:
green(最健康) -->主分片和从分片(存储内容)都完好,集群是100%健康
yellow -->主分片好的,从分片至少缺少一个,集群还是可以使用,
red -->至少一个主分片以及它的全部副本都在缺失中。这意味着你在缺少数据
(2)ES客户端–navicat
restfull风格 —> GET/POST/DELETE/PUT shop/goods/1
GET shop/goods/1 -->查询shop这个库goods表 1这条数据
PUT shop/goods {“name”:“111”}
POST shop/goods {“name”:“111”}
DELETE shop/goods/1
1)postman +head
2)curl–>在firefox安装poster插件
3)Kibana5 -->es
7.es文档操作
7.1 简单查询
id查询 --掌握
GET crm/employee/id
批量查询 --掌握
GET crm/employee/_mget
{
“ids”:[id1,id2]
}
空查询 --掌握
GET _search
分页查询 --掌握
GET _search?size=10&from=0
字符查询 --针对条件比较少 --掌握
GET _search?q=age:12 /[20 TO 50] & from=1&size=1
7.2 DSL查询
ES提供的标准的查询语言 类似sql
DSL= DSL查询 +DSL过滤
DSL查询和DSL过滤写法很像 DSL主要针对“有多像” 而DSL过滤 相当于 “有"或者"没有”
DSL查询和DSL过滤的区别:(理解)
DSL过滤写法结果是可以被缓存的
DSL查询 类似模糊的查询,可以计算相关性 得分,不缓存
DSL过滤和查询可以共用起来
DSL查询语法:
## 完全匹配
GET crm/employee/_search
{
"query":{
"match": {
"name":"xxx"
}
}
}
## 模糊写法
GET crm/employee/_search
{
"query":{
"wildcard": {
"name":"*xxx*"
}
}
}
DSL过滤语法:精确查询
GET crm/employee/_search
{
"query":{
"bool": {
"must": [
{"match": {"name":"xxx"}}
],
"filter": {
"term": {
"age": "10"
}
}
}
},
"from":0,
"size":3,
"_source":["name","age"],
"sort":[{"age":"desc"}]
}