V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ApachePulsar
V2EX  ›  开源软件

新一代消息系统 Apache Pulsar 2.1 的 release

  •  
  •   ApachePulsar · 2018-08-13 09:40:06 +08:00 · 2755 次点击
    这是一个创建于 2284 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Apache Pulsar 是 2016 年 yahoo 开源的下一代大规模分布式消息系统,目前已经加入 Apache 基金会。在 Yahoo 的生产环境中大规模部署并使用了近 4 年,服务于 Mail、Finance、Sports、Flickr、the Gemini Ads platform、Sherpa 以及 Yahoo 的 KV 存储等,在 Yahoo 全球 8 个数据中心之间维护了全联通的复制,并支持了 200 多万个 Topics。

    Apache Pulsar 有几个明显区别于其他消息系统的特点:

    • 优秀的数据持久性和顺序性。每一条消息都提供了全局唯一的 ID,多副本,并都是在实时刷盘后再返回给用户。

    • 统一的消费模型: 支持 Stream (如 Kafka )和 Queue (如 RabbitMQ )两种消费模型, 支持 exclusive、failover 和 shared 三种消费模式。

    • 灵活的扩展性: 节点扩展的线性和瞬时完成,在扩展中不会有数据的拷贝和迁移。

    • 高吞吐低延迟,在实时刷盘的前提下,依然提供了高带宽( 180 万 messages/ 秒)和低延迟( 5ms at 99%)。

    Pulsar 2.1 更加了丰富消息系统之外的“ Stream Native ”的属性,比如 Schema 的支持, 层级存储, 状态函数等。。

    不能插连接,贴个原文:

    ==============

    今天 Apache Pulsar 正式发布了 2.1.0 版本!距离 2.0 版本的发布,相距不到两个月的时间。在这短短两个月的时间内,社区的贡献非常迅猛。2.1 版本包含了很多新的特性和改进,这些改进帮助 Pulsar 从一个分布式消息系统演进成一个完整的流原生( Stream Native )实时数据平台。

    在这个版本中,你可以看到以下几个重要特性:

    • Pulsar IO: 一套基于 Pulsar Functions 实现的无服务器化的连接器( Connectors )框架,以及一组内置的连接器实现
    • Tiered Storage: 层级存储
    • Stateful Functions: 状态函数
    • Clients:Go 语言客户端
    • Schema: 支持 Avro 和 Protobuf

    Pulsar IO

    — 在 Pulsar 2.0 版本中,我们首次引入了 Pulsar Functions,一套基于无服务器化( Serverless )的轻量级计算框架。这套计算框架为用户提供了最为简便的方式进行流计算逻辑的编写。自从 Pulsar Functions 发布之后,社区的反响程度十分热烈,很多社区的用户非常喜欢这个特性。因为使用它的学习成本基本为零,只要能写 Java 或者 Python 的函数,就可以编写在 Pulsar 进行流计算的逻辑。

    我们将这种极简至上( simplicity first )的理念延续在开发 Pulsar 2.1 的过程中。我们在 Pulsar Functions 上实现了一套无服务器化的连接器( Connectors )框架 Pulsar IO,用来简化用户导入数据到 Pulsar 和从 Pulsar 中导出数据。用户在使用连接器的时候,不需要编写任何的代码。你所需要做的事情只是准备一个关于你需要连接的系统的配置文件,然后就可以使用 Pulsar 提供的管理工具向 Pulsar 提交相应的连接器。Pulsar 就会负责剩下的事情,包括容错管理,负载均衡,随着负载自动伸缩扩容。

    另外,2.1 版本包含六个内置的连接器实现。他们分别是: Aerospike 连接器 Cassandra 连接器 Kafka 连接器 Kinesis 连接器 RabbitMQ 连接器 Twitter Firehose 连接器

    你可以参考 Pulsar 2.1 的教程来学习使用 Cassandra 连接器,将数据从 Pulsar 导出到 Cassandra 里。 我们计划在未来的发布版本中包含更多的连接器实现。如果你对 Pulsar 感兴趣,想成为 Pulsar 的代码贡献者,我们十分欢迎你为 Pulsar 开发不同的连接器。开发连接器也十分简单,跟编写一个 Pulsar 函数进行流处理一样简单。

    层级存储

    — 相比于其他消息 /流系统,Apache Pulsar 最大的优势是它基于 Apache BookKeeper 的分块存储( Segment Storage )架构。在 Pulsar 里面,一个主题分区( Topic Partition,或者称为一个流)会被切分成分块( Segments )存储在 BookKeeper 里面。这就意味着,一个主题分区的容量不受限于单台机器的容量。只要整个集群有足够的容量,你就可以往一个主题分区里面无限追加数据。如果你的集群开始没有容量,你只需简单地往集群里面添加存储节点即可,Pulsar 就会开始自动使用新的存储节点,而不需要重新均衡已有的数据分区。但是,如果一直在 BookKeeper 里面累积存储历史数据,那么整个集群的开销就会变得昂贵。

    Pulsar 通过提供层级存储( Tiered Storage )的方式来解决容量和开销的权衡。层级存储通过将老的数据分块从 BookKeeper 卸载到更廉价的存储系统(比如 AWS S3, Google GCS 和 HDFS ),从真正意义上把 Pulsar 变成了真正的无限数据流( Infinite Streams )存储。对于终端用户而言,他们不需要知道数据是存储在 BookKeeper 还是存储在更廉价的存储系统中,整个流程对用户是透明的。这也意味着用户主要编写一套代码即可同时消费最新的流数据和历史数据。

    目前 2.1 版本只支持 S3。在未来的 2.2 版本中,我们即将支持更多的云存储,比如 Google GCS,Azure Blobstore 和 HDFS。如果你对层级存储感兴趣,也想贡献对其他云存储的支持,我们也十分欢迎来自你的代码贡献。

    状态函数

    — 流计算中最充满挑战的一个问题是解决状态( State )的管理。Pulsar Functions 也面临同样的问题。我们开发 Pulsar Functions 的初衷就是为开发者简化编写原生流处理的逻辑。我们同样也希望简化流计算中的状态的管理。因为在 2.1 版本中,我们引入了状态( State ) API,开发者可以使用状态 API 来将计算的一些状态存储到底层的存储系统中。这套状态 API 跟 Apache BookKeeper 的表服务进行了深入的整合。目前支持简单的 key/value 操作以及对于计数支持的 inc 操作。

    状态函数在 2.1 版本中作为一个开发者预览( Developer Preview )特性发布。我们希望通过收集社区的意见完善出一套真正简化流计算状态管理的 API。如果你有好的想法和建议,欢迎通过 Pulsar 的邮件列表,Github 或者 Slack 来跟我们交流。

    Schema

    — 在 2.0 版本中,Pulsar 引入了对 Schema 的原生支持。这意味着你可以在创建 Pulsar 主题的时候定义消息相应的 Schema,然后 Pulsar 会根据你指定的 Schema 保证发布消息的完整性。2.0 版本只支持 String,Bytes 和 JSON 三种内置 Schema。从 2.1 版本开始,Pulsar 原生支持 Avro 和 Protobuf 这两种类型。

    Schema 将 Pulsar 从一个只支持非结构化数据的消息系统变成了也支持结构化数据的流数据平台。在接下来的 2.2 版本中,Schema 将作为最重要的基石组件用来实现流数据的可查询化,也就是传说中的 Pulsar SQL。

    客户端

    — 在 2.1 发布版本中,我们正式发布了官方的 Go 语言客户端。该 Go 语言客户端是基于原生的 C++客户端实现,所以是一个直接用在生产线上的客户端实现。除了官方原生的客户端,Comcast 也在这段时间发布了他们使用原生 Go 语言编写的用在生产线上的客户端。

    结语

    — Apache Pulsar 是 Yahoo 开源的下一代消息系统。在 2017 年初,Yahoo 将 Pulsar 贡献给 Apache 进行孵化。在过去一年的时间内,Apache Pulsar 一共发布了 6 个版本,其中包括在六月份发布的 2.0 里程碑。最新的 2.1 版本延续 Pulsar 极简至上的原则,从真正意义上将 Pulsar 由一个分布式消息系统演变成一个完整的流原生数据平台。在未来一个月,也就是 2.2 版本中,我们将会有更多强悍的特性发布。欢迎关注和参与到 Pulsar 社区。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5628 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:44 · PVG 14:44 · LAX 22:44 · JFK 01:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.