クラスタ
ビジネスに対処するために、再び一緒に複数のサーバーに焦点を当てます
クラスタおよび分散概念(理解)
なぜ私たちは、クラスタが必要なのか、クラスタ利点は何ですか?
ビッグデータの高い同時実行の問題を解決
クラスタ機能
(1)拡張 - 動的逆拡散サーバ
(2)高可用性 - >フォールトトレラント機能(エラー回復)
(3)ロードバランシング - >は別のサーバーへの割り当て要求
インタビューの質問:クラスタリングと分散型の違い
(1)同じ点
高い同時実行性と大容量のデータの問題を解決
(2)相違点
クラスタは、同じ機能を実現するために複数のサービスです
異なる機能のための分散の異なるサーバー
クラスタは、どのように行うべきです
マスターコピーからプログラム
長所:マスターからの完全なコピー、
短所:完了できませんフォールトトレランスまたは機能(キープアライブ)を復元するには、手動で再起動を取得します。
拡張サーバーは、あまりにも面倒です
オプションII:センチネルモード
Redisの2.8センチネルにツールを提供しています自動化システムの監視と障害回復。
利点は:主から自動切替を行います
欠点:容量のRedisのオンライン拡張をサポートすることがより困難であり、上限に達しているオンライン容量拡張は、非常に複雑なクラスタになります
プログラムIII:Redisのクラスタ(ビルド)
利点:あなたは、容量の問題を解決するため、分散ストレージの問題を完了することができます
Redisのクラスタフリー中央構造
Redisのクラスタセットアップ手順
(1)6部は、ファイルをコピーするのRedis
変更したポートは6379、6380,6381,6382,6383,6384です
設定を変更
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
appendonly yes
(2)は、起動スクリプトを書きます
対応するフォルダの内部にSTARTUP.BAT新しく作成されたファイル
title redis-6379
redis-server.exe redis.windows.conf
(3)設置ルビー環境
(4)環境ルビー駆動搭載しました
\ Rubygemsの-2.7.7ディレクトリの実行可能ファイルのルビーsetup.rbを
(5)のRedisを駆動することにより搭載されています
フォルダ6379への切り替えは、Redisの内側に装着されています
gem install redis
(6)クラスタを作成するサービスを開始します
6379-6384サービスを開始
クラスタを作成します。
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
理解のエス
ESとは何ですか
ESフルネームelasticsearch
ES:、luceneのの発展の基盤となる基礎を全文検索を行います
luceneの等しいJDBC
同等のMyBatisの/ JPAをES
ESとluceneの比較
なぜ私は、ESを使用する必要があります。なぜLuceneのではありませんか?
(1)api操作很麻烦 不方便
搜索 : 创建索引 搜索索引 一堆api
es: get /product/1 – {}
(2)lucene不支持集群
es集群 处理很大的数据量
KB – > MB -->GB – >TB – >PB
1024KB – 1MB
1024MB – 1GB
1024GB – 1TB
1024TB – 1PB
ES和solr的区别
es 和 solr 都可以做全文检索,solr的重量级的框架,它除了全文检索以外,还可以做其他的事情(比如
命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)),solr可以nosql结合起来使用
solr 在传统的搜索效率要比es好,但是实时搜索领域比es低
使用ES
(1)安装ES服务端
解压–>bin/elasticsearch.bat–>浏览器访问 http://localhost:9200/
9200web里面展示的效果 9300java程序可以访问的端口
(2)es的客户端的交互方式
a) 基于restful风格API的去操作
get post put delete patch
(1)curl的命令方式 --不用
(2)kibana也可以操作
(3)head工具
安装的时候,如果出现错误:
(4)postman(测试后台的java代码)
b) 通过java代码去操作
java通过9300操作es服务器
(3)restful风格 +JSON方式 操作数据
http特点 就是无状态的
get /shopping/1
put /shopping/2 {“name”:“xx产品”}
post /shopping/2 {“name”:“xx产品”}
delete /shopping/1
使用客户端
(1)kibanna客户端
index : 索引库
type: 看成一个表
json:看成一行数据
ES(服务) 集群的状态
red: 红色 不健康的状态 服务的有问题
緑:マスターとスレーブの通常の割り当てが良いですすべて、クラスタを使用することができますグリーン
黄色:黄色のマスターが削除から少なくとも1で割り当てられ、
2マスタ1から
CRUDドキュメント
基本的なCRUD
# 完成crud
# 新增
PUT crm/employee/1
{
"name":"xiaorong",
"age":18
}
# 修改 --整个文档
POST crm/employee/1
{
"name":"xiaohuahua"
}
# 修改局部文档
POST crm/employee/1/_update
{
"doc":{"name":"xiaohuahua"}
}
# 查询
GET crm/employee/1
# 删除
DELETE crm/employee/1
特別な使い方
# 展示没有什么效果
GET crm/employee/AW-tOSHILqo6XVH8f6cg?pretty
# 展示部分的字段
GET crm/employee/AW-tOSHILqo6XVH8f6cg?_source=age,name
# 返回元数据
GET crm/employee/AW-tOSHILqo6XVH8f6cg/_source
# 修改数据
POST crm/employee/AW-tOSHILqo6XVH8f6cg/_update
{
"script" : "ctx._source.age += 5"
}
# 批量新增
POST _bulk
{ "delete": { "_index": "itsource", "_type": "employee", "_id": "123" }}
{ "create": { "_index": "itsource", "_type": "blog", "_id": "123" }}
{ "title": "我发布的博客111" }
{ "index": { "_index": "itsource", "_type": "blog" }}
{ "title": "我的第二博客2222" }
GET itsource/blog/_search
クエリ文書
IDによる1つのクエリ
GET crm/employee/AW-tOSHILqo6XVH8f6cg/_source
2バッチクエリ
# 不同库 不同表数据
GET _mget
{
"docs" : [
{
"_index" : "itsource",
"_type" : "blog",
"_id" : "123"
},
{
"_index" : "crm",
"_type" : "employee",
"_id" : "AW-tOSHILqo6XVH8f6cg",
"_source": ["name","age"]
}
]
}
# 同一个库 同一个表数据
GET itsource/blog/_mget
{
"ids":["123","AW-tQP_4Lqo6XVH8f6ci"]
}
3つの他のクエリ
# 分页查询
GET crm/employee/_search?size=3&from=6
# 带条件查询
GET crm/employee/_search?q=age:38
GET crm/employee/_search?q=age[18 TO 48]