云原生数据是什么
在归纳出云原生数据的最终定义前,我们先看一看它的各个方面是如何定义的。首先,CNCF(见网址列表条目[13])对云原生的定义是:
云原生技术支持在公有云、私有云和混合云等新型动态环境中构建并运行可弹性伸缩的应用。云原生的代表技术包括容器、服务网格、微服务、不可变数据基础设施和声明式API。
这些技术能构建具有高度弹性、易于管理和便于观测的松耦合系统。结合云原生技术和可靠的自动化手段,工程师就能轻而易举地对系统做出多项重大变更,并预测变更结果。
注意上述定义描述了云原生的目标状态、理想特征及具体的代表性技术。根据CNCF的官方定义可以总结出,相比其他类型的应用部署,云原生应用在数据处理方式上的部署存在显著区别。接下来,让我们深入了解一下这些特性。
可扩展性
如果服务能够根据一定的资源量输出一定的工作量,那么增加资源量就意味着增加了该服务可执行的工作量。可扩展性描述了服务通过增加资源量来完成更多工作的能力。在理想情况下,如果提供无限的计算、网络和存储资源,那么服务就能无限扩展。对数据而言,这意味着无须停机就能完成扩展。传统系统在增加资源量时需要一段维护时间,在此期间必须关闭所有服务。但对云原生应用而言,停机维护是不可接受的。
弹性
可扩展性指通过增加资源量来满足需求,而弹性则意味着可以在不需要相关资源时将其释放。图1-2展示了可扩展性和弹性的对比。弹性基础设施也称按需使用的数据基础设施。在私有数据中心等受限环境中,为了共享有限的资源,弹性显得非常重要。如果云基础设施是按照使用的资源量进行收费的,那么使用弹性可以避免为不需要运行的服务付费。对数据管理而言,这意味着能够回收存储空间并优化对存储空间的使用。例如,将旧数据移动到成本较低的存储层。
图1-2 可扩展性和弹性的对比
自愈性
系统有时会出现各种糟糕的情况,数据基础设施会如何应对呢?具备自愈性的数据基础设施可以重新路由流量、重新分配资源并维持相应的服务水平。随着部署的分布式应用规模越来越大,技术越来越复杂,自愈性在云原生应用中也越来越重要。如果没有自愈性,那么可能需要在凌晨3点起床处理故障。对数据而言,这意味着要能检测到数据问题,如数据缺失问题和数据质量问题等。
可观测性
你是否遇到过设备出故障而自己却没有对其进行监控的情况?不幸的是,多数人不仅遇到过,情况还可能更糟。分布式应用是高度动态的,每项服务的可见性对于维持服务水平至关重要。因为服务之间的相互依赖导致故障场景变得十分复杂,所以可观测性是构建云原生应用的关键。数据系统中常见的卷需要使用有效的方法来监控数据基础设施的流量和状态。在大多数情况下,问题预警能帮助运维人员避免会付出巨大代价的宕机问题。
基于上述所有定义,我们尝试给出一个完整的定义:
云原生数据可以让组织采用云原生应用方法而非传统的人力、流程、技术全面整合,实现弹性扩缩容,提高可观测性和自愈性。容器化数据、声明式数据、数据API、数据网格和云原生数据基础设施(将自身构建为云原生应用的数据库、流式传输和分析技术)都体现了这一点。
为了使应用的数据基础设施与应用的其余部分保持一致,需要集成自动扩容、弹性和自愈性,需要通过API解耦服务,加快开发速度,还需要有能力观测整个应用技术栈,以便做出关键性的决策。简而言之,应用和数据基础设施应形成一个整体。