一个简化的分布式系统架构图

本文探讨了分布式系统的关键组成部分,包括分布式存储、计算及管理系统,并详细列举了业界常见的技术实现,如Nginx、LVS、docker、kubernetes、zookeeper、grpc、kafka、spark等,旨在为读者提供一个全面的分布式系统概览。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

链接

写这篇文章,我曾在网络上搜索过“如何学习分布式系统”,但实话说,没有很认同的答案。也许,这确实是一个难以回答的问题。于是,我想自己写出一个答案,但写完这篇文章,感觉自己的回答也很混乱,也没有说清楚,不过对我自己还是有一些指导意义的,比如,理清了分布式系统中会遇到的各种技术、理论、协议,以及通过一个例子展示他们是如何协作的,接下来就是各个击破了。

  网上的诸多回答,上来就是看各种论文,google三大件、paxos什么的,个人觉得不是很实用。更好的过程,是先有一个整体的把握,然后自己思考会有什么问题,带着问题去寻求答案,在寻求答案的时候再去看论文。

 

https://www.zhihu.com/question/23645117

 

总的来说,分布式系统要做的任务就是把多台机器有机的组合、连接起来,让其协同完成一件任务,可以是计算任务,也可以是存储任务。如果一定要给近些年的分布式系统研究做一个分类的话,我个人认为大概可以包括三大部分:

1. 分布式存储系统
2. 分布式计算系统
3. 分布式管理系统



作者:马超
链接:https://www.zhihu.com/question/23645117/answer/124708083
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

下面用一个不大精确的架构图,尽量还原分布式系统的组成部分(不过只能体现出技术,不好体现出理论)

  

 

概念与实现

  那么对于上面的各种技术与理论,业界有哪些实现呢,下面进行简单罗列。

  当然,下面的这些实现,小部分我用过,知其所以然;大部分听说过,知其然;还有一部分之前闻所未闻,分类也不一定正确,只是从其他文章抄过来的。罗列在这里,以便日后或深或浅的学习。

 

  • 负载均衡:

    Nginx:高性能、高并发的web服务器;功能包括负载均衡、反向代理、静态内容缓存、访问控制;工作在应用层

    LVS: Linux virtual server,基于集群技术和Linux操作系统实现一个高性能、高可用的服务器;工作在网络层

  • webserver:

    Java:Tomcat,Apache,Jboss

    Python:gunicorn、uwsgi、twisted、webpy、tornado

  • service:  

    SOA、微服务、spring boot,django

  • 容器:

    docker,kubernetes

  • cache:

    memcache、redis等

  • 协调中心:

    zookeeper、etcd等

    zookeeper使用了Paxos协议Paxos是强一致性,高可用的去中心化分布式。zookeeper的使用场景非常广泛,之后细讲。

  • rpc框架:

    grpc、dubbo、brpc

    dubbo是阿里开源的Java语言开发的高性能RPC框架,在阿里系的诸多架构中,都使用了dubbo + spring boot

  • 消息队列:

    kafka、rabbitMQ、rocketMQ、QSP

    消息队列的应用场景:异步处理、应用解耦、流量削锋和消息通讯

  • 实时数据平台:

    storm、akka

  • 离线数据平台:

    hadoop、spark

    PS: apark、akka、kafka都是scala语言写的,看到这个语言还是很牛逼的

  • dbproxy:

    cobar也是阿里开源的,在阿里系中使用也非常广泛,是关系型数据库的sharding + replica 代理

  • db:

    mysql、oracle、MongoDB、HBase

  • 搜索:

    elasticsearch、solr

  • 日志:

    rsyslog、elk、flume

 

 

如果你觉得我的文章帮助到了你并节省了开发时间,请扫描下方二维码随意打赏❥(^_^)

您的支持是我最大的鼓励

 

 

### 分布式存储系统架构图概述 分布式存储系统的架构通常由多个层次组成,这些层次共同协作以实现高效的数据管理、存储和访问。根据已有资料[^3],典型的分布式存储系统可以划分为以下几个主要层次: #### 1. **数据接入层** 数据接入层的主要职责是完成外部数据源到系统的传输工作。这一层能够适配不同的网络结构和数据形式,并提供灵活的扩展接口以便应对未来的新增需求。常见的数据接入方式包括但不限于视频流数据接入模和传感器数据接入模。 ```plaintext +-------------------+ | 数据接入层 | | (视频/卡口数据) | +-------------------+ | 接入 ``` #### 2. **数据存储层** 数据存储层负责实际的数据持久化操作以及基础检索服务的支持。此层常使用成熟的开源解决方案来实现线性扩展的能力,例如 Hadoop 的分布式文件系统(HDFS)或者 Apache HBase 等分布式数据库工具。通过这些技术手段,不仅实现了海量数据的有效存储,还提供了多样化的查询和服务接口给更高层调用。 ```plaintext +-------------------+ | 数据存储层 | | (HDFS / HBase) | +-------------------+ | 存储 ``` #### 3. **业务逻辑层** 业务逻辑层通过对下层数据资源的操作处理向最终用户提供具体的功能服务。这可能涉及到简单的读写请求响应,也可能包含复杂的算法运算如路况评估、事故预测等增值服务项目。此外,开放 API 给第三方开发者也是增强平台生态的重要策略之一。 ```plaintext +-------------------+ | 业务逻辑层 | | (查询/分析服务) | +-------------------+ | 处理 ``` #### 4. **表示层** 作为用户交互界面的部分,表示层采用了 B/S 架构模式,允许终端设备通过浏览器轻松访问整个系统所提供的各种功能选项。良好的用户体验设计对于提升整体满意度至关重要。 ```plaintext +-------------------+ | 表示层 | | (Web UI 展示) | +-------------------+ | 显示 ``` #### 辅助管理层 除了以上核心组成部分之外,还有专门设置用来保障安全性和稳定性的辅助管理系统,比如用户权限验证机制、审计跟踪记录等功能单元都在这里定义实施。 --- 以下是基于上述描述的一个简化分布式存储系统架构图示意代码: ```mermaid graph TD; A[数据接入层] --> B(数据存储层); B --> C{业务逻辑层}; C --> D[表示层]; E((辅助管理层)) -- 用户认证 --> D; F((日志服务)) -- 日志记录 --> B; G((数据加密)) -- 加密保护 --> C; ``` > 注:如果要查看图形效果,请将上面 mermaid 图表语法放入支持 Mermaid.js 渲染的地方运行即可看到完整的架构视图。 --- ### 结论 综上所述,一个完善的分布式存储系统应当具备清晰分层的设计理念,每一级都有其独特使命且相互之间紧密联系形成有机整体。这样的体系结构既便于维护升级又能很好地满足大规模并发访问场景下的性能要求[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值