PART Ⅰ : 容器云OPENSHIFT
- 安装
- 数据持久化
- 集群管理
- 数据持久化
- 管理
- 网络
- 安全审计
- 工具应用部署
PART Ⅱ:容器云 KUBERNETES
- 基础
- 原理
- 系统应用/网络CNI/TRaefik
- 安装
- 集群管理
- 用户认证ServiceAccount与授权策略RBAC
- K8S应用管理工具Helm
- 问题
- 辅助工具
- Doing:K8S 多集群管理与网络互联
- VM On K8S
PART Ⅲ:持续集成与持续部署
- CICD优化总结
- Jenkins
- Gitlab
- Drone
- Nexus
- 配置
- 使用OrientDB Console在DB层面修改配置
- [设置SMTP邮件服务](https://www.wenjiangs.com/doc/krrcu7ebin9hh
- 仓库管理
- 数据备份恢复
- API
- Jenkins相关插件
- 配置
- SonarQube静态代码扫描分析
- LDAP
- Apollo
- 项目管理工具
- Jira
- Redmine
- Harbor
- Vault
- Alfred
- Web IDE: VSCode
- DolphinScheduler
PART Ⅴ:日志/监控/告警
- Logging
- Kafka/Zookeeper
- Filebeat
- Metrics
- Tracing
- Sentry日志聚合告警平台
PART Ⅵ:基础
- Docker
- Shell脚本
- Mave
- git
- 正则表达式
- SSL/TLS
- Ceph
- 性能压力测试
- PXE+Kickstart
- netboot.xyz
- Tool
- Windows
- MacOS小技巧
- Linux
- Linux排错优化
- iptables详解
- MySQL
- Redis
- 负载均衡与代理
- 代理服务器
- Nginx
- GitBook
- Telegram机器人
- OpenVPN Server
- iDRAC
- vSphere
- Raspberry Pi树莓派
- 钉钉机器人
- Aliyun CLI
- 音、视频处理工具:fffmpeg
- 图片处理工具:Imagemagick
- PDF处理工具:Ghostscript
- Nvidia
- Virtualbox 虚拟机管理
- 阿里云产品使用总结
- RustDesk:可自建远程控制软件
- Poste:自建邮件服务器
- 使用 Jlink构建最小化依赖的 JRE 环境
- Aria2
- Asuswrt-Merlin
- Trap:Shell脚本信号跟踪
- 零散知识汇总
- BarkServer通知
- Synology
PART Ⅶ:数据存储、处理
PART VIII:CODE
- Python学习笔记
- 基础语法
- statik 将静态资源文件打包到二进制文件中
- HTML/CSS 学习笔记
- JavaScript学习笔记
PART X:HACKINTOSH
PART XI:安全
基础概念
1、功能特性
2、Pulsar架构
- Broker
- 一个或多个Broker
- 处理和负载接受到的生产者发送的消息数据
- 调度消息发送给消费者
- 与Zookeeper进行通信以处理各种协调任务,
- 将消息存储在BookKeeper实例(又称为bookies)中
- 依赖于ZooKeeper集群来执行某些任务,
- 等等
- Apache Zookeeper(Standby/Cluster)
- Pulsar使用ZK存储元数据、集群配置,还有协调各Broker
- 协调由那个Broker响应数据处理
- 存储Topic主题的元数据
- Apache BookKeeper(又称为bookies)
- 由一个或多个bookies组成的BookKeeper集群来存储需要持久化的消息数据,和消费者消费消息的游标offset
- Apache BookKeeper是一个分布式的WAL(write-ahead log)系统
1、namespace
namespace是Pulsar中最基本的管理单元,
可以在namespace中进行设置权限、调整副本设置,管理跨集群的消息复制,控制消息策略等关键操作。
一个主题topic可以继承其所对应的namespace的属性,因此我们只需对namespace的属性进行设置,就可以一次性设置该namespace中所有主题topic的属性。
2、namespace分类
namespace有本地namespace和全局namespace两种
本地namespace仅对定义它的集群可见
全局namespace跨集群可见,可以使同一个数据中心的集群,也可以是跨地域中心的集群,这取决于namespace中是否设置了跨集群拷贝数据功能
本地和全局namespace都可以通过一定设置进行跨团队和跨组织共享。一旦生产者获得了namespace的写入权限,那么它就可以向namespace中的所有topic主题写入数据。若主题不存在,则在第一次写入时动态创建。
3、Topic Schema
{persistent|non-persistent}://tenant/namespace/topic
{持久化|非持久化}://租户/命名空间/主题
4、Topic主题类型
持久化的:
persistent://tenant/namespace/topic-name
默认情况下,Pulsar将所有未确认的消息持久存储在多个 BookKeeper(存储节点)上。因此,持久主题上的消息数据可以在broker重新启动和订阅者故障切换后继续存在。Pulsar 在收到消息之后,将消息发送给多个 BookKeeper 节点(具体由复制系数来定),节点将数据写入预写式日志(write ahead log),同时在内存里也保存一份。节点在对消息进行确认之前,强制将日志写入到持久化的存储上,因此即使出现电力故障,数据也不会丢失。
非持久化的:
non-persistent://tenant/namespace/topic-name
消息不会持久化到磁盘,而只存在于内存中。当使用非持久性主题时,停止Pulsar Broker或断开主题订阅者的连接,意味着该(非持久性)主题上所有传输中的消息都会丢失,同时客户端可能会看到消息丢失。
5、支持的消息压缩格式:
- LZ4
- ZLIB
- ZSTD
- SNAPPY
6、生产者发送消息模式
- 同步:发送每条消息后,生产者将等待Broker的确认。如果未收到确认,则生产者将发送操作视为失败
- 异步:将把消息放于阻塞队列中,并立即返回。然后,客户端将在后台将消息发送给 broker
如果队列已满(最大大小可配置),则调用 API 时,producer 可能会立即被阻止或失败,具体取决于传递给 producer 的参数。
7、消费者接受消息模式
- 同步
- 异步
8、订阅模式
- exclusive(独家):只允许有一个消费者
- shared(共享):允许多个消费者,消费者间机会均等。消息通过轮询机制分发给不同的消费者,并且每个消息仅会被分发给一个消费者。当消费者断开连接,所有发送给他,但没有被确认的消息将被重新安排,分发给其它存活的消费者。
- failover(灾备):允许多个消费者,消费者有主从之分,主消费者负责接受数据,主消费者挂掉以后,从消费者代替主消费者接着接受数据
- key_shared:允许多个消费者,具有相同key或相同订阅key的消息仅传递给一个使用者。
不管消息被重新发送多少次,它都会被发送到同一使用者。当消费者连接或断开连接时,将导致服务的消费者更改某些消息键。
9、多主题订阅
- 当consumer订阅pulsar的主题时,它默认指定订阅了一个主题,例如:
persistent://public/default/my-topic
。 - 从Pulsar的1.23.0-incubating的版本开始,Pulsar消费者可以同时订阅多个topic
- 多主题订阅方式:
- 正则匹配:persistent://public/default/finance-.*
- 明确指定的topic列表
非持久化主题内的数据处理速度比持久化主题快
消息的默认保留,过期处理方式
- 立即删除消费者已确认的所有消息
- 以消息backlog的形式,持久保存所有的未被确认消息
Pulsar 支持保证一条消息只能在broker服务端被持久化一次的特性,即消息去重功能
10、消息路由策略
- 单独分区(SinglePartition):生产者随机挑选一个分区,并将数据写入该分区。该策略与非分区主题提供的保证是一样的,不过如果有多个生产者向同一个主题写入数据,该策略就会很有用。
- 轮询分区(RoundRobinPartition):生产者通过轮询的方式将数据平均地分布到各个分区上。比如,第一个消息写入第一个分区,第二个消息写入第二个分区,并以此类推。
- 哈希分区(hash):每个消息会带上一个键,要写入哪个分区取决于它所带的键。这种分区方式可以保证次序。
- 自定义分区:生产者使用自定义函数生成分区对应的数值,然后根据这个数值将消息写入对应的分区。
11、消息保留策略
消息存留策略
存留规则会被用于某
namespace
下所有的topic
,指明哪些消息会被持久存储,即使已经被确认过。 没有被留存规则覆盖的消息将会被删除。消息过期策略
设置在
namespace
上的TTL
,消息即使没有被确认消费,也会被删除掉。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论