• 分布式系统阅读笔记(二)----系统模型


    1)引言

    这篇笔记将为你讲述在分布式系统中经常会提到的3种模型结构,而且也用在了很多的方面。

    2)介绍

    主要分为3个:

    1.物理模型,就是对于底层物理机子的一层包装。

    2.结构模型,由一系列的用于计算和通信的节点所组成

    3.基本模型,基本模型涵盖的方面是非常多的,具体细分可以有安全模型,用于沟通等的交互模型。

    3)物理模型

    简单的就一句话描述:由分布式系统中的底层的硬件设置组成的一个模型结构就叫做物理模型。传统的早期的物理模型的组成是由于集中放置的软件或者计算机连接一起的形式,然后是通过消息通信的方式实现通信。后来就开始支持异构的环境,不同的OS,不同的编程语言,不同的硬件设置等。现在的物理模型甚至支持到从桌面的PC机到移动的计算设置。

    4)结构模型

    在讲述结构模型之前,先要知道几个概念,在分布式系统中,要依靠哪些实体呢:

    1.对象Object,RMI,RPC的通信方式都是通过Object的形式进行调用的。

    2.Components。组件,在分布式系统中,各个模块的服务都是以组件化的形式呈现。

    3.Web Service。Web Service的服务也是分布式系统中的一个重要形式。

    分布式系统中的通信方式:

    1.IPC进程间通信

    2.RMI远程方法调用

    3.Indirect Communication,间接通信。

    间接通信这个以前接触的比较少,这里详细的提及一下,有下面几种方式

    1.Group Communication,组通信。

    2.发布订阅模式。

    3.消息队列模式,高并发的常见处理方式。

    4.Tuple Space,元组空间,在元组空间中维护了一个共享的虚拟数据空间,A用户可以向元组空间中写入数据a,B用户可以从Tuple Space中读取数据a。

    5.Distributed shared memory(DSM),分布式共享存储,这里指的是进程间共享数据,而不是说的是共享物理内存。

    通信中2种常见的end-to-end的端到端的结构模式

    1.Client-Server结构

    2.P2P网络结构,每个节点机子可以是客户端也可以充当是服务器,但是比较大的缺点是安全性的保证,因为这将资源的共享做到了最大化。

    3.Proxy Server代理服务模式,由第一种模式演变而来,可以把多个服务资源通通集中到一个代理服务器上,给客户端调用,同时可以避免外界直接对服务器的攻击。

    前面是一些前提,在分布式系统中,结构模型分为下面的分类:

    1.竖直层次的划分,比如下面这个分类:


    2.水平结构,可以分为2层和3层水平划分,比如可以将数据层单独分开维护形成3层结构

    在这个章节中还出现了一个thin Client的概念,中文直译"瘦客户端",意思就是说让客户端变得更加的简单,把所有的逻辑和业务处理统统移交给服务端来实现,客户端只负责调用操作接口,通过网络实现远程调用。

    分布式系统中还有许多的中间件的支持,比如利用分布式对象策略实现的RMI,CORBA,或者还有用分布式组件原理实现的,JBOSS应用服务器,还有JMS用的策略有消息队列模式和发布订阅模式。

    5)基本模型

    基本模型是有些不同于上面提到过的一些模型,主要因为是分布式系统中的基本模型,主要涉及了下面的3个方面

    1.交互性。交互模型中要考虑通信时的数据传输的延时,保证能够有比较好的体验,还有数据的跳到性,数据的有序性。

    2.失败,出错处理。失败模型中要考虑到失败的很多情况,比如疏忽造成的失败,process的崩溃的情况,还有由于缓冲空间满了接收方无法接受信息,这些都是疏忽引起的失败,这些都是可以称作"良性的出错"。还有些比较常见的会造成一些影响的出错情况,信息被篡改,信息的多次发送,信息发送超过给定的时间。

    3.安全性。安全模型在基本模型中占据着非常重要的地位,主要是在于2个方面,1.对于调用对象的保护,因为在对象中包含着用户的隐私数据,在被客户端调用之前必须进行访问控制权限的认证,还有一个是对于传输通道的安全控制,但是由于普通的网络通道是全开放的,任何人通过抓包工具都可以轻松拿到你的数据,这时候有2点解决办法,1个是加密数据还有一个是跑在安全通道上,通过VPN(虚拟专有网络),或SSL(安全套接字层)的方式。


    参考文献:<<Distributed Sysytems Concepts And Design>>原版第五版,author:George Coulouris,Jean Dollimore, Tim Kindberg,Gordon Blair

  • 相关阅读:
    基于红帽5裁剪一个简单的Linux
    Linux系统初始化流程
    bash学习记录
    ubuntu 上安装MySQL
    Effective Modern C++ 条款4:掌握查看型别推导结果的方法
    Effective Modern C++ 条款3:理解decltype
    ubuntu 环境下向GitHub上传(push)每次都需要用户名密码问题
    Effective Modern C++ 条款2:理解auto型别推导
    Effective Modern C++  条款1:理解模板型别推导
    ubuntu16.04环境编译gSOAP
  • 原文地址:https://www.cnblogs.com/bianqi/p/12184103.html
Copyright © 2020-2023  润新知