云原生环境下的流式数据处理:Kubernetes与Apache Pulsar
1. 消息传递保证
1.1 Exactly-once保证
Exactly-once是三种消息传递保证中最严格的一种,意味着生产者创建的数据只会被传递一次。例如在资金转移等精确交易场景中,加减操作必须只传递和处理一次,以避免出现问题。不过,这种保证会给代理(broker)带来更大的维护负担,因此需要调整分配给代理的资源以及预期吞吐量。
在为每种类型的消息选择传递保证时要格外谨慎。因为如果对传递保证理解不全面,可能会对消费者产生意想不到的下游影响。比如要明确回答“我的应用程序能否处理重复消息?”,“可能”这样的答案是不够的。
2. 流式技术的特性范围
2.1 特性范围的重要性
市场上有许多流式技术,虽然表面上看起来相似,但由于新的需求,它们各自解决不同的问题。大多数是开源项目,吸引了志同道合的人参与并推动项目发展。
在评估使用哪种流式技术时,特性范围可能是最重要的选择标准。同时,也应考虑该技术是否适合Kubernetes,以及更复杂的特性是否值得增加资源成本。幸运的是,首次做出错误决策的成本相对较低,因为流式数据系统由于其短暂性,往往是最容易迁移的。但流式技术在特性栈中嵌入得越深,迁移就越困难。
2.2 流式特性的分类
流式特性的范围可以分为以下两大类:
| 类型 | 描述 | 示例 |
| ---- | ---- | ---- |
| 消息代理(Message broker) | 最简单的流式技术形式,通过上述一种或多种传递方法和保证,促进数