专栏首页网络消息传输的设计方式(上)

消息传输的设计方式(上)

写在前面

这几天拜读了郭斯杰的《Messaging,Storage,or both?》一文,原文地址在这里,大有感触,作者分享了自己过去几年时间里在工作中使用Apache Pulsar、DistributedLog,以及BookKeeper的实际经验。

郭斯杰7年前作为雅虎北京的推送消息团队成员开始使用BookKeeper,大约5年前,也就是2012年,郭斯杰转战到了位于旧金山的Twitter公司,开始致力于利用BookKeeper解决分布式数据库的一致性问题,根据他的描述,这一工作内容最终促成了Apache DistriutedLog的诞生。

郭斯杰的这篇文章主要是围绕Pulsar、DistriutedLog两者如何与BookKeeper协作完成实时处理的经验分享。本文我将会解读他的这篇文章,并且加入我自己的实际理解和使用经验。

预备知识

郭斯杰最早开始接触的是BookKeeper,从后面的文章介绍中我们可以知道,BookKeeper是很多组件的基础,可以帮助进行分布式环境的信息协同管理,正是由于拥有BookKeeper的实际工作经验,郭斯杰也有了接触Pulsar和DistributedLog的机会。我先谈谈自己整理的一些相关知识,介绍这三个东西究竟是什么?

Apache Pulsar

Pulsar是分布式订阅发布消息传输系统,最早有由Yahoo公司开发的,并在2016年正式开源。

Pulsar提供了灵活消息传输、多租户、跨地理位置数据复制等特性。Pulsar的创始人Joe和Matteo等人认为需求是Pulsar项目启动的原因,如果应用程序提供实时服务,需要保证平均5ms以内的发布延迟,99%的请求不会超过15ms的延迟,同时满足分类、强持久性以及传输保证等特征的消息传输系统,这个系统必须满足提交到各个磁盘或者节点达到99.99%的准确性。

Pulsar对于消息的相关概念和角色定义与Kafka很相近,它们都把数据的接入方叫做生产者,都把数据的接收方叫做消费者(订阅者),如下图所示。

Pulsar是如何实现对于多租户用例的支持的?通过属性(Property)和命名空间(NameSpace)。属性表示系统中的租户,在Pulsar集群内部,一个属性可以包含多个命名空间,如下图所示。

命名空间是Pulsar集群的最基本管理单元,在命名空间级别,你可以设置权限、调优复制策略、管理跨集群的消息数据复制、控制消息过期,以及其他关键操作。同一个命名空间里的主题共享相同的配置。

在Pulsar内部存在几个一对多的关系。一个命名空间对应多个主题(Topic),一个主题对应多个订阅者(Subsribes),一个订阅者可以接收主题上的所有消息。为了提供更加灵活的订阅方式,Pulsar提供了三种不同的订阅类型:

独占式订阅:每个主题有且仅有一个消费者;

共享式订阅:多个消费者可以共享一个订阅/主题,每个消费者可以收到订阅的某一部分内容;

失败切换模式:多个消费者可以连接到一个主题,但是同时有且仅有一个消费者可以收到消息,其他的消费者只有在当前在线的那个消费者离线时才能竞争上岗(同样只会有一个竞争获胜者,其它竞争失败者还是需要继续守候下一次竞争)。

除此之外,Pulsar支持将主题进行分区,一旦分区,数据也会被自动分区,如下图所示,和Kafka类似,Pulsar也引入了“Broker”概念,每个Broker管理多个主题。

Apache DistributedLog

DistributedLog的出现是数据层面抽象的必然结果。2012年底这个时间段正好是Twitter公司内部的实时消息基础设施的杂乱无章阶段。Kestrel是一款队列系统,被设计用来处理在线服务的关键消息,Kafka则被用于进行离线服务的日志收集和分析,郭斯杰的团队则使用BookKeeper进行数据库备份。

DistributedLog也被称为“共享日志基础设施”。日志存储是几乎所有分布式系统都需要解决的问题,而DistributedLog被设计来解决这一共有需求,也可以统一分歧,逐渐变成其他服务的基础组件,包括键值对数据库、订阅发布消息,以及跨数据中心的复制机制等等。

写在前面

这几天拜读了郭斯杰的《Messaging,Storage,or both?》一文,原文地址在这里,大有感触,作者分享了自己过去几年时间里在工作中使用Apache Pulsar、DistributedLog,以及BookKeeper的实际经验。

郭斯杰7年前作为雅虎北京的推送消息团队成员开始使用BookKeeper,大约5年前,也就是2012年,郭斯杰转战到了位于旧金山的Twitter公司,开始致力于利用BookKeeper解决分布式数据库的一致性问题,根据他的描述,这一工作内容最终促成了Apache DistriutedLog的诞生。

郭斯杰的这篇文章主要是围绕Pulsar、DistriutedLog两者如何与BookKeeper协作完成实时处理的经验分享。本文我将会解读他的这篇文章,并且加入我自己的实际理解和使用经验。

预备知识

郭斯杰最早开始接触的是BookKeeper,从后面的文章介绍中我们可以知道,BookKeeper是很多组件的基础,可以帮助进行分布式环境的信息协同管理,正是由于拥有BookKeeper的实际工作经验,郭斯杰也有了接触Pulsar和DistributedLog的机会。我先谈谈自己整理的一些相关知识,介绍这三个东西究竟是什么?

Apache Pulsar

Pulsar是分布式订阅发布消息传输系统,最早有由Yahoo公司开发的,并在2016年正式开源。

