美文网首页
分布式系统

分布式系统

作者: 周周杨杨 | 来源:发表于2017-11-09 21:19 被阅读0次

    一、什么是分布式系统

    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

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

    输入设备

    输出设备

    控制器

    运算器

    存储器

    分布式系统难点

    缺乏全局时钟

    面对故障独立性

    处理单点故障

    事务的挑战

    相关文章

      网友评论

          本文标题:分布式系统

          本文链接:https://www.haomeiwen.com/subject/iirmmxtx.html