分布式系统

一、什么是分布式系统

A distributed system is one in which components located at network computers communicate and coordinate their actions only by passing messages.出自《Distributed Systems Concepts and Design》

我理解的:分布式系统是由多个节点(一个节点为一台电脑)组成的,这些节点是互相连通的,这些节点上部署了我们的服务,这些服务之间会有协同。

举例:alibaba、aliexpress、taobao、tmall这些都是分布式系统

在分布式系统中有些负责存储、有些负责计算、有些负责请求转发等,总之各司其职,干什么的都有。

二、分布式系统的意义

高性能:单机性能总是有限的,通过更换硬件以垂直扩展的方式提升性能成本会越来越高,而且总会遇到瓶颈

高可用:单机出现故障咋办,整个系统就挂掉了,如果是分布式系统只是部分可用,再加上故障转移和自动恢复的功能,用户是感受不到不可用的。

高吞吐:增加机器可以线性提高吞吐量,比如单机可以支撑1000QPS,再增加一台理论上可以支撑2000QPS

三、分布式系统基础知识

线程与进程的执行模式

对于单线程来说,我们都知道摩尔定律,18个月性能增加一倍。

对于多线程来说,我们需要知道阿姆达尔定律,充分利用多核的优势来提升性能、提高吞吐量

多线程模式

互不通信的多线程模式:没有交集,互不通信,各自执行各自的

基于共享容器协同的多线程模式:注意共享容器的安全性(方案:1、加锁——互斥锁、读写锁等;2、Copy on write)

通过事件协同的多线程模式:一个线程的执行要等待另一个线程的通知,注意死锁(方案:获取锁的顺序)

多进程模式

线程是属于进程的,一个进程内的多个线程共享了进程的内存空间;而多个进程之间的内存空间都是独立的,因此多个进程间通过内存共享、交换数据的方式与多线程是不同的。另外,进程间的通信、协调、事件通知、互斥锁的释放跟多线程也是不一样的,不同的平台所支持的方式也不同。

多进程与单进程多线程相比,劣势在哪:1、进程的通信,会涉及序列化与反序列化,开销比线程更大;2、多进程占用资源比多线程占用资源多。

多进程与单进程多线程相比,优势在哪:1、多进程资源控制更容易;2、多进程中的单个进程问题不会造成整体的不可用,例如nginx的worker进程。

分布式系统就是由多机组成的系统,可以近似看为单机多进程变为了多机多进程。多机多进程的可用性会更高。

网络通信基础

ISO的OSI网络模型,TCP/IP模型,TCP/IP的3次握手、4次挥手,TCP/IP的各状态,以及TCP/IP协议的包头包体的组成部分等等,大家自行查找相关资料学习。

网络IO实现方式

BIO

NIO

AIO

冯.诺依曼提出计算机组成与分布式系统的对比

输入设备

输出设备

控制器

运算器

存储器

分布式系统难点

缺乏全局时钟

面对故障独立性

处理单点故障

事务的挑战

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 承载量是分布式系统存在的原因 当一个互联网业务获得大众欢迎的时候,最显著碰到的技术问题,就是服务器非常繁忙。当每天...
    XYLY阅读 5,326评论 1 48
  • 本文转载自http://geek.csdn.net/news/detail/112672 WeTest导读 我们常...
    shineegirl阅读 5,449评论 0 26
  • 本系列文章整理自《大型网站系统与Java中间件实践》 分布式系统的定义 A distributed system ...
    青小城阅读 6,848评论 1 4
  • 分布式系统面临的第一个问题就是数据分布,即将数据均匀地分布到多个存储节点。另外,为了保证可靠性和可用性,需要将数据...
    olostin阅读 10,247评论 2 26
  • 以下内容都是腾讯WeTest《浅析分布式系统》博文的摘抄,说是摘抄其实跟原文照搬差不了多少,原文地址腾讯WeTes...
    天之蓝色阅读 4,731评论 0 6

友情链接更多精彩内容