分布式存储系统的最佳实践:系统发展路径
分布式存储系统从整体架构的角度看大同小异,实现起来却困难重重。自主研发的 分布式存储系统往往需要两到三年才能逐步成熟起来,其中的难点在于如何把系统做稳定。系统开发过程中涉及架构设计、关键算法实现、质量控制、团队成员成长、线上运维、应用合作等,任何一个环节出现问题都可能导致整个项目失败。
本文章介绍通用分布式存储系统发展路径。
通用分布式存储系统不是设计出来的,而是随着应用需求不断发展起来的。它来源于具体业务,又具有一定的通用性,能够解决一大类问题。通用分布式存储平台的优势 在于规模效应,等到平台的规模超过某个平衡点时,成本优势将会显现。
通用分布式存储平台主要有两种成长模式:
- 公司高层制定战略大力发展通用平台。这种模式前期发展会比较顺利,但是往往会因为离业务太远而在中期暴露大量平台本身的问题。
- 来源于具体业务并将业务需求通用化。这种模式会面临更大的技术挑战,但是团队成员反而能够在这个过程中得到更多的锻炼。
第2种发展模式相对更加曲折,大致需要经历如下几个阶段。
起步:解决特定问题
在起步阶段,需要解决业务提出的特殊需求,这些特殊需求是以前的系统无法解决或者解决得不太好的。例如,OceanBase 系统起步时需要解决淘宝收藏夹业务提出的两张大表左连接问题。起步期的挑战主要在于技术挑战,团队成员能够在这个阶段获得较大的技术成长。
求生存:应用为王
为了证明平台的通用性,需要接入大量的业务。如果没有公司战略支持,这个阶段将面临“鸡生蛋还是蛋生鸡”的问题,没有业务就无法完善平台,平台不完善就无法吸引更多业务接入。在这个阶段,优先级最高的事情是接入合适的应用并把应用服务好,形成良好的口碑。求生存阶段还将面临一个来自团队内部的挑战,团队成员缺乏起步期的新鲜感,部分成员工作热情会有所降低。这个阶段需要明确团队的愿景,耐住寂寞,重视每个细节。
平台化:提升易用性、可运维性
当应用数量积累到一定程度后,就需要花大力气提升易用性和可运维性了。易用性的关键在于采用标准的使用接口,兼容应用以前的使用方式,从而降低学习成本和应用改造成本,提升可运维性要求将系统内部更多状态暴露给运维人员并开发方便的部署、监控、运维工具。
成熟期:持续不断地优化
分布式存储系统步入成熟期后,应用推广将会比较顺利。开发团队在这个阶段做的多情主要是持续不断地优化系统,并根据应用的需求补充一些功能支持。随着平合规模不断增长以及优化工作不断深入,平台的规模效应将显现,平台取得成功。
通用存储平台发展过程中困难重重,要求团队成员有强烈的信念和长远的理想,能够耐得住寂寞。另外,系统发展过程中需要保持对技术细节的关注,每个实现细节问题都可能导致用户抱怨,甚至引起线上故障。
从公司的角度看,是否发展通用分布式存储平台取决于公司的规模。对于小型互联网公司(员工数小于100人),那么,应该更多地选择广泛使用的存储技术,例如MySQL开源关系数据库;对于中型互联网公司(员工数在100到1000人之间)。那么,可以组合使用各种SQL或NoSQL存储技术,改进开源产品或者基于开源产品做二次开发,例如基于MySQL数据库做二次开发,实现7.1节中的MySQL Sharding架构;对于大型互联网公司(员工数超过1000人),那么,往往需要自主研发核心存储技术,包括分布式架构、存储引掌等。通用分布式存储系统研发周期很长,系统架构需要经过多次选代,团队成员也需要通过研发过程来获得成长,因此,这种事情要么不做,要做就务必坚持到底。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【漫画】以后在有面试官问你AVL树,你就把这篇文章扔给他。
背景 西天取经的路上,一样上演着编程的乐趣..... 1、若它的左子树不为空,则左子树上所有的节点值都小于它的根节点值。 2、若它的右子树不为空,则右子树上所有的节点值均大于它的根节点值。 3、它的左右子树也分别可以充当为二叉查找树。 例如: 例如,我现在想要查找数值为14的节点。由于二叉查找树的特性,我们可以很快着找到它,其过程如下: 1、和根节点9比较 2、由于 14 > 9,所以14只可能存在于9的右子树中,因此查看右孩子13 3、由于 14 > 13,所以继续查看13的右孩子15 4、由于 14 < 15,所以14只可能存在于15的左孩子中,因此查找15的左孩子14 5、这时候发现14正是自己查找的值,于是查找结束。 这种查找二叉树的查找正是二分查找的思想,可以很快着找到目的节点,查找所需的最大次数等同于二叉查找树的高度。 在插入的时候也是一样,通过一层一层的比较,最后找到适合自己的位置。 初始的二叉查找树只有三个节点: 然后我们按照顺序陆续插入节点 4,3,2,1,0。插入之后的结构如下: 这是一种比查找二叉树还特别的树哦,这种树就可以帮助我们解决二叉查...
- 下一篇
这些深度学习术语,你了解多少?(上)
对于一个新手来说,深度学习术语可能非常难以理解。本表试图解释深度学习常用术语并链接到原始参考,以帮助读者深入了解特定主题。 深度学习与“一般”的机器学习术语之间的界限非常模糊。例如,我这里不包括“交叉验证”,因为它是一种通用技术,用于整个机器学习。但是,我加入了softmax或word2vec等术语,因为它们通常与深度学习相关,即使它们不是深度学习技术。 激活函数 为了让神经网络学习复杂的决策边界,我们将非线性激活函数应用于其某些层。常用的函数包括sigmoid、tanh、ReLU(整流线性单元)及它们的变体。 Adadelta Adadelta是一种基于梯度下降的学习算法,可以随时间调整每个参数的学习速率。它被认为是对Adagrad的改进,因为Adagrad对超参数很敏感,并且可能过于快速的降低学习速度。Adadelta类似于rmspro
相关文章
文章评论
共有0条评论来说两句吧...