分布式存储系统的最佳实践:系统发展路径

简介:

分布式存储系统从整体架构的角度看大同小异,实现起来却困难重重。自主研发的 分布式存储系统往往需要两到三年才能逐步成熟起来,其中的难点在于如何把系统做稳定。系统开发过程中涉及架构设计、关键算法实现、质量控制、团队成员成长、线上运维、应用合作等,任何一个环节出现问题都可能导致整个项目失败。
本文章介绍通用分布式存储系统发展路径。

通用分布式存储系统不是设计出来的,而是随着应用需求不断发展起来的。它来源于具体业务,又具有一定的通用性,能够解决一大类问题。通用分布式存储平台的优势 在于规模效应,等到平台的规模超过某个平衡点时,成本优势将会显现。

通用分布式存储平台主要有两种成长模式:

  • 公司高层制定战略大力发展通用平台。这种模式前期发展会比较顺利,但是往往会因为离业务太远而在中期暴露大量平台本身的问题。
  • 来源于具体业务并将业务需求通用化。这种模式会面临更大的技术挑战,但是团队成员反而能够在这个过程中得到更多的锻炼。

第2种发展模式相对更加曲折,大致需要经历如下几个阶段。

起步:解决特定问题

在起步阶段,需要解决业务提出的特殊需求,这些特殊需求是以前的系统无法解决或者解决得不太好的。例如,OceanBase 系统起步时需要解决淘宝收藏夹业务提出的两张大表左连接问题。起步期的挑战主要在于技术挑战,团队成员能够在这个阶段获得较大的技术成长。

求生存:应用为王

为了证明平台的通用性,需要接入大量的业务。如果没有公司战略支持,这个阶段将面临“鸡生蛋还是蛋生鸡”的问题,没有业务就无法完善平台,平台不完善就无法吸引更多业务接入。在这个阶段,优先级最高的事情是接入合适的应用并把应用服务好,形成良好的口碑。求生存阶段还将面临一个来自团队内部的挑战,团队成员缺乏起步期的新鲜感,部分成员工作热情会有所降低。这个阶段需要明确团队的愿景,耐住寂寞,重视每个细节。

平台化:提升易用性、可运维性

当应用数量积累到一定程度后,就需要花大力气提升易用性和可运维性了。易用性的关键在于采用标准的使用接口,兼容应用以前的使用方式,从而降低学习成本和应用改造成本,提升可运维性要求将系统内部更多状态暴露给运维人员并开发方便的部署、监控、运维工具。

成熟期:持续不断地优化

分布式存储系统步入成熟期后,应用推广将会比较顺利。开发团队在这个阶段做的多情主要是持续不断地优化系统,并根据应用的需求补充一些功能支持。随着平合规模不断增长以及优化工作不断深入,平台的规模效应将显现,平台取得成功。

通用存储平台发展过程中困难重重,要求团队成员有强烈的信念和长远的理想,能够耐得住寂寞。另外,系统发展过程中需要保持对技术细节的关注,每个实现细节问题都可能导致用户抱怨,甚至引起线上故障。

从公司的角度看,是否发展通用分布式存储平台取决于公司的规模。对于小型互联网公司(员工数小于100人),那么,应该更多地选择广泛使用的存储技术,例如MySQL开源关系数据库;对于中型互联网公司(员工数在100到1000人之间)。那么,可以组合使用各种SQL或NoSQL存储技术,改进开源产品或者基于开源产品做二次开发,例如基于MySQL数据库做二次开发,实现7.1节中的MySQL Sharding架构;对于大型互联网公司(员工数超过1000人),那么,往往需要自主研发核心存储技术,包括分布式架构、存储引掌等。通用分布式存储系统研发周期很长,系统架构需要经过多次选代,团队成员也需要通过研发过程来获得成长,因此,这种事情要么不做,要做就务必坚持到底。

目录
相关文章
|
4天前
|
分布式计算 Ubuntu 调度
如何本地搭建开源分布式任务调度系统DolphinScheduler并远程访问
如何本地搭建开源分布式任务调度系统DolphinScheduler并远程访问
|
1月前
|
存储 分布式计算 大数据
现代化数据库技术——面向大数据的分布式存储系统
传统的关系型数据库在面对大规模数据处理时遇到了诸多挑战,而面向大数据的分布式存储系统应运而生。本文将深入探讨现代化数据库技术中的分布式存储系统,包括其优势、工作原理以及在大数据领域的应用。
|
1月前
|
消息中间件 存储 NoSQL
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统
|
1月前
|
存储 Web App开发 运维
原来10张图就可以搞懂分布式链路追踪系统原理
原来10张图就可以搞懂分布式链路追踪系统原理
|
1月前
|
算法 Java 数据中心
分布式ID生成系统之雪花算法详解
在当今的云计算和微服务架构盛行的时代,分布式系统已成为软件开发的重要组成部分。随着系统规模的扩大和业务的复杂化,对数据一致性和唯一性的要求也越来越高,尤其是在全局唯一标识符(ID)的生成上。因此,分布式ID生成系统应运而生,成为保证数据唯一性和提高系统可扩展性的关键技术之一。雪花算法(Snowflake)是Twitter开源的一种算法,用于生成64位的全局唯一ID,非常适用于分布式系统中生成唯一标识符。下面我们将深入探讨雪花算法的原理、结构和实现方式。
98 2
 分布式ID生成系统之雪花算法详解
|
3月前
|
存储 供应链 安全
新一代数据库技术——基于区块链的分布式存储系统
传统数据库系统通常采用集中式存储结构,容易受到单点故障和数据篡改的影响。本文将介绍基于区块链技术的分布式存储系统,探讨其在数据库领域的应用和优势,以及面临的挑战和未来发展趋势。
173 1
|
3月前
|
消息中间件 存储 NoSQL
面试题解析:如何解决分布式秒杀系统中的库存超卖问题?
面试题解析:如何解决分布式秒杀系统中的库存超卖问题?
111 0
|
3月前
|
存储 监控 网络协议
百度基于金融场景构建高实时、高可用的分布式数据传输系统的技术实践
本文将通过一个百度搜索旗下的金融场景案例来分享构建高实时、高可用的分布式数据传输系统的技术实践。
50 0
|
3月前
|
中间件 测试技术 调度
设计一个简易版本的分布式任务调度系统
设计一个简易版本的分布式任务调度系统
83 0
|
4月前
|
消息中间件 监控 负载均衡
Kafka 最佳实践:构建可靠、高性能的分布式消息系统
Apache Kafka 是一个强大的分布式消息系统,被广泛应用于实时数据流处理和事件驱动架构。为了充分发挥 Kafka 的优势,需要遵循一些最佳实践,确保系统在高负载下稳定运行,数据可靠传递。本文将深入探讨 Kafka 的一些最佳实践,并提供丰富的示例代码,帮助大家更好地应用这一强大的消息系统。

热门文章

最新文章