云原生数据库小白指南:看完这篇你就懂了!

6

主题

9

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2022-11-8 11:29:59 | 显示全部楼层
众所周知,互联网公司大部分业务都是数据密集型应用,说白了后端开发核心就是处理操作数据,这也是为什么后端程序员都自嘲 CRUD。
当前不少互联网公司数据存储还是使用的关系型数据库 MySQL、PostgreSQL等,还有就是近些年火热的 NoSQL 数据库。
但是由于 MySQL 这类传统单机数据库在面对互联网海量数据和高并发时,会有遇到吞吐量瓶颈,常见的方式无非就是:加!拆!
“加” 就是升级数据库服务器的 CPU、内存、磁盘等,提高单台机器的性能和吞吐量,但是单机容量始终有上限的。
所以往往还会“拆”, 就是读写分离,或者是分库分表
但是这两种方式要么对成本不友好,要么就是给运维、开发增加额外的负担,也不适应互联网业务的快速扩展。
而近年来随着云计算的兴起,云数据库打破了数据库市场的原有格局。
这类 PaaS 服务的朴素思想就是,将数据库服务搬到云上,让用户更方便轻松地使用、管理和维护数据库。
关系型数据库的应用是最广泛的,也是云数据库首先进入的领域。
这里的先行者是亚马逊云,它们早在 2009 年就发布了 RDS,后来其它的厂商也纷纷开始跟进。
这类云数据库基本完全兼容 MySQL 等语法,所以应用程序几乎可以无缝迁移到云数据库上。
但是这样借助 IaaS 直接将传统数据库搬到云上的方案,不能充分的发挥云的特点和优势,存在资源利用率较低,维护成本等问题。
于是,云厂商们又把目光转向了云原生(Cloud Native)。
Cloud 表示数据库程序运行在云上,Native 表示应用程序从设计之初即考虑到云的环境,为云原生而设计,能够充分利用和发挥云平台的弹性 + 分布式优势。
说到云原生一定离不开 Kubernetes 和 Docker 等容器化技术,应用层一般是无状态的,所以非常适合容器化部署,但是对于存储层,DB 应该怎么存储数据并确保状态呢?
于是,云厂商们重新设计完全云原生的数据库,并为 Kubernetes 引入了有状态集和持久卷,使得可以在 Kubernete 上方便的运行有状态服务。
这样云原生数据库就可以在云原生技术上运行(比如Kubernetes,各类公有云),以提供灵活、可扩展的数据存储和查询能力。
那么,云原生数据库有什么优势和特点呢?
1. 更强的可扩展性和弹性
比如电商类业务,每次双十一等大促的时候,都需要提前扩容数据库,并且传统关系型数据库扩容过程也很漫长,而大促一过,有需要缩容,往往会造成极大的资源浪费,机器的利用率很低。
相比之下,云原生数据库利用虚拟化技术将 CPU、存储等资源池化,计算和存储分离,利用云可以快速地实现水平扩展,提升数据库的处理能力,突破了传统关系数据库服务的单机单库限制。
2. 更高的可靠性和可用性
和传统的数据库不同,云原生数据库往往基于多副本、分布式一致性等技术实现高可用和容灾。
比如 Amazon Aurora 的数据存储就分布在至少 3 个可用地域的 6 个副本,得益于底层原生的数据同步机制,可以方便的在全球进行跨区域复制副本,就近为世界用户提供接入,降低延时:


3. Serverless,运维自动化
即无需服务器,就能使用数据库,比如 Amazon Aurora Serverless,只需要创建数据库节点,选择所需的数据库容量范围,然后通过官方 Data API 进行连接数据库读写,几乎和传统关系型数据库一样易用性。
它会自动响应负载变化进行自动扩缩容,真正实现按需付费,相比传统的商业数据库成本大大降低!
云原生数据库有很多适合不同场景的类型,比如关系型、键-值、文档型、时间序列、图数据库等,可以根据自己的业务需求进行选择,这里从 Amazon 官网截取了一些云数据库服务:


Amazon Aurora 是关系型的云原生数据库,适合对 ACID 强要求的业务,比如金融、支付行业。
有篇论文《Amazon Aurora - Design Considerations for High Throughput Cloud-Native Relational Databases》 对 Aurora 设计、架构做了整体介绍。
Amazon DynamoDB 则是起源自 Amazon 在 2007 年发表的 《Dynamo: Amazon's Highly Available Key-value Store》,这篇论文也被认为是 NoSQL 开篇之作(推荐去看下)。(2022年又新发了一篇,TiDB,阿里云也都有对应的解读,学习的速度还是很快的)
DynamoDB 支持键-值和文档型数据模型,属于 NoSQL 云原生数据库代表。
利用云原生数据库,可以无需服务器,也不需要安装和维护,只需要创建一个表,就可以快速开发开发实现应用,所以现在越来越多公司的数据库都在上云。
记得芬兰有一家非常“小”的社交游戏公司,该公司仅有 200 名左右员工,却开发出几款火爆的游戏:《卡通农场》、《部落冲突》和《海岛奇兵》。
而平均每款游戏只有二三十人负责开发运维,看过他们 CEO 埃卡·潘纳宁 的采访才发现,除了游戏高度的模块化之外,整个应用都跑在 Amazon EC2 上,并且数据库也是用的 Amazon DynamoDB,这样可以直接省掉一个数据库运维团队(国内很多互联网大厂往往每个业务就有数据库运维团队),并且对于这样的全球化游戏厂商,数据存储跨不同地域非常重要,而云原生数据库天生适合这样的场景。
可以说,云原生数据库现在已经进入了比较成熟的阶段,大多数业务场景应该都不需要自己去买服务器,然后安装系统、自建数据库,尤其是一些数据量大、性能要求高的,将时间花在应用程序开发上,而不是本地配置和管理数据库等繁重的事上。
更为重要的是,像亚马逊云科技这样的云厂商,提供了非常多的能力,比如数据仓库、大数据分析、机器学习、AI、物联网、EC2云服务器 等,联动这些云上能力,应用可以快速实现需求。
比如作为一家游戏公司,肯定需要分析用户的行为,那么就可以将 Aurora、DynamoDB 等实时数据库中存储的信息导出到 Amazon S3 中,然后使用 Amazon Athena 交互式查询服务,使用标准 SQL 就能分析 Amazon S3 中的数据,而这些只需要在控制台配置就好了,无需执行复杂的 ETL 来做数据分析。
总之,未来数据库上云一定是趋势,知名咨询公司 Gartner 指出,到 2023 年,世界上 3/4 的数据库都会跑在云上 ,推荐开发者们都去体验尝试下云原生数据库。
点击下面链接可以注册试用,还有多种免费套餐和专属福利赠送,不用担心不会用,亚马逊云官方贴心安排了上手教程,手把手教学,小白也能轻松上手。
回复

举报 使用道具

2

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-11-8 11:30:09 | 显示全部楼层
回复

举报 使用道具

您需要登录后才可以回帖 登录 | 立即注册
快速回复 返回顶部 返回列表