
我们的Apache 螺旋教程将帮助您对Helix有所了解。我们已经介绍了Helix的所有基本概念和高级概念。我们设计本教程的方式可以为初学者和专业人士提供帮助。
本教程将帮助您了解Helix的所有核心概念以及各种相关主题,例如 什么是Helix,Helix的功能,Helix体系结构,Helix组件,为什么使用Helix, 和更多。
先决条件
学习Helix的概念没有特殊要求。您只需要对使用终端和应用程序有一些基本的了解。但是,我们在Apache 螺旋教程下有一系列精心组织的主题,可以帮助您从头开始学习Helix概念。
听众
教程伴侣上的教程旨在帮助初学者和专业人士。我们的Helix教程将帮助初学者掌握Helix。
问题
我们的教程是由专业人士设计的,我们向您保证不会发现任何问题。如果有任何错误,我们要求您使用 联系表.
您将学到什么
什么是Apache 螺旋?
阿帕奇螺旋 是由Linkedln公司开发的开源通用集群管理框架。它用于自动管理托管在节点群集上的复制,分区和分布式资源。面对以下情况,Helix会自动提供资源重新分配 节点故障和恢复,集群扩展以及重新配置.
阿帕奇螺旋的功能
螺旋提供以下主要功能:
• 自动将资源/分区分配给节点
• 检测和恢复节点故障
• 动态添加资源
• 动态将节点添加到集群
• 可插拔的分布式状态机可通过状态转换来管理资源状态的可用性
阿帕奇螺旋体系结构
螺旋将分布式系统组件分为四个逻辑角色,如下图所示:

这些是可以在同一过程中物理并置的逻辑组件。这些逻辑组件中的每一个都有一个嵌入式代理,该代理通过以下方式与其他组件交互 动物园管理员.
组件亮点
• 控制者
控制器被称为系统的大脑。它充当状态机引擎的发电机。它运行执行算法并针对分布式系统发出转换。
• 参加者
参与者负责状态转换的执行。每当控制器启动状态转换时,参与者就会触发回调,该回调由分布式系统实现。对于搜索系统,系统会实现回调(offlineToBootstrap,BootstrapToOnline),并在控制器触发相应的转换时调用。在上图中,p1和p2表示资源(数据库,索引和任务)。不同的颜色表示状态(例如,主/从)的分区。
• 观众
旁观者代表需要观察系统状态的外部实体。通知系统中状态是否更改,以便他们可以与适当的参与者进行交互。例如,代理/路由组件(旁观者路由表更改时(例如,群集扩展或节点发生故障时),可以通知)。
• 动物园管理员
螺旋依靠ZooKeeper来满足所有给定的要求:
1. 群集状态/元数据存储。
2. 群集状态更改时自动发出通知。
3. 沟通 组件之间的通道。
通过将所有元数据/群集状态存储在Zookeeper中,控制器本身是无状态的,并且在发生任何故障时易于更换。每当节点启动或停止时,Zookeeper还提供通知机制。 动物园管理员还用于在控制器和参与者之间构建可靠的通信通道。该通道在Zookeeper中被建模为队列。控制器和参与者在此队列中充当生产者和消费者。
为什么使用Helix?
从很长时间开始,大多数情况下,单节点功能就足够了。大数据出现之后,’根据需求不再足够。大多数应用程序需要在分布式设置中运行。分布式计算将面临许多挑战,例如可伸缩性,分区和容错能力。这种系统的革命可以描述为:

