新技能Get:用雅虎云服务基准衡量云应用性能

日期: 2014-02-13 作者:Dan Sullivan翻译:滕晓龙 来源:TechTarget中国 英文

对云计算供应商成本进行成本比较是很容易的;但是对应用程序进行性能比较则不是那么简单的了。在同一个云计算或跨不同云计算的环境下,对运行其中的不同类型数据库应用程序进行性能比较将是特别具有挑战性的一项工作。雅虎云计算服务基准(YCSB)是专为帮助用户了解不同云计算数据库性能以及在实际负载下存储数据性能表现的一个测试框架。这个测试框架的源代码可从GitHub下载获得。

雅虎云计算服务基准工具包括了两个重要的组成部分:一个工作负载生成器和一组生成器生成的工作负载,以及针对大量NoSQL数据库的接口,其中包括Cassandra、DynamoDB、Hbase、MongoDB、Redis以及甲骨文公司的No……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

对云计算供应商成本进行成本比较是很容易的;但是对应用程序进行性能比较则不是那么简单的了。在同一个云计算或跨不同云计算的环境下,对运行其中的不同类型数据库应用程序进行性能比较将是特别具有挑战性的一项工作。雅虎云计算服务基准(YCSB)是专为帮助用户了解不同云计算数据库性能以及在实际负载下存储数据性能表现的一个测试框架。这个测试框架的源代码可从GitHub下载获得。

雅虎云计算服务基准工具包括了两个重要的组成部分:一个工作负载生成器和一组生成器生成的工作负载,以及针对大量NoSQL数据库的接口,其中包括Cassandra、DynamoDB、Hbase、MongoDB、Redis以及甲骨文公司的NoSQL数据库。当然,它还配有一个用于关系型数据库的JDBC接口。

当面临进行应用程序架构决策时,诸如YCSB这样的数据库测试基准是特别有用的。例如,一个不再满足性能需求的现有数据库应用程序可能会迫使你考虑扩容硬件资源或者变更基础数据库。如果额外的硬件能够实现近乎线性的性能提升(例如,双倍的服务器可实现双倍的性能),那么硬件扩容将是一个合适的选择。但是,硬件扩容并不总是能够帮助我们实现性能的线性提升,因为不让管理员充分发挥额外硬件资源优势的应用程序中还存在着其他的性能提升瓶颈。

如果你更换了你的数据库,那么你就会有很多的选择项,特别是如果你选择使用NoSQL数据库来取代之前的关系型数据库。虽然一开始的性能提升可能并不明显,但是一些特定类型的NoSQL数据库将说明问题。例如,社交网络分析就正好适合使用图形数据库。如果用户不需要支持复杂查询应用,那么诸如Cassandra和Amazon DynamoDB这样的关键值数据库则可能比MongoDB这样的文档存储更为适合。测试基准可以通过测试数据来帮助你决定哪一个数据库最适合你的需求。

雅虎云计算服务基准的工作负载管理

运行YCSB的第一步就是确定你所希望测试的数据库类型以及希望在数据库上运行的工作负载。一旦你已经创建了你的数据库,那么你必须创建一个与你的目标工作负载相关的计划。计划的实施细节将随数据库类型的不同而有所变化。例如,可能在MySQL中创建一个数据表,而在Cassandra中创建一个列族和关键值空间。

测试基准是比较数据库性能的一大利器,但是工作负载也必须配合你的实际生产负载,当选择数据库时,除测试结果外还需要考虑其他的设计考量。你可以运行由YCSB提供的核心工作负载或者创建你自己的。核心工作负载包括一组六个具有不同读/写操作特性的工作负载。一些工作负载是以更新升级为主的,而另一些则是测试读操作性能的。如果你创建你自己的工作负载,那么你就必须开发一个Java应用程序,以便于扩展现有YCSB类生成数据并执行读/写操作。

工作负载是使用参数开关进行设置的,因此你是可以在不同的线程数和单位时间运行数下测试工作负载的。它分为了两个阶段:创建数据的导入阶段,和执行特定工作负载下操作然后输出一组性能统计数据的执行阶段。除了运行时间和单位时间的运行次数外,还有很多的延迟测量数据,其中包括平均值、最大值、最小值、第95个百分点的延迟数和99个百分点的延迟数。

如果你有一个现成的应用程序,它可能会从性能监控工具中收集数据以确定你的应用程序中读、写以及更新操作的运行数据。如果你使用了一个关系型数据库,那么则需特别关注运行次数最频繁和运行时间最长的查询操作。

有很好的候选对象可供在自定义工作负载中使用。

如果你开发了一个新应用程序,那么你应当在正式把应用程序投入生产之前运行一系列的测试基准以便于对大量的不同的可能生产负载进行评估。这可以为不同条件下不同数据库的性能表现评估提供有价值的信息。如果你希望了解大部分时间的中等工作负载以及设计需求中偶尔发生的高峰工作负载的运行情况,可针对两种情况进行测试。理想情况下,你所选择的数据库将在所有预期的情况下性能表现良好。

你还应当根据使用频率来选择数据库。如果一个数据库在大多数预期的工作负载下能够表现良好,但在一个设计范围外或偶尔发生的工作负载下表现糟糕,那么你可能会选择这个数据库。

作者

Dan Sullivan
Dan Sullivan

Dan Sullivan是一名作家、系统架构师和顾问,拥有超过20年关于先进的分析、系统架构、数据库设计、企业安全、商业智能的IT从业经验。他的从业范围广泛,包括金融服务业、制造业、医药、软件开发、政府、零售、天然气和石油生产、发电、生命科学和教育。

相关推荐

  • 告别雾霾 云计算技巧小清算

    二月份即将技术,新的一年拉开了全新的帷幕,IT界的厂商们已经一身戎马开始出征,而终端用户则也开始着手自身的新项目建设。在这期月末总结中,我们将看看当下最值得关注的几大技巧和内容。

  • 云应用性能管理和测试教程

    云里来雾里去的云计算讲了好多年,其实对于大众来讲对这个概念仍然是有些摸不着头绪。那么对于已经应用了云服务的企业而言,在实践中有哪些技巧可以参考或者有哪些经验可以分享呢?在这期技术手册中,我们将一起来关注云应用的可用性,如何进行云应用的监控,云服务中间件如何?同时我们将侧重于云应用性能管理以及云应用测试的内容。

  • 如何评估云计算性能?

    云计算性能怎么样?这要看你问的是谁。有三种云计算模式;你使用哪一种模式,决定了会得到什么样的性能。