当前位置: 首页 > news >正文

阿里云——云存储与数据库服务


云存储与数据库服务

数据是数字时代的新石油,而存储与数据库服务就是保存和提炼这些石油的“油库与炼油厂”。阿里云提供了从对象、块、文件存储到关系型、NoSQL、数据仓库的全方位数据服务。本章将帮你构建一套清晰的数据存储选型框架,并掌握核心服务的使用。

5.1 对象存储(OSS):海量非结构化数据的家

对象存储(OSS, Object Storage Service) 是一种海量、安全、高可靠、低成本的云存储服务,适合存放任意类型的非结构化数据,如图片、视频、文档、备份、日志文件等。

核心概念

  • 存储空间(Bucket):文件的命名空间,相当于顶层文件夹。名字全局唯一。
  • 对象(Object):OSS存储的基本单元,即一个个文件。由Key(文件名)、Data(数据本身)和MetaData(元信息)组成。
  • 地域(Region):Bucket创建时需选择地域,数据默认存储在该地域。
  • 访问域名(Endpoint):访问Bucket的网络地址。

核心特性与适用场景

  • 无限容量与高持久性:设计耐久性高达99.9999999999%(12个9),无需担心数据丢失。适用于备份归档、静态资源存储。
  • 高并发与带宽:支持海量客户端同时读写,无需担心带宽瓶颈。适用于用户上传内容(UGC)、图片视频分享网站。
  • 低成本分级存储:提供标准、低频访问(IA)、归档、冷归档四种存储类型,价格逐级递减,访问速度也逐级变慢。可根据数据访问频率选择,优化成本。
    • 标准:热数据,频繁访问。
    • 低频IA:数据较少访问,但需要实时读取。
    • 归档/冷归档:冷数据,基本不访问,读取需要先解冻(耗时几分钟到小时级),适合合规性存储、长期备份。

OSS的核心价值在于解耦。将应用中的静态资源(JS/CSS/图片)分离到OSS,并通过CDN加速,能极大减轻Web/App服务器的负载,提升全球访问速度,是现代化应用架构的标配。

5.2 块存储与文件存储:为ECS提供持久化存储

块存储和文件存储为计算服务提供块级文件级的持久化存储。

  • 块存储(Block Storage)

    • 是什么:一种裸磁盘空间,需要挂载到ECS实例后,由实例的操作系统进行分区、格式化(如ext4, NTFS)后才能使用。
    • 特点:低延迟、高性能、可随机读写。一块云盘只能挂载到同一可用区的一台ECS实例上
    • 类型
      • ESSD:基于NVMe SSD,性能极强(最高100万IOPS),适用于核心业务、高性能数据库。
      • SSD云盘:高性能SSD盘,性价比高,适用于一般业务系统。
      • 高效云盘:基于SATA HDD,适合中小型数据库、开发测试环境。
    • 用途:为ECS实例提供系统盘和数据盘,存放需要直接读写磁盘块的应用,如数据库。
  • 文件存储(NAS, Network Attached Storage)

    • 是什么:一种可共享的、支持多种协议(NFS/SMB)的文件存储服务。像一个共享网络文件夹。
    • 特点多个ECS实例(甚至跨可用区)可以同时读写同一份文件。容量弹性伸缩,无需预置。
    • 用途内容管理、共享工作目录、日志共享等需要多实例共享访问同一文件集的场景。例如,Web集群共享用户上传目录,容器集群挂载共享配置文件。
特性块存储 (云盘)文件存储 (NAS)
访问协议块设备 (SATA, SCSI, NVMe)文件协议 (NFS, SMB)
连接性单ECS实例(同可用区)多ECS实例/容器(同VPC)
典型用例数据库、操作系统共享目录、CI/CD共享、企业文件共享
5.3 数据库选型指南:关系型 vs NoSQL vs 数据仓库

