confluent博客解读part0 云原生消息系统设计
背景
confluent博客解读是一个系列,主要是对confluent以下博客内容的一个阅读总结。
- Introduction: Design Considerations for Cloud-Native Data Systems
- Part 1: Making Apache Kafka Serverless: Lessons From Confluent Cloud
- Part 2: Speed, Scale, Storage: Our Journey from Apache Kafka to Performance in Confluent Cloud
- Part 3: From On-Prem to Cloud-Native: Multi-Tenancy in Confluent Cloud
- Part 4: Protecting Data Integrity in Confluent Cloud: Over 8 Trillion Messages Per Day
今天我们介绍的是第一篇,设计云原生数据系统时的设计考量,这篇文章是一篇导览性质的文章,具体的细节介绍会在各个part的文章解读中和大家进一步分享。
一些基本概念与输入
- twelve-factor app可以一定程度上解释云原生应用是怎样的
- confluent从用户眼中了解到用户对云原生数据平台的期望,也是confluent理解的cloud-native data system索要具备的特点:
- elasticity:可以一键弹性;可以基于策略自动伸缩
- infinite scale:可以有无限规模,在云上的话,某种程度来说,确实是这样的
- resiliency: 高可用性
- multi-tenancy: 服务最好是以高度抽象的形式提供,例如像S3一样通过API请求,用户无需关心底层资源
- pay per use: 按用量计费,只对实际使用的资源进行付费。这些资源可以是高层抽象过的资源,例如读写请求,也可是底层的物理资源,例如CPU和内存的用量。用户无需为没有使用的量进行付费
- cost effective: 主要指价格便宜,这个采用cloud service通过多租、pay per use等手段可以使得服务价格很便宜
- global: 全球化的,云原生数据系统是全球化的,用户涉及全球化的一些数据复制时,通过一个checkbox或者api调用就可以轻松搞定
弹性
confluent为用户提供弹性的细节技术会在Part 1: Making Apache Kafka Serverless: Lessons From Confluent Cloud中进一步分享,包括:
- 实现上采用事件驱动的微服务来组织控制面(choreography pattern):好处是各个开发小组可以独立管理他们控制面自己的逻辑,基于event log的方式也可以刚好的去容错、恢复。
- 两种核心功能:
- Self Balancing Clutsets(SBC): confluent server的附加能力,可以自动探测负载做自动均衡。
- tiered storage: 分层存储使得转移负载成为可能
性能和可伸缩性
confluent完成性能和伸缩性的重点是感知和理解用户的workload。在Speed, Scale, Storage: Our Journey from Apache Kafka to Performance in Confluent Cloud 这篇文章中会讨论到confluent设计高性能的云原生数据系统采用的一些原则。
要做到高性能和可伸缩,需要设计的系统在多个维度进行相关工作,从硬件、操作系统到软件的各个维度。关键是要形成一个严格的生产反馈环(tight feedback loop with production),通过生产级的可观测性,探测、分析性能和弹性事件,快速调整。
多租户
云和自建的系统都可以提供多租户的能力,但是云和自建的系统呈现出来的多租户效果是不同的。云有透明弹性的能力,租户不需要做容量评估或者做一些资源预置造成浪费。From On-Prem to Cloud-Native: Multi-Tenancy in Confluent Cloud 这篇文章介绍了多租户的三个维度:
- 访问隔离(access isolation)
- 命名空间隔离(namespace isolation)
- 性能隔离(performance isolation)
存储持久审计
这个持久审计主要指的是数据质量的审计功能。避免数据丢失或者不一致。confluent的云服务在这块有很多额外投入,自建的话就需要自己建设这方面的能力了。Protecting Data Integrity in Confluent Cloud: Over 8 Trillion Messages Per Day 这篇文章主要介绍了这块能力的建设。