ES 集群上,业务单点如何优化升级?

  • 时间:
  • 浏览:0
  • 来源:大发pk10_pk10平台官方网站_大发pk10平台官方网站

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢!

  • ES 基础
  • ES 集群
  • ES 集群上业务优化

一、ES 基础

ES 的安装进载,网上一大片,我这边什么都没有重复。能不都都能能够 看看我然后做的小笔记:

Spring Boot 2.0 M7 整合 ES 5 、Kibana 和 X-pack

其中 ES 三大部分:

  • 文档(Document)

    文档,在面向对象观念好多好多 我另有兩个 对象。在 ES 上方,是另有兩个 大 JSON 对象,是指定了唯一 ID 的最底层可能性根对象。文档的位置由 _index、_type 和 _id 唯一标识。文档元数据:
    • _index :文档在哪存放
    • _type : 文档表示的对象类别
    • _id :文档唯一标识
  • 索引(Index)

    索引,用于区分文档成组,即分到一组的文档集合。索引,用于存储文档和使文档可被搜索。比如项目索引命名为 project ,交易索引命名为 trade 等。
  • 类型(Type)

    类型,用于区分索引中的文档,即在索引中对数据逻辑分区。比如设计项目分为 ui 、 ux 那此类型。能不都都能能够 放满该类目进行区分。但一般操作,很少用到能不都都能能够 复杂性的。

可见, _index 索引的重要性。避免某个索引存储不相关的数据。

二、ES 集群

ES 集群搭建,文章好多好多 。我这边好多好多 我一一列举了。先看 ES 集群分布式图

集群(Cluster)

跟服务器集群类事于,多个 ElasticSearch 运行实例(节点 Node)的组合体是 ElasticSearch 集群。

ElasticSearch 是天然冰分布式的,能不都都能能够 通过水平扩容为集群再加更多节点。

ElasticSearch 集群是去中心化的,能不都都能能够 另有兩个 主节点(Master)。否则主节点是动态选举,否则不让出現单点故障。

那节点是那此?

节点(Node)

上方说过,另有兩个 ElasticSearch 运行实例好多好多 我节点。任何节点都能不都都能能够 被选举成为主节点。主节点负责集群内好多好多 变更,比如文档的增加、删除等。好多好多 集群不让可能性主节点流量的增大成为瓶颈。可能性任何节点都都能能 成为主节点。

如图,P1 P2 P0 是节点内的主分片,這個 R 是副分片。

那分片是那此?

分片(Shard)

分片,是 ES 节点中最小的工作单元。分片仅保存删剪数据的一部分。分片包括主分片和副分片,主分片是副分片的拷贝。主分片和副分片基本能不都都能能够 大的区别。

可能性是全文搜索,会查询到每个分片,否则将每个分片的结果进行全局地分发,并避免返回。

举个例子:比如新建了另有兩个 索引 project , 存储项目相关的数据。那具体的某个 project A 的数据会被切分,存储在不同的分片上。能不都都能能够 根据 project A 的 _id 如可路由到具体的分片上呢?

分片的路由公式是那我的:

shard = hash(routing) % number_of_primary_shards
  • hash 函数生成数字,经过取余算法得到余数。余数好多好多 我分片的位置。
  • routing 是可变值,支持自定义。默认文档 _id
  • number_of_primary_shards 主分片的数量

三、ES 集群上业务优化

只要可能性然后那个例子,另有兩个 索引 project , 存储项目相关的数据。项目的数量级能不都都能能够 大,亿量级,万亿量级。那另有兩个 大索引的查询啥的都都能能 出現瓶颈。这然能能 为甚优化呢?

这然后是都有想到了,一句常说的:空间换时间。

这然后是都有也想到了,MySQL 分库

好多好多 大索引的拆分,也都有不能自己。类事于分片的路由规则,根据具体业务指定即可。

这里,亲戚亲戚当我们 能不都都能能够 定义 50 个索引,分别名为 project_1、project_2、project_3…

否则在 ES 集群上方架一层简单的 proxy 。上方核心的业务路由规则能不都都能能够 那我:

index_id = project_id % 50
  • project_id 项目自增 ID
  • index_id 得出来的索引对应的 ID

总结一张图:

  • ES proxy 层:做总索引和真正分索引的映射
  • ES 索引配置管理:做索引与业务的映射
  • ES 集群:好多好多 我上方讲的

参考资料

  • https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-index-field.html

以下专题教程亲戚亲戚当我们 说您会有兴趣

  • 《Spring Boot 2.x 系列教程》 https://www.bysocket.com/springboot
  • 《Java 核心系列教程》 https://www.bysocket.com/archives/250

(关注微信公众号,领取 Java 精选干货学习资料) 

(再加我微信:bysocket01。加入纯技术交流群,成长技术)