在上周刚结束的网易数字+大会上

网易数帆宣布:

开源一款名为Curve的高性能分布式存储系统,

性能可达Ceph的1.84倍!

网易副总裁、网易杭州研究院执行院长兼网易数帆总经理汪源:

基础软件的能力对于数字化转型非常关键,当前存储领域需要一款性能更高、可用性/可靠性更好、自治能力更强的分布式存储系统,Curve的开源不仅代表网易数帆在基础软件市场的坚持,也为软件定义基础设施生态的繁荣再添一把火。

采用先进架构设计 单卷性能1.84倍于Ceph

Curve的定位,是提供一个高性能、低延迟的存储底座,基于这个存储底座,企业可以打造适用于不同应用场景的存储系统,如块存储、对象存储、云原生数据库等。目前,网易数帆已经实现了高性能块存储系统。

汪源介绍,Curve主要具有三大设计特点:高性能、高可用和自治。

高性能源自先进架构。Curve参考了业界的存储系统,采用先进、高效的开源技术,设计了一个新架构实现高性能低延迟的核心能力,采用高性能的RPC框架来保障网络数据流的高性能和低延迟,基于Raft协议实现多副本一致性下的低延迟,并针对Raft协议的快照实现进一步优化。磁盘IO方面,Curve通过更细粒度的地址空间的hash减少IO碰撞,增加IO并发度,并采用chunkfilepool减小IO放大倍数,从而最大限度地发挥硬件的性能。

汪源公布了Curve和CephL版本的测试数据对比,在单卷的场景下,核心的4K随机读/写的IOPS性能,Curve分别是Ceph的1.84倍和1.58倍,同时延迟相比Ceph分别降低48.39%和37.50%。

他在采访中透露,Curve还有一些创新的性能优化工作尚未完成,如细粒度哈希、io_uring落盘方案,预计完成优化之后下个版本还会有30%的性能提升。换句话说,Curve单卷性能将会达到Ceph的2倍以上。性能差异来自架构设计的不同选择,分布式一致性Curve采用了Quorum机制,而Ceph实现强一致性,前者延迟优于后者,而且可以在不太影响IO性能的情况下能从故障中快速恢复。

Curve与Ceph性能测试对比

高可用方面,Curve被设计为核心组件都能容忍部分实例失败而不影响整个集群的可用性。汪源介绍,无论是单台存储故障,还是系统扩容,Curve的客户端IO都不会受到丝毫的影响,插拔硬盘、服务进程中断这些常见异常,IO抖动也很小。当然,故障恢复过程对上层IO也不会造成明显影响。

此外,在自治方面,Curve实现了一键部署、一键升级,运维只要很少的人工干预,并基于Promethues和Grafana等开源技术打造了全面的度量标准和告警体系。

回馈开源 强化软件定义基础设施短板

基于Curve的高性能块存储系统已经作为应用在网易的一些核心业务中,支持快照克隆和恢复, 支持QEMU虚拟机和物理机NBD设备两种挂载方式。

系统上线至今400多天,从未出现数据不一致和丢数据的情况,没有发生过重大故障,数据可靠性达到100%,服务可用率达到4个9以上。线上环境的异常演练,也证实了异常对业务的影响如上文所述。但对于网易数帆来说,这个成绩只是Curve征途的开始。

鉴于目前开源领域还没有足够高性能和低延迟的分布式存储系统,汪源宣布,网易数帆把Curve开源出来,回馈社区,让业界一起来使用它,也希望大家一起参与把Curve打造得越来越好。

Curve项目的最新稳定版本已经上传到Github,并提供了部署文档。作为生长于中国本土的项目,Curve首先提供中文文档,希望降低中文用户尝鲜的门槛。对Curve感兴趣的朋友,可以通过http://opencurve.github.io获取更多信息啦。

