1. 云的优点、缺点和相关误解
-
云的优点
- 云可以将基础设施外包出去而无需自己管理。
- 云一般按照即用即付的方式支付,无需在前期付出大量资本支出。
- 随着供应商发布新的服务和成本降低,云提供的价值越来越大。
- 云能够帮助快速准备好服务器和其他资源,用完后直接关闭,无需关注如何回收。
-
云的缺点
- 资源是共享并且不可预测的。
- 无法保证容量和可用性。
- 虚拟的共享资源导致排查故障更加困难,特别是无法访问底层物理硬件的情况下。
-
云的误解
- 云天生具备更好的拓展性。(云并不能使应用自动变得可拓展)
- 云可以自动改善甚至保证可用时间。(云自身也可能出现大规模故障)
- 云是唯一能提供 xxx 的东西。(云的优点继承自构建云所用到的技术,即使不使用云也可以获得)
- 云是一个银弹。(大谬)
2. MySQL 在云端的经济价值
- 云托管比较适合尚处于初级阶段的企业,或那些持续接触新概念并且本质上是以适用为主的企业。
- 云的另一种用途是运行不是很重要的基础设施,例如集成环境、开发测试平台、评估环境等。
- 云托管对于长期项目而言可能会更加昂贵。可以使用每美元的业务交易数来衡量是否划算。
3. 云中的 MySQL 的可拓展性和高可用性
- 云的自动拓展——根据需求的增加或减少来启动或关闭实例,对于 Web 服务器这样的无状态部分是可行的,但是对于数据库服务器这样有状态的则很难做到。
- 因为数据库通常是一个应用系统中主要或唯一有状态的并且持久化的组件,所以把应用服务迁移到云端则是很普遍的事情,因为除数据库之外的所有部分都可以从云中收益。
4. 四种基础资源
- MySQL 需要四种基础资源来完成工作:CPU、内存、IO 以及网络。在云平台中,这四种基础资源有三种是受限的:
- CPU 通常少且慢。
- IO 的吞吐量、延迟以及一致性受到限制。
- 网络在云中的性能通常比较好。
5. MySQL在云主机上的性能
- 通常,由于较差的 CPU、内存以及 IO 性能,在类似 AWS 这样的云托管平台上 MySQL 所表现出来的性能并不如在其他地方好。
- 有一些工作负载,在云中可能受到严重影响:
- 需要高并发的工作负载并不是非常适合云计算。对于那些要求非常快的响应时间的应用同样如此。
- 需要大量 IO 的工作负载在云中表现不是很好。
- MySQL 的 IO 需求会受系统内存大小的影响。当有足够内存时,可以从缓存中读取数据,减小读和写操作的 IO。也可以改变应用和服务器来减少 IO 需求,考虑周到的逻辑和物理数据库涉及对于减少 IO 请求大有帮助,应用程序优化和查询优化也一样。这是减少 IO 最有效的手段。
6. MySQL 数据库即服务 (DBaaS)
- 已经有公司将数据库本身作为云资源,称之为数据库即服务,这意味着可以在一个地方使用云中的数据库,而在其他地方运行真正的服务。
- 在 Amazon 的关系数据库(RDS)上进行的开发比其他任何一个 DBaaS 提供商都多。Amazon RDS 不仅仅是一个兼容 MySQL的服务:它事实上就是 MySQL。
- Amazon RDS 的一些优点:
- 可以将系统管理甚至是许多数据库管理的工作交给 Amazon。
- RDS 相对其他选择而言可能更偏移。
- RDS 中的限制可能是件好事。
- Amazon 中的一些缺点:
- 由于无法控制服务器,也无法弄清楚操作系统中究竟发生了什么。
- 无法获得完整的慢查询日志文件。
- 必须依赖 Amazon 的支持团队解决一些问题。