关于我们(上交所股票代码:600410)

分享到:
【技术分享(4)】In-stream处理服务蓝图(上篇)

2017年08月01日


本文由华胜天成(上交所:600410)成员企业美国GD公司工程师 Sergey Tryuber, Anton Ovchinnikov和 CTO Victoria Livschitz介绍了用于In-stream处理的Grid Dynamics蓝图,是基于我们从多个大型客户端实施中所获得的经验和教训。我们已经为Apache Kafka,Spark,Cassandra和Zookeeper以及Redis和HDFs提供了云就绪配置示例。
 
蓝图目标
 
蓝图旨在帮助客户,特别是CTO或首席大数据系统架构师不断对众多架构提出的目标:
•预集成:总体蓝图代表了一个集成的流处理服务,它由许多软件组件组成,可以作为单个服务来设计、部署和管理。
•活跃社区的100%免费,开放和被支持:蓝图的所有组件都是主要的开源软件项目,它是由一个充满活力和多样化的贡献者社区积极开发的,包括供应商和最终用户。蓝图本身也是自由开放的。
•云就绪:旨在云基础架构上进行动态扩展和部署。
•可移植云:设计为在任何云端都能运行,不受专有云供应商API的影响或其他可能会限制可移植性的锁定。
•生产就绪:蓝图为所有组件和整个集成服务提供生产就绪的操作配置。
•在关键任务使用中印证:所有组件都被认为是“主流”,并已被业界多次成功的大规模实施以及被其他GD客户证明。
•可与任何大数据平台交互操作:In-stream处理可部署为独立的云服务,并通过API与任何大数据平台集成。
•可扩展性:蓝图中的单个组件,接口或API可以由客户架构师进行替换,修改或扩展,以适应其特定需求。蓝图是一种参考设计,为架构团队奠定了坚实的基础。
 
蓝图范围
 
在蓝图的当前版本中,我们预先集成了许多技术(在本文中概述),他们一起构成了In-stream处理堆栈:
•持久消息队列系统:Apache Kafka。
•In-stream处理框架:Spark Streaming。
•查找数据库:Redis(Redis 是一个高性能的key-value数据库)。
•操作存储器:Cassandra(Cassandra是一套开源分布式NoSQL数据库系统)。
•数据交付摄取:HDFs(HDFs:Hadoop分布式文件系统。HDFs能提供高吞吐量的数据访问,非常适合大规模数据集上的应用)。
 

 图1:蓝图范围
 
蓝图还解决了一些业务问题:
•可扩展性 每个组件的可扩展性和整体服务的可扩展性。
•可用性 每个组件的可用性和整体服务的可用性。
•交付 在故障条件下由服务确保交付语义。
可扩展性和可靠性的操作设计
我们从描述分布式,容错的计算系统架构开始,对于蓝图的任何节点或功能组件的故障而言,它是高度可用的。下图显示了可扩展以满足实际业务需求的最小集群配置:
 
 
图2  可扩展的最小集群配置
 
如果任何一个节点出现故障,上图中的系统将仍然完全能正常运行。下图3显示哪些节点可能同时出现故障,而不会对我们的In-stream处理服务的功能产生负面影响。如果虚拟机的大小正确,以便能在紧急情况下处理完整的工作负载,那么将不会有任何性能的下降。
 
 
图3
 
值得注意的一点是,没有单一的故障点使系统能够容忍许多种故障(但不是全部的)。例如,分布在多个数据中心的系统间接包括通信子系统,该通信子系统不受数据中心或PaaS提供商的直接控制。可能的部署配置数量如此之大,以至于没有一个单一的方案可以普及到解决所有非特定的容错问题。 也就是说,在大多数情况下,所提供的架构能够确保99.999%的可靠性。
 
可靠性的另一个重要方面是交付语义。在最严格的情况下,每个事件必须由流服务处理一次,并且只能处理一次。完整处理所有事件的端到端能力需要:
•能够在数据处理过程中发生故障时重新发送源数据。 
•确保这些组件之间的所有通信都能避免数据丢失。
•数据消耗方法在下游系统上的等效性。
等效性要求意味着下游系统必须容忍数据重复。见下图4:
 
 
图4
 
数据可靠传输到(通信点1),之后通过流处理服务(通信点3)前,由外部组件到蓝图所要特定运行状态提供服务。具体地说,源和下游系统应该以同步方式交付和消耗事件。
 
Apache Kafka和Spark Streaming确保在接受处理后,数据将被无损处理。 简单来说,Spark Streaming应用程序中的故障会通过再加工当前数据来自动处理。 它通过Apache Kafka将数据保存在可配置长达数十天的时间(通信点2)的能力来实现的。
 
操作Apache Kafka配置
 
为Apache Kafka获得优质配置需要几个重要的设计决策,并在架构问题(如持久性和延迟,易于扩展和开销成本)之间进行谨慎的权衡。
 
 
图5
 
首先,我们从持久性问题开始。Apache Kafka以一个拥有一台或多台服务器的集群运行着,每一台服务器称为broker。一个集群可以包含许多称为队列或主题(Kafka维护按类区分的消息,称为主题topic)的逻辑信道,每个分为多个分区。根据为持久性而配置的复制因子,每个分区都被复制。因此,每个broker负责多个分配的分区和副本。在发生故障的情况下,Apache ZooKeeper提供重新分配的协调工作。
 
数据复制和持久性一起为数据丢失提供了“相当不错”的免疫力。但是与所有分布式系统一样,延迟与系统的持久性水平之间存在一个权衡。 Apache Kafka提供了许多配置选项,从生产者批量异步传递事件开始,到以每个阻塞事件直到被提交的同步发布结束,即分配的所有同步副本都将其应用于其日志。
 
