上周日(2 月 9 日),Pulsar 开启了 2020 年度第一次直播,也是小 Pu 成长路上的第一次线上直播,我们在 zoom 和 B 站同时进行了直播,也有很多朋友发弹幕和留言给我们,感谢各位的捧场!
Pulsar 的第一场线上直播,请来了 StreamNative 的 CEO 郭斯杰大佬,为我们带来了一场关于「Pulsar Basics」的分享。
在正式进入内容前,郭斯杰也为大家介绍了什么是 TGIP(Thank God It's Pulsar),类似可以参考 ????????Thank God It's Friday。https://en.wikipedia.org/wiki/Thank_God_It%27s_Friday同时更新了 Pulsar 的近况,主要是以下两个:
-
Namespace level offloader
https://github.com/apache/pulsar/pull/6183 -
Supports evenly distribute topics count when splits bundle
https://github.com/apache/pulsar/pull/6241
????♂️https://github.com/streamnative/tgip-cn同时我们也公布了一个需要国内用户帮忙填充的「Pulsar 用户调查问卷」,我们将根据此问卷,撰写一份 Pulsar 的年度报告,到时候也会发给大家。
如果你想为此报告贡献一点力量,可以复制链接在浏览器进行填写:https://bit.ly/2Qtrrnf。填写者将有机会免费赢取「2020 Pulsar Summit」的入场券吼!关于更加具体的细节,可以查看文末的回放视频。以下是本次直播的内容回顾。
>>> Event Streaming <<<Pulsar 在雅虎旗下被孵化出生时,其实就顶着一个「消息中间件」的任务前行着。随着开源后,各行业各公司小伙伴们,根据不同的需求,为 Pulsar 赋予了很多更丰富的功能,所以目前它也不再只是中间件的功能,而是慢慢发展成为一个 Event Streaming Platform(事件流处理平台),具有 Connect(连接)、Store(存储)和 Process(处理)功能。>> Connect在连接方面,Pulsar 具有自己单独的 Pub/Sub 模型,可以同时满足 Kafka 和 RocketMQ 的应用场景。同时 Pulsar IO 的功能,其实就是 Connector,可以让你非常方便地将数据源导入到 Pulsar 或从 Pulsar 导出等。在 Pulsar 2.5.0 中,我们新增了一个重要机制:Protocol handler。这个机制允许你在 broker 自定义添加额外的协议支持,这样就可以保证在不更改原数据库的基础上,也能享用 Pulsar 的一些高级功能。所以 Pulsar 也延展出比如:KoP、ActiveMQ、Rest 等。>> StorePulsar 提供了可以让用户导入的途径后,那就需要在 Pulsar 上进行存储。Pulsar 采用的是分布式存储,最开始是在 Apache BookKeeper 上进行。后来添加了更多的层级存储,通过 JCloud 和 HDFS 等多种模式进行存储的选择。当然,层级存储也受限于你的存储容量。>> ProcessPulsar 提供了一个无限存储的抽象,方便第三方平台进行更好的批流融合的计算。这也就是 Pulsar 的数据处理能力。Pulsar 的数据处理能力实际上是按照你数据计算的难易程度、实效性等进行了切分。目前 Pulsar 包含以下几类集成融合处理方式:
-
Pulsar Function:Pulsar 自带的函数处理,通过不同系统端的函数编写,即可完成计算并运用到 Pulsar 中。
-
Pulsar-Flink connector 和 Pulsar-Spark connector:作为批流融合计算引擎,Flink 和 Spark 都提供流计算的机制。如果你已经在使用他们了,那恭喜你。因为Pulsar 也全部支持这两种计算,无需你再进行多余的操作了。
-
Presto (Pulsar SQL):有的朋友会在应用场景中更多的使用 SQL,进行交互式查询等。Pulsar 与 Presto 有很好的集成处理,你可以用 SQL 在 Pulsar 进行处理。
>>> Pub/Sub <<<Pulsar 整个体系里有很多的组件,Pulsar 最初产生时就是一个消息中间件,前面也有提到过。所以郭斯杰用「拼乐高」的方式,融入 Pulsar 的一些概念讲解,让大家更容易的了解 Pulsar。>> Producer身为一个 Pub/Sub 系统,首先的存在要素必然是 Producer(生产者)。何为 producer?即消息生产方,所有消息调用生产方的接口,来将消息发送给 Pulsar。 Producer 的作用是与本身的应用程序有关。Producer 往 Pulsar 里发送消息时,相应的数据会带上 schema 的信息。Pulsar 会确保一个 producer 往 topic 发送的消息是满足一定的 schema 格式。>> Topic 上文提到了,producer 会往 topic 里发送消息。那什么是 topic 呢?它是一个消息的集合,所有生产者的消息,都会归属到指定的 topic 里。所有在 topic 里的消息,会按照一定的规则,被切分成不同的分区(Partition)。一个分区会落靠在某一个服务器上,原理类似于 Kafka Topic Partition。>> Broker分区落靠的服务器,就是 Broker。Broker 用来接收与发送消息,生产方连接到 broker 去生产消息,消费方连接到 broker 去消费消息。 数据不会真正存储在 broker,这就是 Pulsar 与其他中间栈的区别:Pulsar 里的 broker 是没有存储状态的。>> Subscription以上积木流程搭下来后,生产者产出的消息到了某一个 broker 上,就应该出现另一端的消费者(Consumer)了。Consumer 作为消息的接收方,连接到 broker 接收消息。在 Pulsar 里将 consumer 接收消息的过程称之为:Subscription(订阅),类似于 Kafka 的 consumer group。一个订阅里的所有 consumer,会作为一个整体去消费这个 topic 里的所有消息。????♂️Subscription ModePulsar 里每一个订阅都会有不同的模式。目前 Pular 的订阅模式主要是以下四种:
- Exclusive:独占订阅
- Failover:故障转移订阅
- Shared:共享订阅
- Key_Shared:Key 保序共享订阅
>>> 总结 <<<本期直播介绍了 Pulsar 近期研发进展和基础概念,希望大家可以通过此次直播更加了解 Pulsar。 如果你想获取直播的大纲及文字参考,可以参考 GitHub 上的 TGIP-CN Repo。????♂️https://github.com/streamnative/tgip-cn/tree/master/episodes/001由于时间有限,此次仅从 Event Streaming 和 Pub/Sub 层面进行了介绍,后续的内容我们也会再次为大家呈现。 同时本周末我们也会开启第二次线上直播,依旧是由郭斯杰大佬为大家带来关于 Message Lifecycle 相关的内容。敬请期待!