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

简介:

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

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

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

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

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

起步:解决特定问题

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

求生存:应用为王

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

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

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

成熟期:持续不断地优化

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

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

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

目录
相关文章
|
18天前
|
存储 运维 负载均衡
构建高可用性GraphRAG系统:分布式部署与容错机制
【10月更文挑战第28天】作为一名数据科学家和系统架构师,我在构建和维护大规模分布式系统方面有着丰富的经验。最近,我负责了一个基于GraphRAG(Graph Retrieval-Augmented Generation)模型的项目,该模型用于构建一个高可用性的问答系统。在这个过程中,我深刻体会到分布式部署和容错机制的重要性。本文将详细介绍如何在生产环境中构建一个高可用性的GraphRAG系统,包括分布式部署方案、负载均衡、故障检测与恢复机制等方面的内容。
69 4
构建高可用性GraphRAG系统:分布式部署与容错机制
|
1月前
|
消息中间件 中间件 数据库
NServiceBus:打造企业级服务总线的利器——深度解析这一面向消息中间件如何革新分布式应用开发与提升系统可靠性
【10月更文挑战第9天】NServiceBus 是一个面向消息的中间件,专为构建分布式应用程序设计,特别适用于企业级服务总线(ESB)。它通过消息队列实现服务间的解耦,提高系统的可扩展性和容错性。在 .NET 生态中,NServiceBus 提供了强大的功能,支持多种传输方式如 RabbitMQ 和 Azure Service Bus。通过异步消息传递模式,各组件可以独立运作,即使某部分出现故障也不会影响整体系统。 示例代码展示了如何使用 NServiceBus 发送和接收消息,简化了系统的设计和维护。
48 3
|
1月前
|
消息中间件 存储 监控
消息队列系统中的确认机制在分布式系统中如何实现
消息队列系统中的确认机制在分布式系统中如何实现
|
1月前
|
消息中间件 存储 监控
【10月更文挑战第2天】消息队列系统中的确认机制在分布式系统中如何实现
【10月更文挑战第2天】消息队列系统中的确认机制在分布式系统中如何实现
|
1月前
|
存储 开发框架 .NET
C#语言如何搭建分布式文件存储系统
C#语言如何搭建分布式文件存储系统
70 2
|
1月前
|
消息中间件 存储 监控
消息队列系统中的确认机制在分布式系统中如何实现?
消息队列系统中的确认机制在分布式系统中如何实现?
|
2月前
|
存储 块存储
ceph分布式存储系统常见术语篇
关于Ceph分布式存储系统的常见术语解释和概述。
111 1
ceph分布式存储系统常见术语篇
|
1月前
|
存储 分布式计算 监控
C# 创建一个分布式文件存储系统需要怎么设计??
C# 创建一个分布式文件存储系统需要怎么设计??
35 0
|
3月前
|
消息中间件 存储 监控
消息队列系统中的确认机制在分布式系统中如何实现?
消息队列系统中的确认机制在分布式系统中如何实现?
|
3月前
|
机器学习/深度学习 分布式计算 PyTorch
构建可扩展的深度学习系统:PyTorch 与分布式计算
【8月更文第29天】随着数据量和模型复杂度的增加,单个GPU或CPU已无法满足大规模深度学习模型的训练需求。分布式计算提供了一种解决方案,能够有效地利用多台机器上的多个GPU进行并行训练,显著加快训练速度。本文将探讨如何使用PyTorch框架实现深度学习模型的分布式训练,并通过一个具体的示例展示整个过程。
155 0

热门文章

最新文章