zoukankan      html  css  js  c++  java
  • 分布式系统学习笔记(1)-基础知识

    分布式系统可能很难用一句话说清楚, 不过在distributed systems concepts and design一书中有个很中肯的定义:

    A distributed system is one in which components located at networked computer communicate and coordinate wheir actions only by passing messages

    上面的定义中可以看出分布式系统有两个特点:

    • 组件分布在网络计算机上
    • 仅仅通过消息传递来通信

    如上所述,“组件”分布在网络计算机上,这个网络肯定是可大可小, 有可能在同一个房间、同一栋建筑物,也可能是在不同的国家。这取决于具体的选址策略。比如我们平时使用的互联网其实就是一个分布式系统,我们通过浏览器去访问某个地址(如淘宝),从发出请求到浏览器上看到内容,中间设计到很多的模块,有的专门负责通讯,有的负责寻址,有的负责处理请求,有的负责存储有德负责计算,还有缓存等等。 分布式系统有如下的特征:

    • 并发 在一个计算机网络上,程序的并发执行是一个准则: 我在我的电脑上做的事而“你”在你的电脑上做你的事,不同的电脑之间互不干扰。 我们之间仅仅在必要的时候交换数据。
      系统能够处理的数据量可以通过增加更多的资源(如电脑)到这个网络中来提升。
    • 没有全局时钟 程序之间的紧密合作常常默认依赖于合作动作发生时候的时间,但是这个在一个分布式系统中会有一定的限制:没有一个全局的“正确时间”的准则。每台电脑都会有自己的物理时间, 想要在不同的电脑之间实现完全一致的时间需要的一定的努力。
    • 独立的操作结果(如失败) 任何电脑运行的程序都可能会失败,程序设计者应该考虑可能的错误的解决方案。分步实现系统可能会有一些新的“失败”的方式,比如网络连接上,可能一个系统请求另一个系统执行某项操作结果网络原因导致无法得到结果,但是这又不意味着另一个系统上的操作失败了。 并且,另一个系统可能还无法得知这个问题。同样的,系统中某个地方已出乎意料的方式结束(crash),也无法使得其他系统立刻知道这里已经无法联通。 整个分布式系统中任意地方都可能失败,同时,其他地方可能还在继续运行。
      构造和使用分布式系统最主要的目的就是共享资源,这个资源可能是网络、可能是计算机等。从硬件如磁盘、打印机到软件如文件、数据库和所有类型的数据对象都得到扩展。

    分布式系统一个最明显的应用就是搜索引擎:
    一个搜索引擎的任务是索引整个互联网的内容,这包括很多内容:web页面,音视频,书籍等,这是一个非常复杂的工程,不完全统计目前有630亿页面,10亿独立站点。Google-搜索引擎的领头羊,设计了迄今为止最复杂的分布式系统已支持搜索系统工作。 其中最突出的几个包括:

    • 分布在全球各地的数量巨大的网络计算机, 已提供基础的物理层支撑
    • 一个支持非常大文件和重度优化的分布式文件系统,给谷歌搜索和其他应用使用(特别是高速、持久的读取文件)
    • 一个关联的结构式分布式存储系统,提供对非常大数据集的快速访问的功能
    • 一个锁服务,提供分布式系统函数比如分布式锁和声明
    • 一个独立于底层物理架构的编程模型已管理分布式系统

    而后面的文章的内容都是软件上的,也就是所谓的编程模型。

    I see I come I conquer.
  • 相关阅读:
    Windows 8.1 应用开发 – 触控操作
    Windows Phone App Studio 无码开发手机应用
    尝试HTML + JavaScript 编写Windows App
    Ubuntu远程连接MySQL(connection refused)解决方法
    [MySQL]查看用户权限与GRANT用法
    mysql 创建用户命令-grant
    搭建memcached使用:/usr/bin/phpize 安装memcached扩展的时候报错
    在linux中使用phpize安装php扩展模块
    跟锦数学全部资料
    33套2020数分高代试题参考解答[2020/04/14更新,更多请关注跟锦数学微信公众号]
  • 原文地址:https://www.cnblogs.com/yTPety/p/6762854.html
Copyright © 2011-2022 走看看