1. 什么是分布式系统?

分布式系统是基于网络进行通信、为完成同一个目标而互相协作的一组节点集群。

也看看其他人的观点:

分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。

https://www.cnblogs.com/xybaby/p/7787034.html

Also known as distributed computing and distributed databases, a distributed system is a collection of independent components located on different machines that share messages with each other in order to achieve common goals.

https://www.confluent.io/learn/distributed-systems/

2. 为什么要引入分布式系统?

单机系统的计算性能、存储容量达到了瓶颈,具体分为四点:

  • 性能和容量:已经触达单机的计算瓶颈、存储容量瓶颈

  • 投入产出比:升级单机硬件的成本太高,已经大于它带来的性能或容量的提升效果

  • 研发效率:随着系统越来越复杂,参与维护的人越来越多,单体系统的维护效率触发瓶颈

  • 运维要求:单机系统一挂全挂的特点,不满足互联网服务24*7可用的要求

在上面这些问题的挑战下,分布式系统的思想应运而生,分布式系统的核心思想是使用大量普通规格的普通机器,互相协调,实现和单机系统同样的业务目标。主要的吸引力在于:

  • 扩展性:随着机器的线性增加,分布式系统的存储和计算性能也可以线性增加

  • 灵活性:基于普通机器的集群,可以根据业务流量,灵活扩容或缩容,提高资金的利用率

  • 可用性:单个模块挂掉,不会影响其他模块

3. 分布式系统又带来了哪些问题?

天下没有免费的午餐,要享受分布式系统的扩展性、弹性运维的好处,就得承受它带来的成本,从研发过程的视角来,最大的挑战是复杂度

  • 要妥善处理好多个节点之间的协同问题、数据分区、数据一致性等问题,难度很大

  • 将系统拆到不同的计算机节点上,运维难度变高

  • 测试和排查问题的难度提高

4. 如何建设优秀的分布式系统?

4.1 运行视角

引入分布式系统也是有成本的,需要妥善处理好多个节点之间的协调的问题,对于计算机系统来说,主要就是存储和计算两个主题,那么对应到分布式系统中也依然是这样:

  • 分布式计算

    • 两个节点之间的进程如何通信?

    • 如何发现自己要调用的服务?

    • 如何做避免系统雪崩?

    • 如何确定系统是正常运行的?

    • 如何做分布式锁?

  • 分布式存储

    • 如何做数据分片?

    • 如何保障数据一致性?

    • 如何做分布式事务?

4.2 抽象视角

对于运行视角面临的一些问题,进行抽象和归类,可以归为下面三个问题:

  • 路由问题

  • 共识问题

  • 运维问题

参考资料

  • https://www.cnblogs.com/xybaby/p/7787034.html

  • https://www.confluent.io/learn/distributed-systems/

  • A Thorough Introduction to Distributed Systems

  • https://time.geekbang.org/column/article/481016

  • https://time.geekbang.org/column/article/141

分布式系统:what、why、how相关推荐

  1. 分布式系统 一致性模型的介绍 以及 zookeeper的 “线性一致性“ 讨论

    文章目录 1. 一致性 概览 1.1 分布式系统的 "正确性" 1.2 线性一致性(Linearizability) 1.3 顺序一致性(Sequential consistenc ...

  2. 《异步处理在分布式系统中的优化作用》学习笔记

    原文地址:http://www.infoq.com/cn/presentations/optimization-of-asynchronous-processing-in-distributed-sy ...

  3. Travis CI : 最小的分布式系统(三)

    日志的作用有两个:当构建日志的数据块通过消息队列进来时,更新数据库对应行,然后推送它到Pusher用于实时的用户界面更新. 日志块以流的形式在同一个时间从不同的进程中进来,然后被一个进程处理.这个进程 ...

  4. Travis CI : 最小的分布式系统(一)

    (本文翻译自http://www.paperplanes.de/2013/10/18/the-smallest-distributed-system.html,由@金斌_jinbin 翻译) Trav ...

  5. 整理下.net分布式系统架构的思路

    最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路.今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正. 首先说明的是.ne ...

  6. 如何选择分布式系统(区块链)协议?

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 如何选择分布式系统(区块链)协议? 在构建包分布式系统功能的应用程序时,<财富>500强企业和创始人经常问我 ...

  7. 分布式系统的时间顺序

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 分布式系统的时间顺序 区块链被认为是分布式的系统,分布式系统中由于多节点,通讯.物理位置等的问题,各节点间时间一致的问题 ...

  8. 分布式系统中节点之间的同步形成区块链

    链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载. 分布式系统中节点之间的同步形成区块链 分布式系统由Tanenbaum定义,"分布式系统是一组独立的计算 ...

  9. 工作中感受到的消息中间件在分布式系统中的使用场景

    经历 以前在qunar实习,第一次接触消息中间件,那时候概念还不清楚,朦朦胧胧有个初步认识,现在正式工作了,又一次接触了消息中间件,初步总结几种场景. 场景 1.分布式系统中,不同系统之间传递消息. ...

  10. 美团即时物流的分布式系统架构设计

    背景 美团外卖已经发展了五年,即时物流探索也经历了3年多的时间,业务从零孵化到初具规模,在整个过程中积累了一些分布式高并发系统的建设经验.最主要的收获包括两点: 即时物流业务对故障和高延迟的容忍度极低 ...

最新文章

  1. boost源码剖析之:泛型函数指针类boost::function(rev#3)
  2. Zuul(SpringCloud学习笔记一)
  3. Solr所有的查询解析器Query Parsers(转:http://blog.csdn.net/jiangchao858/article/details/53859731)
  4. java pdf 水印_Java 在PDF中添加水印——文本/图片水印
  5. JavaScript: 取得 function 的所有参数名
  6. BSTR、char* 和 CString 之间的转换 (转)
  7. Centos修改主机名,重启后无效解决
  8. NETGEAR拒绝连接请求_破案:Kubernetes/Docker 上无法解释的连接超时
  9. 句句真研—每日长难句打卡Day2
  10. 【Codeforces 1344 A】Hilbert‘s Hotel,哈希表,set维护
  11. 通过Python获取维基百科中概念词条的维基信息
  12. 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记6——四大变换光照与材质
  13. Gabor变换(2)
  14. Backtrader:用feather格式股票数据代替tushare进行数据回测
  15. 转:宁愿在真实前颤抖,也不愿在催泪弹下哭泣(今何在)
  16. 2006年元宵节前喜得贵子,真高兴,呵呵 ^_^
  17. 使用Haproxy Exporter监控Sparkthrift存活率
  18. OpenLayers标记地图点及点击地图点显示自定义弹出框
  19. 什么是饥饿营销,饥饿营销案例以及饥饿营销的4个步骤
  20. wo de wen jian

热门文章

  1. win7下快速启动栏的快捷方式的位置
  2. 【历史上的今天】12 月 31 日:千年虫问题;DNA 计算之父出生;微机先驱 Cromemco 成立
  3. 《3S新闻周刊》(转帖)
  4. 东南大学和华中科技大学计算机哪个好,中南大学、东南大学、华中科技大学,这三所学校到底哪个好?...
  5. 软件安装管家(2021年1月8日更新)
  6. 怎样才能让身体更加健康?
  7. 第二章 C语言基础程序设计
  8. android fota解决方案,FOTA解决方案让汽车系统快速升级
  9. Win11 没有磁盘清理工具,如何清理磁盘旧的windows.old文件
  10. Nancy朋友的时间线