聊聊Pulsar,一款非常优秀的消息中间件!!!
「这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战」。
有一个爱学习的研发老总,总是爱尝试不同的技术,这不,又让我来研究研究Pulsar
,我之前用的消息中间件基本上都是RabbitMQ
和kafka
,这次的项目老总说,用Pulsar
。之前都没用过,心里没底,既然要用,那就肯定要好好研究了。
直接扔给我一份英文文档,哎,太瞧得起我了,想要学习Pulsar的小伙伴,文档百度云盘链接自行下载。
提取码:pbzj
现在项目中基本上用起来了,简单聊聊Pulsar这框架吧?我目前所知道的基本都是网上获取的,基本知识点,还没深入进去,很多坑还没踩。最近项目中工作也很多,基本上没事时间写文章了(都是借口,哈哈)。
首先还是来了解一下什么是Pulsar吧,有那么多的消息中间件,为什么还要搞一个Pulsar呢?
Pulsar是什么?
先去官网看看,学习新的技术,官网肯定是第一选择。
官网:pulsar.apache.org/docs/zh-CN/…
Pulsar 是一个用于服务器到服务器的消息系统,具有多租户、高性能等优势。
Pulsar 源自Yahoo,于2016年开源并捐献给Apache基金会,并在2018年9月升级成为Apache顶级项目。
Pulsar 这个消息平台近两年非常火,被称为下一代的消息流平台,大有取代Kafka的势头。
Pulsar基本架构
- Pulsar采用存储计算分离的架构,pulsar使用了bookkeeper做消息的存储,bookkeeper保证了消息存储的可靠性和高效性,bookkeeper为pulsar提供了存储的扩展能力。
- Pulsar使用zk做元数据存储。
- 多租户,pulsar最初的设计就是支持多租户的。
- 命名空间:一个租户可以有多个命名空间,一个topic属于一个命名空间,pulsar中的配置都是以命名空间为单位配置的。
- Pulsar的broker用于处理消息的读写,broker中会有消息的本地缓存,因为多数场景下,消息被写入后会立刻被消费,因此broker中持有的新消息的缓存能非常有效的提高性能和MQ的整体吞吐。
相比kafka、rocketmq等MQ,pulsar基于bookkeeper的存储计算分离架构,使得pulsar的消息存储可以独立于broker而扩展。
多租户
多租户也是一个刚需功能,可以在同一个集群中对不同业务、团队的数据进行隔离。
persistent://core/order/create-order
以这个 topic 名称为例,在 core
这个租户下有一个 order
的 namespace
,最终才是 create-order
的 topic
名称。
在实际使用中租户一般是按照业务团队进行划分,namespace
则是当前团队下的不同业务;这样便可以很清晰的对 topic 进行管理。
通常有对比才会有伤害,在没有多租户的消息中间件中是如何处理这类问题的呢:
- 干脆不分这么细,所有业务线混着用,当团队较小时可能问题不大;一旦业务增加,管理起来会非常麻烦。
- 自己在 topic 之前做一层抽象,但其实本质上也是在实现多租户。
- 各个业务团队各自维护自己的集群,这样当然也能解决问题,但运维复杂度自然也就提高了。
以上就很直观的看出多租户的重要性了。
应用
除此之外的上层应用,比如生产者、消费者这类概念与使用大家都差不多。
比如 Pulsar
支持四种消费模式:
Exclusive
:独占模式,同时只有一个消费者可以启动并消费数据;通过SubscriptionName
标明是同一个消费者),适用范围较小。Failover
故障转移模式:在独占模式基础之上可以同时启动多个consumer
,一旦一个consumer
挂掉之后其余的可以快速顶上,但也只有一个consumer
可以消费;部分场景可用。Shared
共享模式:可以有 N 个消费者同时运行,消息按照round-robin
轮询投递到每个consumer
中;当某个consumer
宕机没有ack
时,该消息将会被投递给其他消费者。这种消费模式可以提高消费能力,但消息无法做到有序。KeyShared
共享模式:基于共享模式;相当于对同一个topic
中的消息进行分组,同一分组内的消息只能被同一个消费者有序消费。
第三种共享消费模式应该是使用最多的,当对消息有顺序要求时可以使用 KeyShared
模式。
关于 pulsar 基本知识点,我这里就不一一介绍了,介绍的话我也是拷贝过来的,我觉得看别人写的头头是道,你还不如自己去实践一遍,这样才能加深自己的印象,目前 pulsar 只能在Linux系统下安装。使用起来也很简单,几行代码就搞定了。多尝试,软件行业技术更新就是这么快,坚持学习,才能不被淘汰。
结语
看了很多网上一些人对于pulsar的前景看法,基本上都是比较看好的,Pulsar 社区一直在不断发展壮大,Pulsar 技术的发展和用例数量的增加已经形成良性循环,Pulsar 生态也在壮大。
Pulsar 也具有许多优势,因此能够在统一的消息和事件流平台脱颖而出,并成为更多人的选择。相比于 Kafka,Pulsar 更具有弹性,在运维和扩展上更为简单。
感兴趣的可以去研究研究,相比于摸鱼一天,不如利用时间多学一些感兴趣的知识,其实不仅是技术文章,天文地理都可以去了解(我就喜欢看宇宙方面的知识)。
转载自:https://juejin.cn/post/7034306102049112071