数据库是应用的核心,选型失误将带来巨大的后期改造成本。以下是三大类数据库的选型框架:

  1. 关系型数据库 (RDS)

    • 数据模型:基于表格,结构固定,遵循Schema。
    • 查询语言:SQL。
    • 优势事务ACID特性(原子性、一致性、隔离性、持久性)、强一致性、强大的联表查询。
    • 场景:需要强一致性事务的核心业务系统,如订单、交易、用户账户管理系统。
  2. NoSQL 数据库

    • 数据模型:非表格,结构灵活。
    • 查询语言:非SQL,各有自己的API。
    • 优势高性能、高扩展性、灵活的数据模型
    • 分类与场景
      • 键值存储 (Key-Value):如 Redis。缓存、会话存储、排行榜。
      • 文档存储 (Document):如 MongoDB。内容管理系统(CMS)、产品目录、用户配置文件。
      • 列式存储 (Wide-Column):如 HBase。物联网(IoT)、时序数据。
      • 搜索存储 (Search):如 Elasticsearch。日志分析、全文搜索。
  3. 数据仓库 (Data Warehouse)

    • 代表:MaxCompute, AnalyticDB (ADB)。
    • 特点专为复杂分析查询(OLAP)设计,海量数据(PB级)处理能力。
    • 场景:商业智能(BI)报表、数据分析和挖掘。

现代应用往往是多模数据库(Multi-Model) 架构。不要试图用一个数据库解决所有问题。例如,核心交易用RDS,缓存用Redis,全文检索用Elasticsearch,海量分析用MaxCompute。

5.4 云原生数据库:RDS (MySQL) 核心功能

阿里云关系型数据库服务(RDS)是一种稳定可靠、可弹性伸缩的在线数据库服务。它免去了数据库安装、硬件投入、故障恢复等复杂操作。

以最常用的RDS MySQL为例,其核心优势远超一台自建MySQLECS实例:

  • 高可用性:默认提供主备架构(一主一备,跨可用区部署),自动故障切换,业务无感知。
  • 读写分离:只需一键开启,即可自动创建一个或多个只读实例,通过一个独享的读写分离地址,自动将写请求发往主实例,读请求发往只读实例,轻松应对高并发读场景。
  • 自动备份:支持数据备份和日志备份,可设置备份策略,并支持按时间点恢复(恢复到任意秒级)。
  • 性能优化:提供参数优化建议、SQL审计和优化、慢查询分析等功能。
  • 白屏化管理:监控告警、账号管理、数据库升降配、版本升级等操作均可在线完成,极大简化DBA工作。
5.5 NoSQL之王:Redis版与MongoDB版的应用场景

阿里云提供了完全兼容开源协议的托管式NoSQL服务,让你无需管理数据库服务器。

  • Tair/Redis版

    • 场景缓存(降低数据库压力,提升响应速度)、会话存储(分布式Session)、排行榜秒杀
    • 阿里云增强:提供持久内存机型(性价比极高)、集群版(海量数据与高性能)、读写分离版(超高读性能)。
  • MongoDB版

    • 场景内容管理系统游戏用户档案物联网(存储设备状态信息)。
    • 阿里云增强:提供三节点副本集(默认高可用)和分片集群(水平扩展)架构。
实战演练:构建一个读写分离的Web应用(ECS + RDS + OSS)

让我们综合本章知识,构建一个比第一章更健壮、性能更高的Web应用。

目标

  1. Web服务器(ECS)无状态,便于水平扩展。
  2. 用户上传的图片、附件等静态资源存入OSS,减轻服务器负载。
  3. 数据库使用RDS,并配置读写分离,提升读性能。
  4. 通过SLB对外提供服务,实现高可用。

步骤一:创建RDS MySQL实例并初始化

  1. 在RDS控制台创建MySQL实例。
  2. 网络类型:选择之前创建的prod-vpcdata-vswitch-zonec(数据层子网)。
  3. 系列:选择高可用版(一主一备)。
  4. 设置数据库管理员账号和密码。
  5. 创建成功后,在“数据库连接”中申请内外网连接地址(内网地址用于ECS访问,外网地址用于本地临时管理)。
  6. 通过DMS或MySQL客户端登录,创建一个名为web_db的数据库。