性能1.84倍于Ceph!网易数帆Curve分布式存储开源的更多相关文章

  1. 网易数帆 Envoy Gateway 实践之旅:坚守 6 年,峥嵘渐显

    服务网格成熟度不断提升,云原生环境下流量处理愈发重要, Envoy Gateway 项目于近日宣布开源,"旨在大幅降低将 Envoy 作为 API 网关的使用门槛",引发了业界关注 ...

  2. 大咖说|网易数帆论道 PolarDB 数据库开源 & 存储生态

    开源技术如何商业化?将遇到什么问题?有哪些可行的解决办法?本期大咖说,阿里云数据库开源战役负责人曲山将携手网易副总裁汪源与你分享关于开源商业化的思考. 嘉宾简介 网易副总裁.杭州研究院执行院长.网易数 ...

  3. 将Web应用性能提高十倍的10条建议

    导读 提高 web 应用的性能从来没有比现在更重要过.网络经济的比重一直在增长:全球经济超过 5% 的价值是在因特网上产生的(数据参见下面的资料).这个时刻在线的超连接世界意味着用户对其的期望值也处于 ...

  4. 将 Web 应用性能提高十倍的10条建议

    提高 web 应用的性能从来没有比现在更重要过.网络经济的比重一直在增长:全球经济超过 5% 的价值是在因特网上产生的(数据参见下面的资料).这个时刻在线的超连接世界意味着用户对其的期望值也处于历史上 ...

  5. [转载]PayPal为什么从Java迁移到Node.js,性能提高一倍,文件代码减少44%

    http://ourjs.com/detail/52a914f0127c763203000008 大家都知道PayPal是另一家迁移到Node.js平台的大型公司,Jeff Harrell的这篇博文 ...

  6. PayPal为什么从Java迁移到Node.js 性能提高一倍 文件代码减少44%

    大家都知道PayPal是另一家迁移到Node.js平台的大型公司,Jeff Harrell的这篇博文 Node.js at PayPal  解释了为什么从Java迁移出来的原因: 开发效率提高一倍(2 ...

  7. 谷歌出品EfficientNet:比现有卷积网络小84倍,比GPipe快6.1倍

    [导读]谷歌AI研究部门华人科学家再发论文<EfficientNet:重新思考CNN模型缩放>,模型缩放的传统做法是任意增加CNN的深度和宽度,或使用更大的输入图像分辨率进行训练,而使用E ...

  8. Web 应用性能提升 10 倍的 10 个建议

    转载自http://blog.jobbole.com/94962/ 提升 Web 应用的性能变得越来越重要.线上经济活动的份额持续增长,当前发达世界中 5 % 的经济发生在互联网上(查看下面资源的统计 ...

  9. 如何利用缓存机制实现JAVA类反射性能提升30倍

    一次性能提高30倍的JAVA类反射性能优化实践 文章来源:宜信技术学院 & 宜信支付结算团队技术分享第4期-支付结算部支付研发团队高级工程师陶红<JAVA类反射技术&优化> ...

随机推荐

  1. Idea激活JRebel

    选择license激活 UUID 生成地址: http://www.uuid.online 激活地址 http://jrebel-license.jiweichengzhu.com/ UUID

  2. JDK8--04:内置接口

    在JDK8--3中已经说过,使用lambda方法需要新增函数式接口,为了使用方便,JDK8已经提供了许多内置接口,总的归纳来说,有四大函数式接口. /** * * java8 四大内置接口 * * 1 ...

  3. dart快速入门教程 (7.4)

    7.12.多态 多态字面上理解就是多种状态,通俗的说,多态表现为父类定义一个方法不去实现,子类继承这个方法后实现父类的方法,这个方法有多种表现 // import 'person.dart'; voi ...

  4. cp5200的一般步骤

    cp5200的一般步骤: 1.创建数据对象 hObj = CP5200_CommData_Create(nCommType, id, GetIDCode()); 2.生成所需要的数据,如 :生成设置亮 ...

  5. python数据结构-最全的六种排序

    1.冒泡排序: 比较相邻的元素,如果第一个比第二个大,那就交换位置 让大的元素跟下一个相邻的元素作比较,如果大于交换位置 对所有元素重复以上步骤(除了最后一个),直到没有任何一个需要作对比 2.选择排 ...

  6. 理解并使用CSS3中的单位rem vh vw vmin vmax

    rem vh vw vmin vmax做为CSS3中的新单位,其实都出来挺久的了,这篇文章将总结并理解下它们. rem 如果你给body设置了font-size字体大小,那么body的任何子元素的1e ...

  7. 洛谷 P4042 [AHOI2014/JSOI2014]骑士游戏

    题意 有\(n\)个怪物,可以消耗\(k\)的代价消灭一个怪物或者消耗\(s\)的代价将它变成另外一个或多个新的怪物,求消灭怪物$的最小代价 思路 \(DP\)+最短路 这几天做的第一道自己能\(yy ...

  8. tyvj 1198 矩阵连乘——区间dp

    tyvj 1198 矩阵连乘 题目描述 一个n*m矩阵由n行m列共n*m个数排列而成.两个矩阵A和B可以相乘当且仅当A的列数等于B的行数.一个N*M的矩阵乘以一个M*P的矩阵等于一个N*P的矩阵,运算 ...

  9. Emergency Evacuation 题解

    The Japanese government plans to increase the number of inbound tourists to forty million in the yea ...

  10. sql语句-如何在SQL以一个表中的数据为条件据查询另一个表中的数据

    select *from 表2where 姓名 in (select 姓名from 表1where 条件) 这个就是用一个表的查询结果当作条件去查询另一个表的数据