添加这些功能并非易事,容易出错且耗时。每个功能都充分增加了系统的复杂性,但是这些功能对于预期可大规模运行的生产就绪系统至关重要。大多数系统都试图通过这种演进,但是很少有系统能够达到理想的极限。
Linkedln建立了许多这样的分布式系统。第一个是NoSQL存储系统Espresso。在进行项目时,他们发现需要支持通用模式,例如对分区的容忍度,硬件和软件故障以及诸如操作问题,负载平衡,自举和扩展之类的任务。所有这些功能都是建立通用框架以开发分布式系统(称为Helix)的动机。将分布式系统开发为具有状态和转换约束的状态机具有以下好处:
• 作为一个分布式系统,Helix将集群管理与系统的核心功能分开。
• 它允许从单节点系统到可操作的分布式系统的快速转换。
• 它增加了简单性。不需要系统组件来管理全局群集。
螺旋如何工作?
要了解Helix,我们必须首先了解 集群管理。分布式系统通常由于以下原因而在多个节点上运行:
• 可扩展性
• 容错能力
• 负载均衡
每个节点都可以执行集群的一个或多个主要功能。这些功能可能包括存储和提供数据,产生和使用数据流等。一旦配置了这些功能,Helix便成为系统的全局大脑。它可以做出不应孤立地做出的决策。有一些此类决策需要全球知识和协调的示例:
• 它可以安排维护任务,例如备份,文件合并垃圾收集,索引重建
• 它具有跨集群重新分配数据或资源的能力。
• 它限制系统任务和更改。
• 它用于通知依赖系统更改,以便它们可以对集群更改做出适当的反应。
这些功能可以集成到分布式系统中,但是会使编码变得复杂。虽然,Helix具有通用的抽象集群管理任务,这些任务使系统构建者可以使用声明性状态模型对预期的行为进行建模。它提供了可访问性,并让Helix管理协调。从而, 结果是减少了编写新代码的次数,并生成了一个健壮的,高度可操作的系统.
螺旋在Linkedln生态系统中的用途
自2011年4月起,Helix就已在Linkedln进行开发。现在,它已用于不同系统的生产中:
• 浓咖啡
浓咖啡是一个分布式的,可伸缩的,时间轴一致的文档存储,它支持本地二级索引和本地事务。它在几个存储节点服务器上运行,这些服务器存储和索引数据并回答查询。 浓咖啡数据库在不同节点上水平分区,每个分区由指定数量的副本组成。 浓咖啡的作用是将每个分区的一个副本指定为主服务器,其余的作为从属服务器。任何时候每个分区只能有一个主服务器。螺旋线 分区管理,群集范围内的监视和主控权转换 在计划的升级和计划外的故障期间。万一主服务器出现故障,将从属副本将被分配为系统的新主服务器。
• 数据总线
数据总线是 更改数据捕获(CDC) 系统。它用于提供一个通用管道,用于将事件从Linkedln主数据库传输到缓存,索引和其他应用程序。 数据总线部署了一个中继集群,该中继从多个数据库接收更改日志,并让使用者订阅更改日志流。数据总线基于每个分区处理一个缓冲区。 数据总线持续跟踪拓扑中主要数据库的更改并自动生成新的缓冲区。
• 数据总线消费者
每个Databus的分区都以一种方式随机分配给使用者,即每个使用者一次只接收一个分区。消费者的集合可能会随着时间而变化,并且消费者可能会因断电而离开小组。在这种情况下,必须在保持平衡和每个分区单个消费者不变的同时重新分配分区。诸如数据复制器和搜索索引器节点之类的应用程序都遵循这种模式。
• SEAS(即服务搜索)
Seas允许其他应用程序在所选数据集上定义其自定义索引,然后通过服务API使这些索引可搜索。索引分为多个分区,每个分区由配置数量的副本组成。每个新的索引服务都分配给一组随机服务器,并且分区副本必须在这些服务器之间平均分配。每当引导被引导时,搜索功能都会使用数据源的快照来构建新的索引分区。 螺旋还负责为系统中的并发引导程序数量设置限制。
• 黑皮诺
它是一个在线分析引擎,负责任意汇总和深入分析。

安装
这是Helix安装的简短版本,以了解其处理过程:
步骤1
使用以下链接下载Apache 螺旋发行包:
//helix.apache.org/0.6.2-incubating-docs/download.html
• 解压缩软件包,然后使用命令:
第2步
转到工具目录。• 解压缩软件包,然后使用命令:
滚动⇀
第三步
使用以下命令运行演示:滚动⇀
此命令将使这些组件可以在此演示中协同工作,该演示将执行以下操作:
• 创建集群
• 将两个节点/参与者添加到集群
• 设置具有六个分区和两个副本的资源:每个节点/分区一个主服务器和一个从属服务器
• 当Helix配置分区时显示集群状态
• 添加第三个节点
• 显示集群状态。重要的是要理解第三个节点已经掌握了两个分区
• 杀死第三个节点(Helix负责故障转移)
• 再次显示集群状态。两个尚存的节点从发生故障的节点接管分区的主控权。
第四步
在初始设置中,将设置两个节点,并重新分配分区。群集状态如下所示:

注意: 在这里,每个分区只有一个主机和一个从机。
第5步
添加了第三个音符,并且重新平衡了群集。现在,群集状态如下:

注意: 现在,每个分区有一个主节点和两个从节点,因为有三个节点。
第6步
最后,杀死一个节点以模拟故障。 螺旋确保每个分区都有一个主磁盘。群集状态更改为:

现在,您可以通过此快速指南了解Helix的想法。
概要
从头开始构建分布式系统是不重要的,容易出错且耗时的。重要的是要创建可在不同系统之间利用的适当的构建模块集。在Linkedln,Helix从Espresso开始,并继续构建各种分布式系统,这进一步使我们能够构建可靠且可操作的系统。
请分享这个...