链接

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

  网上的诸多回答,上来就是看各种论文,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

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

您的支持是我最大的鼓励

一个简化的分布式系统架构图相关推荐

  1. ppt中的流程图怎么整体移动_如何快速在PPT中产生一个复杂的组织架构图?

    如何快速在PPT中产生一个复杂的组织架构图? 时间:2016-06-03来源: 网络作者: 未知点击: 次 PPT制作技巧:如何快速在PPT中产生一个复杂的组织架构图? 大家都知道,在PPT当中有个非 ...

  2. 画一个客户画像系统架构图

    好的,我会尽力用中文为您画出一幅客户画像系统架构图. 首先,客户画像系统通常由以下几个部分组成: 数据收集和存储:这一部分负责从各种来源收集客户数据,并将这些数据存储在数据仓库或数据库中.常见的数据来 ...

  3. java分布式系统架构图,2022吊打面试官系列

    前言 如果你不能拼爹,或者不想拼爹,最好的方法是拼实力. 合抱之木,生于毫末:九层之台,起于垒土:千里之行,始于足下. 所以,你必须要从基层做起.当然,所谓的基层,并不是端茶倒水,但多一些体验,总是无 ...

  4. 程序员必备技能:如何画好架构图?

    目录 先厘清一些基础概念 1.什么是架构 2.什么是架构图 3.架构图的作用 4.架构图分类 怎样的架构图是好的架构图 画架构图遇到的常见问题 1.方框代表什么? 2.虚线.实线什么意思?箭头什么意思 ...

  5. 如何画出优秀的架构图?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | 三画 来源 | 公众号「阿里巴巴云原生」 导读:技术传播 ...

  6. 阿里巴巴的技术专家,是如何画好架构图的?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:阿里巴巴中间件 技术传播的价值,不仅仅体现在通过商业化产品和 ...

  7. 架构师必备技能:教你画出一张合格的技术架构图

    当我们想用一张或几张图来描述我们的系统时,是不是经常遇到以下情况: 对着画布无从下手.删了又来? 如何用一张图描述我的系统,并且让产品.运营.开发都能看明白? 画了一半的图还不清楚受众是谁? 画出来的 ...

  8. 画架构图的软件_程序员为什么要学会画技术架构图?

    来源: https://www.infoq.cn/article/GhprrUlOYyOqS8*FR1pH 技术传播的价值,不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径,加速业务的上线 ...

  9. 阿里巴巴技术专家三画:如何画好架构图

    技术传播的价值,不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径,加速业务的上线速率,也体现在优秀工程师在工作效率提升.产品性能优化和用户体验改善等经验方面的分享,以提高我们的专业能力. ...

  10. 阿里技术专家告诉你,如何画出优秀的架构图?

    作者 | 三画 责编 | Carol 来源 | 公众号「阿里巴巴云原生」 导读:技术传播的价值,不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径,加速业务的上线速率,也体现在优秀工程师在工 ...

最新文章

  1. 脱口秀《娶妻当娶女博士》续集《娶妻别娶女博士》北大生物女博士的自白,爆笑加泪点...
  2. 【离散数学中的数据结构与算法】四 加法法则与乘法法则
  3. Redis Cluster集群的搭建与实践[转]
  4. Linux中的Total Video Converter——超级音视频转换软件:Winff
  5. java5新特性_5分钟了解Java 12 八大新特性
  6. 面试准备每日五题:C++(二)——mallocnew、宏、volatile、constvolatile、(a)和(a)
  7. HDU 5895 Mathematician QSC
  8. C#读写XML的演示程序(1)
  9. MS SQL Server对表的设计修改时不允许保存
  10. 为什么需要Code Review?
  11. rand()函数的用法
  12. Libero SoC v2021.1安装与环境配置
  13. 金工计算机测试题,金工考试题精选.doc
  14. centos7 安装 oceanbase 单机版测试
  15. .net 网站接入支付宝扫码支付
  16. 康妮猫重温C语言课后作业题(张书云2008版)ch1
  17. 对于offsetWidth,offsetHeight,offsetLeft,offsetTop的理解
  18. void指针(void*):void*存放任意对象的地址、通过(int*)a转换指针类型
  19. 【实习日志】SSM用户管理系统搭建+更新
  20. idea条件断点和异常断点

热门文章

  1. PTA离散数学集合论自测(有答案)
  2. UEFI的诞生与优势
  3. python爬取微博评论_python爬虫手把手教你抓取微博评论(完整代码)
  4. 2020计算机组成原理性考答案,中国文化通论、计算机组成原理试题
  5. 网站整站下载工具推荐【Z】
  6. Stagefright漏洞公告
  7. LAMMPS分子动力学模拟技术与应用 第一性原理计算方法及应用
  8. 模块“*.dll“已加载,但对DllRegisterServer的调用失败,错误代码0x8002801c
  9. VARCHART XGantt_v5.1用户手册:如何提供数据(.NET版)
  10. zemax双胶合消色差透镜设计