第1章 云原生数据基础设施:持久化、流式传输与批量分析
在解决与数据相关问题的时候,是否常常需要一种现代化的方案?云原生应用是否也时常受限于微服务和服务网格的使用?如果你在Kubernetes(通常缩写为K8s)上部署了应用却从未涉及过数据服务,那么恐怕你还没有充分拥抱云原生。云原生应用的各个方面,包括数据处理,都应当符合可扩展性、弹性、自愈性和可观测性等云原生基本准则。
由于工程师主要关注有状态服务,因此本书旨在帮助工程师提升管理Kubernetes云原生数据的能力,并让大家在通往云原生数据的旅途上领略更美好的风光。如果你刚开始使用云原生应用,那么现在正是时候去了解技术栈的方方面面。技术栈融合是充分利用云资源的未来趋势的。
我们共同创造的未来是什么样的呢?
过去,数据通常被部署到Kubernetes以外的某个地方,这带来了大量额外的工作。造成这种结果的原因将在下文讨论,现在先聚焦如何组合整个技术栈来实现应用的按需快速部署。这在当前的技术背景下是切实可行的。单独部署服务器的时代已经过去,未来整个数据中心的虚拟化部署正在成为可能。过去数月甚至数年的开发周期如今已缩短至数天或数周。现在可以将多个开源组件整合到Kubernetes应用中,以便应用从个人计算机上灵活地迁移至大型云服务器上。
开源贡献是很关键的部分。如无特别指明,本书中提及的Kubernetes及相关项目都应遵守Apache License 2.0。若基础设施可在任意环境中自由运行,则需要许可协议加以证明。开源的免费和自由对于构建Kubernetes云原生应用至关重要。开源驱动着基础设施的变革,在数据方面也不例外。
这是我们努力前进的方向,在不久的将来应用将会完全Kubernetes化。最后一个部分也是最重要的,那就是你。作为本书的读者,你也是成就这一未来的建设者。工程师的本职工作是建设。面对不断增加的需求,复杂基础设施的部署方式在不断地推陈出新。美国航空公司的第一个电子数据库系统于1960年上线,那时需要一群工程师来保障其全天在线运行。经过技术革新,原先的大型计算机变成了小型计算机,后来出现了微型计算机,如今已经发展到了我们正在做的多主机管理。现在,同样的演进正发生在云原生领域。
本章将介绍云原生应用的各种组件,探讨运行有状态工作负载面临的挑战,并介绍一些相关领域。下面首先介绍构成云原生数据的基础设施的基本模块。