Apache Pulsar学习笔记16: 租户、命名空间创建,用户角色Token和权限配置
2022-03-20
前面我们使用Helm在Kubernetes中部署了生产可用的Pulsar集群,并将集群接入到Prometheus监控系统。
作为Pulsar集群的管理员,将这套生产可用的Pulsar集群交付给开发使用时,还需要做好租户和命名空间划分和创建,用户角色和权限配置。 本节将根据实践介绍一下Pulsar集群管理员如何做这些工作的。
...前面我们使用Helm在Kubernetes中部署了生产可用的Pulsar集群,并将集群接入到Prometheus监控系统。
作为Pulsar集群的管理员,将这套生产可用的Pulsar集群交付给开发使用时,还需要做好租户和命名空间划分和创建,用户角色和权限配置。 本节将根据实践介绍一下Pulsar集群管理员如何做这些工作的。
...上一节,使用Pulsar官方的Helm Chart在Kubernetes集群中规划并部署了生产可用的Pulsar集群。
在上一节,我们还留了一个小尾巴,在部署Pulsar集群时,禁用了监控相关的组件(promethues, grafana等)。 在以Kubernetes为基础的云原生基础架构中,肯定已经单独部署了以Prometheus为核心的各个监控组件,因此我们希望使用平台统一的Prometheus实现对Pulsar集群的监控。
...时间过得比较久了,在开始今天的学习之前先回顾一下前面已经学习的13节的内容。
Pulsar是一个支持多租户的、高性能的、分布式的Pub-Sub消息系统。
pulsar-admin
创建tenant、namespace、topicconsumer.Receive()
和consumer.Chan()
两种方式消费消息。前者对channel关闭和context cancel的情况做了封装,后者要我们自己处理和channel的交互,但也提供了最大的灵活性。前面的学习一直是基于以docker容器启动的单机Pulsar。今天将学习使用Helm在Kubernetes集群中部署Pulsar集群。
...上一节学习了如何为Pulsar开启基于JWT的身份认证。 Pulsar使用身份认证提供者(Authentication Provider)识别客户端,但如果只启用身份认证,那么只要客户端通过认证就可以访问集群中的所有资源,因此在启用身份认证的基础上,还必须为Pulsar开启授权以进行权限管理。 其实上一节在学习JWT身份认证时,已经开启了授权。本节将详细学习一下Pulsar的授权和权限管理。
...Pulsar支持可插拔的身份认证和授权机制,Pulsar Proxy或者Pulsar Broker都支持该机制。认证和授权机制一起保证了客户端对Pulsar Topic、命名空间、租户的访问权限。
默认情况下,Pulsar并不会启用加密、身份认证和授权机制。之前我们使用pulsar-admin
,pulsar-client
等命令行工具,使用Java或Go语言开发的Consumer和Produmer,访问使用docker容器启动的单机Pulsar时,都未用到任何身份认证信息。
也就是说,Pulsar的默认配置是完全开放状态的,任何人都可以访问它。因此,必须启用Pulsar的认证和授权机制,为Pulsar各个组件开启安全防护。
前面在学习Topic的时候,已经了解了分区Topic的基本概念。在Pulsar中一个Topic只能由一个Broker提供服务,而单个Topic的吞吐量受限于为其提供服务的Broker的计算能力,这限制了Topic的最大吞吐量。
Pulsar通过分区Topic来提高吞吐量
,分区Topic在底层通过N个内部Topic实现,N就是分区的数量。
主流消息系统都会提供很多好用的特性支持各种业务场景,死信队列
, 延迟队列
这些词在使用这些消息系统时经常被提到。
Pulsar作为下一代云原生消息系统肯定也是支持这些特性的。Pulsar中没有队列的概念, 前面在学习使用Java和Go开发Pulsar的Consumer时,在创建Consumer时可以为其设置死信策略
,并指定死信Topic
。
本节将学习Pulsar中的延迟消息投递功能。
前面学习了Pulsar的架构,在本地开发环境中使用Docker运行了单机的Pulsar,并学习使用plusar-admin
命令行工具管理集群、租户、命名空间和Topic,使用Java和Go开发Pulsar的Producer和Consumer,使用Pulsar Schema管理消息数据的类型安全。
本节将学习PulsarWeb图形管理工具Pulsar Manager,使用Pulsar Manager也可以监控和管理Pulsar集群、组合、命名空间和Topic。遵循渐进性学习原则,本节还是现在本地开发环境使用Docker容器运行Pulsar Manager,以后再完成在Kubernetes集群中部署生产就绪的Pulsar集群和Pulsar Manager。
前面两节分别介绍了如何使用Pulsar Java客户端库和Go客户端库开发Producer、Consumer。 目前主流的消息中间件都不负责消息在从生产者到消费者上下游传递过程中的类型安全性,而由客户端自己负责消息的序列化和反序列操作来保障消息传递的类型安全。 Pulsar也支持这种客户端的方法,生产者将具体类型的消息对象序列化成字节数组发送到Topic,消费者从Topic接收字节数组并反序列化为具体类型的消息对象。 除了由客户端负责消息类型安全性的方法,Pulsar还提供了一种服务端的方法即Pulsar Schema,本节将学习如何使用Pulsar Schema管理消息数据的类型安全性。
...上一节学习了Pulsar中的生产者、消费者、订阅和订阅类型。
当一个消费者连接到Pulsar时,会创建一个订阅(Subscription),订阅有4种类型:独占模式、灾备模式、共享模式和基于key的共享模式。
订阅是命名好的配置规则,指导消息如何投递给消费者。生产者和消费者是连接到Pulsar的客户端,上节使用pulsar-client
连接到Pulsar集群完成了消费者和生产者的测试。
真实场景中的生产者和消费者是我们开发的程序,从本节开始将学习如何使用各种编程语言开发Pulsar的生产者和消费者。