步骤二:创建OSS Bucket

  1. 在OSS控制台创建一个Bucket,例如web-app-static-<你的账号ID>
  2. 地域:选择与ECS/RDS相同的地域。
  3. 存储类型:标准。
  4. 读写权限:私有(推荐,用户通过API签名或临时Token访问,更安全)。

步骤三:部署并配置Web应用

  1. 创建一台ECS实例,部署在web-vswitch-zonea中。
  2. 在Web应用(如WordPress)的配置文件中(如wp-config.php),修改数据库连接设置:
    • 数据库主机:填写RDS实例的内网地址(至关重要!通过内网访问,延迟低且免费)。
    • 使用之前创建的数据库名、用户名和密码。
  3. 安装并配置OSS的WordPress插件,将媒体库的上传目标设置为你的OSS Bucket。并在插件中配置具有OSS访问权限的RAM角色的AccessKey(参考第2章实战)。

步骤四:配置RDS读写分离

  1. 在RDS控制台,目标实例的“数据库代理”中,开通数据库代理功能。
  2. 创建一个读写分离地址。该地址会自动实现读写分离。
  3. 在Web应用中,配置两个数据库连接
    • 写连接:指向RDS主实例的内网地址(用于写操作)。
    • 读连接:指向RDS的读写分离地址(用于读操作)。
    • (许多现代框架,如Laravel,已支持在配置中直接定义读/写连接。)

步骤五:通过SLB访问

  1. 创建一个应用型负载均衡(ALB),监听80端口,并将上述ECS实例添加到后端服务器组。
  2. 将域名解析到ALB的公网IP上。
  3. 现在,用户访问网站时,图片等静态资源从OSS高速下载,数据库读请求被自动分发到只读实例,写请求发往主实例,整个系统的性能和可用性得到了极大提升。

通过本章,不仅了解了各种存储和数据库服务,更掌握了如何将它们有机地组合起来,构建一个专业、健壮的应用架构。

http://www.dtcms.com/a/354049.html

相关文章:

  • RustFS架构解密:零GC设计如何实现12μs级存储延迟?
  • 【lucene】SpanNearQuery中的slop
  • 【lucene】SpanFirstQuery的end参数
  • 【Python】包管理,弄明白import,package,module
  • 复杂网络环境实测:主流云VR产品性能对比——平行云LarkXR突破网络限制 引领云VR技术新高度
  • 记住密码管理器
  • 在Eclipse中配置Tomcat
  • 终端美化:Windows11 下 安装 WSL 并使用好看的的 zsh 主题
  • 【图论】最短路算法
  • 802.11ax上行OFDMA接入机制:技术原理与实现细节
  • 流水线用到的Dockerfile和构建脚本build.sh
  • Python电影票房预测模型研究——贝叶斯岭回归Ridge、决策树、Adaboost、KNN分析猫眼豆瓣数据
  • MYSQL---存储过程
  • 【轨物方案】“无人值守”光伏电站智能运维解决方案,赋能绿色能源高效运营
  • 正则表达式 —— 贪婪与非贪婪
  • 汽车盲点检测系统的网络安全分析和设计
  • 【Linux学习】正则表达式学习记录
  • 【鸿蒙开发001】上下翻页-翻书效果实现【可复用】
  • 写一个天气查询Mcp Server
  • 2025年9月计算机二级C++语言程序设计——选择题打卡Day8
  • urdf文件可以使用的一些工具(urdf检查和可视化)
  • 【leetcode】100.相同的树
  • Elasticsearch核心配置详解与优化
  • SAP 怎么知道物料的自动过账流程
  • DFT、CHORD
  • “上门经济”的胜利:深度解析家政O2O如何用“用户体验”重塑传统行业
  • 【双指针- LeetCode】15.三数之和
  • CPLD和FPGA的区别
  • LeetCode 560. 和为 K 的子数组
  • Linux827 测试