水平缩放的意思

Posted

技术标签:

【中文标题】水平缩放的意思【英文标题】:Scaling horizontally meaning 【发布时间】:2019-01-21 22:05:53 【问题描述】:

我正在学习 ElasticSearch,在他们的文档中写到这一行

在分布式系统中执行完整的 SQL 样式连接,例如 Elasticsearch 非常昂贵。相反,Elasticsearch 提供两种形式的连接,旨在水平扩展。

请有人用外行术语解释一下第二句话是什么意思。

【问题讨论】:

【参考方案1】:

作为序言,您可能希望通过 SO 上的另一个线程来解释 horizontal vs vertical scaling。

在大多数情况下,ES 集群被设计为水平增长,这意味着每当您的集群开始出现一些弱点(查询速度慢、索引速度慢等)时,您需要做的就是添加一个或多个节点到您的集群,ES 会将负载分散到更多硬件上,从而减轻现有节点的负担。这就是水平扩展的全部意义所在,ES 正是为此而设计的,因为它将索引划分为分片,然后分配给集群中的节点。

如您所知,ES 没有 JOIN 功能,他们出于上述原因故意这样做(即“过于昂贵”)。 ES中有four ways to model relationships:

通过非规范化数据(首选) 通过使用nested types 通过使用parent/child documents 使用应用程序端连接

The link you referred to,它介绍了nestedhas_parenthas_child 查询,是关于上面的第二个和第三个要点。嵌套和父/子文档的设计方式是尽可能多地利用 ES 支持的索引/分片分区模型。

当使用nested 字段(1-N 关系)时,nested 数组内的每个元素只是另一个隐藏的文档,并存储在集群中某个位置的分片中。当使用join 字段(1-N 关系)时,父文档和子文档也是存储在您的索引中的文档,该文档位于集群中某处的分片内。当您的索引增长时(即当您有越来越多的父子和/或嵌套数据时),您添加节点,包含您的文档的分片将透明地分布在集群中。这意味着无论您的文档存储在何处,您都可以检索它们以及它们的相关文档,而无需执行昂贵的连接。

【讨论】:

【参考方案2】:

所以你会得到更多关于水平缩放的信息here

在 Elasticsearch 术语中,当您在具有相同集群配置的同一网络中的 ES 上启动两个或多个实例时,它们将相互连接并创建一个分布式网络。因此,如果您再添加一台计算机或节点并在那里启动一个 ES 实例并保持集群配置相同,节点将自动连接到前一个集群,数据和请求负载将被共享。当您向 ES 发出任何请求时,可能是它的读取或写入请求,每个请求都可以并行处理,并且您可以根据每个索引的节点数和分片数来获得速度。

获取更多信息here

【讨论】:

以上是关于水平缩放的意思的主要内容,如果未能解决你的问题,请参考以下文章

css3变形转换

win10 dpi设置是啥意思

几何变换

QT实现窗口缩放打开与关闭(重叠窗口,太有意思了)

多态性是啥意思

html中的hr啥意思?