1. 云产品 API 概述
云产品 API 是用于与云产品进行通信的编程接口,允许开发者编写代码来控制云资源。通过使用 API,开发者可以实现自动化和标准化的操作,从而提高效率和降低错误率。此外,云产品 API 还可以提供对云服务的扩展和集成,使开发者能够将云服务与自有其他应用系统集成,构建更加丰富和复杂的应用程序。通过使用 API,可以提高开发者的生产力和创新能力,帮助他们更快地开发和部署云应用,从而更好地满足业务需求,实现真正的"DevOps"。
❖ API 标准与规范
云产品 API 的开发标准没有统一的规定,海外有如 Terraform 此类的标准出现,但国内尚未统一。在 API 的开发使用中虽然没有统一标准,但通常都会遵循一个规范和最佳实践。
- 符合 RESTful API 设计原则:RESTful 是一种常见的 API 设计风格,它强调 API 的可浏览性、可发现性和可交互性。RESTful API 使用 HTTP 协议和标准的 Web 浏览器来访问,具有统一的接口和规范,可以方便地与其他应用程序集成。
- 使用标准化的数据格式:云产品 API 应该使用标准化的数据格式,如 JSON、XML 等,以确保数据的一致性和可读性。JSON 是一种轻量级的数据格式,易于解析和生成,已经成为云产品 API 的首选数据格式。
- 遵循安全规范:云产品 API 应该遵循安全规范,如 OAuth、SSL 等,以确保数据的安全性和隐私性。OAuth 是一种授权协议,可以确保应用程序在访问云产品 API 时获得适当的权限。
- 支持多种编程语言:云产品 API 应该支持多种编程语言,如 Java、Python、PHP、Go 等,以方便开发者进行开发和集成。
- 提供清晰的文档和示例代码:云产品 API 应该提供清晰的文档和示例代码,以帮助开发者快速上手和使用。文档应该包含 API 的详细信息,如接口地址、请求方法、请求参数、响应格式等。
2. RDS API 大起底
作为云数据库产品的主力,RDS 是各家云厂商的主力产品,这其中又以 MySQL 居多。下文将针对主要云厂商的RDS MySQL 作为示例,对比下各家开放 API 的能力。受限于个人能力水平,难免有偏颇之处,仅供参考。特强调下:
- API 开发迭代很快,会有内容不准确的情况
- 部分信息未收集到,故空缺显示,不代表不支持
- 产品功能与 API 不能完全对应,API 会有滞后性
图片
❖ 实例管理
实例管理是最为常用功能,包括实例资源的创建销毁、规格变更、启动停止、参数日志等。这其中重要关注点在于,一方面云环境提供了很灵活的资源供给的方式,这一点也是云很大的优势;另一方面传统数据库的管理工作在云上也是需要的。此外,有些云端比较特性的能力,如实例隔离、实例快照等,这些对于用户来说也很有意义。
❖ 备份恢复
备份恢复是数据库保障数据安全的最关键能力,一般都会提供实例备份、恢复及备份集管理能力。此外,针对用户的个性化需求,也有提供实例克隆(如构建测试环境)、部分恢复(如单表恢复)及跨地域恢复(容灾需求)等。有些产品是可以利用云资源的特有能力(如存储快照),实现原生数据库无法提供的一些功能。
❖ 高可用
高可用方面,除 MySQL 原生提供的高可用方案外,有些产品还提供增强的选择。在数据复制上,还可选择同步与异步,并可进行复制控制。当出现异常时,可实现节点切换,实现高可用。有些产品还提供了全球化的高可用架构的部署能力。
❖ 监控告警
监控告警,是 DBA 日常运维工作很关注的点。一方面可通过接口配置产品的监控策略,一方面也可以获得监控数据集成进自己的监控或做定性分析等用途。
❖ 账号管理
数据库账号管理,通常会包括创建删除账号、授权、重置密码等。部分产品可实现账号锁定,甚至是对账号进行单独的资源控制(如连接数等)。
❖ 架构管理
MySQL 支持多种架构,云产品也提供了很丰富的支持。如只读节点,可提供给读写分离或变更安全(延迟同步)能力。再如主从集群的节点控制及是否暴露出EndPoint给最终用户使用。
❖ 代理管理
还有些能力,不再局限在MySQL层面实现,如连接上的一些控制。很多云厂商提供了独立产品的支持(如代理服务)。可创建代理服务,进行如读写分离、连接池、IP管理的一些控制。
❖ 安全管理
安全方面,这里特指数据库的连接、存储、管理、访问的安全。一般分别通过SSL加密、存储加密、白名单、SQL审计等能力来支持。
❖ 开发优化
开发及优化,是指针对开发过程中的一些辅助功能,如常见的慢查询功能,可用于SQL优化;回收站、闪回功能,可用户运维安全等。这里一般不会提供高阶的优化服务,通常都是用独立的优化产品来支持。
❖ 数据迁移
数据库能否用起来,还取决于是否能很容易将数据迁移过来。除了常规的数据库迁移工具实现外,一般也有本身实现数据迁移导入的能力。如将自建的数据库实例迁移到RDS实例上,将离线的数据备份导入其中等。
❖ 运维管理
这里的运维管理,主要是指一些如事件管理、通知管理等,此外云端还有一个很重要的就是运维窗口的管理。很多带有一定危险性的操作,后台是会在运维窗口内进行。
❖ 计费管理
计费,是云产品的一个特色功能。传统的私有化交付产品,通常不涉及很复杂的计费,但云产品可提供的更为灵活的计费方式,也是很多用户选择云产品的原因之一。计费重点关注的就是已发送费用及续费的管理。
❖ 网络管理
网络管理,提供为RDS产品服务的网络能力,包括公网IP、地址端口变更等。
❖ 其他功能
其他功能中,很重要的一个是标签管理。这是因为当用户可管理使用的云资源很多的情况下,如何快速定位到这个资源很重要。给资源打上标签,就是一个不错的选择。