流式计算系统-Yahoo! S4

数据库
S4是一个通用的、分布式的、可扩展的、分区容错的、可插拔的流式系统。基于S4框架,开发者可以轻松开发面向持续流数据处理的应用。

S4是一个通用的、分布式的、可扩展的、分区容错的、可插拔的流式系统。基于S4框架,开发者可以轻松开发面向持续流数据处理的应用。

S4的设计特点有以下几个方面。

  • Actor Model

为了能在普通机型构成的集群上进行分布式处理,并且集群内部不使用共享内存,S4架构采用了Actor模式,这种模式提供了封装和地址透明语义,因此在允许应用大规模并发的同时,也提供了简单的编程接口。S4系统通过处理单元(Processing Elements,PEs)进行计算,消息在处理单元间以数据事件的形式传送,PE消费事件,发出一个或多个可能被其他PE处理的事件,或者直接发布结果。每个PE的状态对于其他PE不可见,PE之间***的交互模式就是发出事件和消费事件。框架提供了路由事件到合适的PE和创建新PE实例的功能。S4的设计模式符合封装和地址透明的特性。

  • Decentralized and Symmetric Architecture

除了遵循Actor模式,S4也参照了MapReduce模式。为了简化部署和运维,从而达到更好地稳定性和扩展性,S4采用了对等架构,集群中的所有处理节点都是等同的,没有中心控制。这种架构将使得集群的扩展性很好,处理节点的总数理论上无上限;同时,S4将没有单点容错的问题。

  • Pluggable Architecture

S4系统使用Java开发,采用了极富层次的模块化编程,每个通用功能点都尽量抽象出来作为通用模块,而且尽可能让各模块实现可定制化。

  • Partial Fault-Tolerance

基于Zookeeper服务的集群管理层将会自动路由事件从失效节点到其他节点。除非显式保存到持久性存储,否则节点故障时,节点上处理事件的状态会丢失。

  • Object Oriented

节点间通信采用“Plain Old Java Objects”(POJOs)模式,应用开发者不需要写Schemas 或用哈希表来在节点间发送Tuples。

S4的功能组件分3大类,Clients、Adapters和PNode Cluster,图2显示了S4系统框架。

图2 Yahoo! S4流式系统框架结构图

S4提供Client Adapter,允许第三方客户端向S4集群发送事件和接收事件。Adapter实现了基于JSON的API,支持多语言实现的客户端驱动。

Client通过Driver组件与Adapter进行交互,Adapter也是一个Cluster,其中有多个Adapter结点,Client 可以通过多个Driver与多个Adapter进行通信,这样可以保证单个Client在分发大数据量时Adapter不会成为瓶颈,也可以确保系统支持多个Client应用并发执行的快速、高效和可靠性。

在Adapter中,真正与Client交互的是其Stub组件,该组件实现了管理Client与Adapter之间通过TCP/IP协议进行通信的功能。GenericJsonClientStub这个类支持将事件在Client与Adapter之间以JSON的形式转换,从而支持更多种类型的 Client应用。不同的Client可以配置不同的Stub来与Adapter进行通信,用户可以定义自己的Stub来实现自己想要的业务逻辑,这样也使得Client的行为更加多样性、个性化。

【编辑推荐】

责任编辑:艾婧 来源: 程序员
相关推荐

2011-10-18 14:00:30

MapReduce分布式流式

2011-10-18 16:53:13

Borealis分布式流式

2011-10-18 16:03:57

StreamBase分布式流式

2013-07-01 10:03:57

Android 4.3Galaxy S4

2011-10-18 17:05:45

分布式流式数据库

2013-07-04 10:11:02

Galaxy S4iPhone 4S

2013-03-17 22:05:27

眼动追踪Galaxy S4

2013-06-26 14:32:18

2013-09-26 11:16:15

三星Galaxy S4iPhone 5s

2013-03-06 10:31:40

MapReduce大数据SPF

2019-04-04 09:19:08

日志京东流式计算

2023-02-07 09:37:08

流计算

2012-08-21 09:20:57

Yahoo

2011-03-21 13:31:24

UI

2009-03-27 09:09:03

GoogleAndroid移动OS

2011-12-30 13:50:21

流式计算Hadoop

2011-03-24 08:56:21

Nagios邮件

2012-07-12 10:44:50

Yahoo前端

2009-06-12 19:03:41

Hadoop源代码Yahoo

2015-05-25 14:13:18

Yahoo MySQL性能分析工开源
点赞
收藏

51CTO技术栈公众号