Bigstep’s Full Metal Cloud 公司的产品经理 Alex Bordei 分享了他们在 NoSQL 使用上关于可伸缩性的经验。Alex 给出了如下五条建议:
- 永远不要假设规模是线性增长的。虽然硬件是可伸缩的,但软件并不能百分百地能利用硬件资源,却需要为这些用不到的硬件资源买单。因而,Alex 建议要寻找到硬件成本与硬件能力的切合点。下图展示了水平伸缩与垂直伸缩方面的性价比趋势:
- 相信测试而非文档。Alex 告诫说,不要信任供应商的文档,虽然研读这些文档非常有用,但最好还是基于自己系统的情况对 NoSQL 进行测试。由于虚拟化和云技术使得搭建平台变得非常容易,因此不要找借口说没条件进行测试。
- 体察细节:内存与 CPU 的度量数据。尤其对于内存数据库而言,内存的性能直接影响着数据库的性能。CPU 的指标同样需要引起重视。只有准确地获得这些硬件资源的使用效率,才能将钱花在刀刃上。
- 不要忽略网络延迟。只要数据库是分布式的,必然需要占据网络带宽。无论是节点之间的通信,还是对数据建立副本,网络延迟以及吞吐量都直接制约着整个系统的性能。如果网速太慢,即使内存与 CPU 再好,对系统性能的改善也是杯水车薪。
- 不要对 NoSQL 数据库做虚拟化。虚拟化是个好东西,但也得量力而为。由于它会影响到内存访问速度,而这一点对于 NoSQL 数据库而言却又至为关键。根据 Alex 的观察,对比虚拟环境,运行在纯硬件环境上的管理程序性能要提示 400% 左右。
感谢郭蕾对本文的审校。