异步传输明显是最快的。当数据到达Kafka broker时,生产者将立即收到确认,而无需等待复制和持久化。如果到达broker产生某些问题,操作中断,数据将会丢失。另一个极端是完全的持久性,即只有在提交的事件成功复制并物理存储之后,才会收到确认。如果在这些操作中发生了某些事情,生产者将重新提交事件。从数据丢失的角度来看,这将是最安全的配置选项,但它是最慢的模式。
 
Apache Kafka配置的下一个重要方面是选择接近最佳的数量的分区。由于重新分区消息队列是一个手动过程,因此它需要停机,所以它对服务操作具有极大的破坏性。理想情况下,应该是一年一次,不需要频繁的多做一次;然而,为了保持这种长期的稳定分区,需要可靠的预测技能。
 
简而言之,获得正确的分区是需要极具水平的,这是为了在易于扩展和过度分区的开销成本之间找到一个平衡点。在故障转移期间,更多分区带来更高的开销和影响内存要求、ZooKeeper性能及分区转换时间。 另一方面,由于分区是并行的单位,所以分区的数量应该足以有效地并行化消息队列的事件处理。由于Spark Streaming应用程序中单个源容器必须使用单个Kafka分区,所以分区数量也严重影响了源容器的事件消耗总体吞吐量。
 
图6
 
上图6显示了为了有效的主题分区,我们应该估计分区的数量。应该是充足的最小数量:
•Spark Streaming应用程序中,事件消耗并行化的必要级别。
•处理日益增加的工作量而无需重新分区的能力。
 
为Spark Streaming应用程序来说,找到最佳并行化级别的过程是艺术与科学的结合。它是一个应用程序调优的迭代过程,其中它有许多依赖于应用程序本质的分支和依赖项。遗憾的是,没有一种“一刀切”的方法出现可以替代实践经验。
 
最后,我们将提供一些关于Kafka硬件配置的想法。由于Kafka是一个高度优化的消息队列系统,旨在高效地并行化计算和I / O操作,因此将存储I / O操作并行化是至关重要的,因为它们是系统中最慢的部分,尤其是在随机数据访问的情况下。 Apache Kafka一个重要的优势是能够将原始事件流保留几天。 例如,在每秒300K事件,每个事件150个字节的情况下,七天的数据大小将约为24 TB。 Kafka提供了每个事件压缩,这可以减少存储要求,但压缩会影响性能——无论如何,实际的压缩比是取决于事件格式和内容的。

操作ZooKeeper集合体配置
 
ZooKeeper是一个分布式协调服务,用于实现Apache Kafka分区和brokers的高可用性,以及Spark Streaming集群的资源管理器。 Apache ZooKeeper允许分布式系统遵循服务,该服务有助于总体高可用性:它为分布式系统,客户端监控和首选项提供了保证一致的存储。
 
图7
 
用于Apache Kafka集成的Spark API以前的版本使用ZooKeeper来管理消费者的位移信息(consumer offsets),这几乎总是ZooKeeper的性能瓶颈。如今,在Spark中引入Direct Apache Kafka API,消费者的位移信息在检查点能进行最好的管理。在这种情况下,可以在消息队列和流处理集群之间共享一个ZooKeeper Ensemble,这不会影响性能或可用性,同时大大减少管理工作和节约云资源。
 
ZooKeeper 集合体由几个(通常为三到七个)相同的节点组成,每个节点都具有用于事务持久性的专用高速存储。ZooKeeper使用小而简单的数据结构来反映集群状态,此数据的大小非常有限。因此,RAM和消耗的磁盘空间几乎与事件流量无关,并且对于实际目标被认为是不变的。
 
ZooKeeper性能对存储I / O性能是敏感的。考虑到ZooKeeper是Kafka生态系统的重要组成部分,最好在专用实例上运行它,或者至少为其持久数据设置专用的存储安装点。

关于华胜天成


关于华胜天成

 

万博体育mantbex登录(以下简称:华胜天成)是中国IT综合服务提供商,是服务网络覆盖大中华地区、东南亚及北美、东欧的跨国IT服务集团。旗下拥有两家主板上市公司:华胜天成(上海证券交易所上市公司:600410),香港ASL公司(香港联合交易所上市公司:00771);三家新三板挂牌公司:兰德网络(新三板:834505),和润科技(新三板:837746),沃趣科技(新三板:839849)。集团总部位于北京,在美国、欧洲、俄罗斯、乌克兰、波兰、香港及东南亚等地设有分子公司和研发中心,员工人数超过6000名,控股或参股公司逾20家 。


华胜天成的业务方向涉及云计算、大数据、移动互联网、物联网、信息安全等领域,业务领域涵盖IT万博体育mantbex闪退化服务、应用软件开发、系统集成及增值分销等多种IT服务业务。基于“客户导向”的经营理念以及“合作共赢”的发展战略,华胜天成立足于大中华市场,以为企业及政府客户提升IT核心能力为使命,以卓越的解决方案、对客户业务的深刻理解以及遍布大中华及部分东南亚区域的高效密集的服务交付网络,为客户提供贯穿其IT建设整个生命周期的“一站式”服务。公司在电信、邮政、金融、政府、旅游、教育、制造、能源、交通、军队等领域拥有大量成功案例。

重点推荐

联系我们

致电咨询:010-80986698 或者向我们发送邮件,通过在线留言联系。
我是广告位