014 云原生之云数据库
构建 Serverless 应用程序意味着开发人员可以将精力专注于核心业务代码上,而无须管理和操作云端或本地的服务器或运行时。Serverless 真正做到了在部署应用时无须涉及基础设施的建设,自动构建、部署和启动服务。
FaaS(Function as a Service,功能即服务)是 Serverless 中最具代表性的服务形态。它把应用逻辑拆分为多个函数,并通过事件驱动的方式触发执行每个函数。
Service Mesh 又称服务网格。之所以称为服务网格,是因为每台主机上同时运行了业务逻辑代码和代理,此时,这个代理被形象地称为 Sidecar(业务代码进程相当于主驾驶,共享一个代理相当于边车),服务之间通过 Sidecar 发现和调用目标服务,从而在服务之间形成一种网络状依赖关系,然后通过一种独立部署的称为控制平面(Control Plane)的独立组件来集中配置这种依赖调用关系,以及进行路由流量调拨等操作。
分布式消息队列包含以下几个模块:
客户端:提供了消息的接收与订阅 API,同时内置了重试、熔断等高可用功能。
注册中心:提供了集群管理、元数据管理、路由和服务发现等功能。
计算节点:在消息队列的服务端 Broker 中,计算部分包含高性能的传输层以及可扩展的 RPC 框架,用于处理来自客户端的不同请求。
存储引擎:Broker 的核心为存储引擎,某些消息队列可能会将存储引擎与计算节点拆分开来,主要是为消息提供高性能持久化,以队列方式组织消息,用以保证消息必达。
传统的企业数据库系统根据其主要功能和性能不同,可分为 OLTP(OnLineTransaction Processing,联机事物处理)系统和 OLAP(OnLine AnalyticProcessing,联机分析处理)系统。在传统数据库架构中,OLTP 数据库和 OLAP 数据库是完全分离的。
OLTP 系统一般采用行式存储,对于运营型负载(指包含许多小事务和大量数据更新的负载)非常高效。OLAP 系统则与之相反,它一般采用列式存储,对于分析型负载(指包含大而复杂的查询,需要遍历大量行的负载)非常高效。另一方面,由于存储结构自身的局限性,行式存储不利于分析型查询的执行,列式存储不利于运营型事务的执行。
传统 NoSQL 的弹性能力是由所部署的节点数量决定的,这就意味着,要提升 NoSQL 的弹性能力,节点上的 CPU、存储和内存三大主要核心资源需要进行同比例的扩展。
实现云原生多模数据库时,可以选择更深一层的技术抽象,将时序数据抽象为文件模型,即在存储池上的接口以文件为操作单位。这样虽然在工程上放弃了一定的便捷性,但可以换取不同数据模型的最高效率。
数据库在传输层加密时会使用 SSL 机制,在存储层则有两种实现方式:落盘加密(Data at Rest Encryption,DRE)和数据库透明加密(Transparent DataEncryption,TDE)。落盘加密是通过基础设施层的云盘加密能力实现的。数据库透明加密是数据库特有的加密方式,即对数据文件执行实时 I/O 加密和解密,数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密,密钥使用 KMS 进行管理。所谓透明,是指对应用来说是无感知的,数据在内存中仍然是解密状态。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/dca4a8ca31da44058373dd461】。文章转载请联系作者。
评论