Pulsar提供了灵活消息传输、多租户、跨地理位置数据复制等特性。Pulsar的创始人Joe和Matteo等人认为需求是Pulsar项目启动的原因,如果应用程序提供实时服务,需要保证平均5ms以内的发布延迟,99%的请求不会超过15ms的延迟,同时满足分类、强持久性以及传输保证等特征的消息传输系统,这个系统必须满足提交到各个磁盘或者节点达到99.99%的准确性。

Pulsar对于消息的相关概念和角色定义与Kafka很相近,它们都把数据的接入方叫做生产者,都把数据的接收方叫做消费者(订阅者),如下图所示。

Pulsar是如何实现对于多租户用例的支持的?通过属性(Property)和命名空间(NameSpace)。属性表示系统中的租户,在Pulsar集群内部,一个属性可以包含多个命名空间,如下图所示。

命名空间是Pulsar集群的最基本管理单元,在命名空间级别,你可以设置权限、调优复制策略、管理跨集群的消息数据复制、控制消息过期,以及其他关键操作。同一个命名空间里的主题共享相同的配置。

在Pulsar内部存在几个一对多的关系。一个命名空间对应多个主题(Topic),一个主题对应多个订阅者(Subsribes),一个订阅者可以接收主题上的所有消息。为了提供更加灵活的订阅方式,Pulsar提供了三种不同的订阅类型:

独占式订阅:每个主题有且仅有一个消费者;

共享式订阅:多个消费者可以共享一个订阅/主题,每个消费者可以收到订阅的某一部分内容;

失败切换模式:多个消费者可以连接到一个主题,但是同时有且仅有一个消费者可以收到消息,其他的消费者只有在当前在线的那个消费者离线时才能竞争上岗(同样只会有一个竞争获胜者,其它竞争失败者还是需要继续守候下一次竞争)。

除此之外,Pulsar支持将主题进行分区,一旦分区,数据也会被自动分区,如下图所示,和Kafka类似,Pulsar也引入了“Broker”概念,每个Broker管理多个主题。

Apache DistributedLog

DistributedLog的出现是数据层面抽象的必然结果。2012年底这个时间段正好是Twitter公司内部的实时消息基础设施的杂乱无章阶段。Kestrel是一款队列系统,被设计用来处理在线服务的关键消息,Kafka则被用于进行离线服务的日志收集和分析,郭斯杰的团队则使用BookKeeper进行数据库备份。

DistributedLog也被称为“共享日志基础设施”。日志存储是几乎所有分布式系统都需要解决的问题,而DistributedLog被设计来解决这一共有需求,也可以统一分歧,逐渐变成其他服务的基础组件,包括键值对数据库、订阅发布消息,以及跨数据中心的复制机制等等。

本文来自企鹅号 - 麦克叔叔每晚10点说媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 大数据生态圈到底是一个什么概念?和我们有关系吗?

    划重点 大数据这个概念本身就太大而且太宽,如果一定要严格定义是非常困难的一件事,不过Hadoop生态圈或者由其延伸的泛生态系统,基本上都是为了处理大量数据诞生的...

    企鹅号小编
  • 浅谈zookeeper性能的优缺点

    zookeeper原本不是为高可用性设计的,但很多系统实际上是需要跨机房部署的。出于性价比的考虑我们通常会让多个机房同时工作,而不会搭建N倍的冗余。也就是说单个...

    企鹅号小编
  • 金山毒霸被曝存在内核权限提升漏洞,黑客可攻击电脑

    漏洞总结 下文介绍了在金山毒霸/ Internet Security 9+中发现的一个能导致权限提升的内核堆栈溢出漏洞。金山毒霸为用户免费提供高效的安全保护解决...

    企鹅号小编
  • Apache Pulsar 2.3 重磅发布,新特性独家解读

    “Apache Pulsar 2.3.0 重磅发布!最新版本包含支持在Kubernetes中执行Pulsar Functions,基于JSON Web Toke...

    林一
  • Apache Pulsar崛起 | Meetup北京站全解析

    场景描述:2019 年 7 月,Apache Pulsar 正式发布了 2.4.0 版本,在 2.3.2 版本的基础上新增了诸多功能并修复了大量漏洞,包括存储端...

    大数据真好玩
  • Kafka 已落伍,转角遇见 Pulsar!

    自 LinkedIn 2011 年创建了 Apache Kafka 后,这款消息系统一度成为大规模消息系统的唯一选择。为什么呢?因为这些消息系统每天需要传递数百...

    大数据技术与架构
  • Flink未来-将与 Pulsar集成提供大规模的弹性数据处理

    问题导读 1.什么是Pulsar? 2.Pulsar都有哪些概念? 3.Pulsar有什么特点? 4.Flink未来如何与Pulsar整合? Apache ...

    用户1410343
  • Flink1.9新特性解读:通过Flink SQL查询Pulsar

    问题导读 1.Pulsar是什么组件? 2.Pulsar作为Flink Catalog,有哪些好处? 3.Flink是否直接使用Pulsar原始模式? 4.Fl...

    用户1410343
  • JDBC 批量处理

    用户2965768
  • 2014年OA产品和服务的满意度分析:有喜有忧

    研究发现,OA市场格局突变,有一些强势厂商在转型中调转方向,传统业务滑坡历害,这也可能跟厂商未来定位发展不无关系。另外据移动信息化研究中心认为,当前企业客户对O...

    人称T客

扫码关注云+社区

领取腾讯云代金券