分布式系统之四:间接通信
来源:互联网 发布:图片二维码识别软件 编辑:程序博客网 时间:2024/03/29 22:37
间接通信
间接通信被定义为在分布式系统中实体通过中介者进行通信,没有发送者和接收者之间的直接耦合。
间接通信技术
1. 组通信:在组通信中,通信通过一个抽象的组进行,发送者不知道接收者的身份。
2. 发布-订阅系统:代表一类方法,这类方法的共同特点是通过中介者将事件分发给多个接收者。
3. 消息队列系统:其中消息发送到队列中,接收者从这些队列中提取消息
4. 基于共享内存的方法,包括分布式分享内存和元组空间两种方法,给编程人员提供一个抽象的全局共享内存抽象。
优点
空间解耦:发送者不知道也不需要知道接收者的身份,反之亦然。如此空间解耦是的系统开发者有很大的自由度去处理改变:如替换、更新、复制、迁移。
时间解耦:发送者和接收者可以有独立的生命周期。换句话说,发送者和接收者不需要同时存在才能通信。由此可以轻松应对那些易变的环境。
时间耦合
时间解耦
空间耦合
性质:与一个或一些给定的接收者直接通信;接收者必须在那个时刻存在。
例子:消息传递(socket),远程调用(rpc)
性质:与一个或一些给定的接收者直接通信;发送者和接收者可以有自己的生命周期
空间解耦
性质:发送者不需要知道接收者的身份;接收者必须在那个时刻存在
例子:IP组播
性质:发送者不需要知道接收者的身份,发送者和接收者可以有自己的生命周期
例子:组通信、发布-订阅系统、消息队列、分布式共享内存、元组空间
缺点
由于增加间接层带来的系能开销。
组通信
定义:
组通信是对组播通信的抽象,可以通过IP组播或者一个等价的覆盖网络实现,它增加了一些重要的特性,如管理组的成员、检测故障、提供可靠性和排序保证。
应用场景:
1. 面向可能是大量客户的可靠信息分发,包括金融业,这些机构需要访问大量的信息源获得准确的、最新的数据。
2. 支持协作应用,在这样的应用中事件被分发到多个用户,从而保留一个共同的用户视图,例如,多玩家游戏。
3. 支持一系列容错策略,包括复制数据的一致更新或者高可用性(复制)服务器的是实现
4. 支持系统监控和管理,包括负载平衡策略。
编程模型:
一个进程事项只发起一个组播操作,就可以把信息发送到一组进程中每一个,而不是多次发送操作到每个进程,由此可以有效的利用带宽。
在组播中的可靠性和排序:即完整性(接收到和发送的消息是一样的,没有消息被传递两次),有效性(任何外发的消息最终都会被传递),协定(如果消息被传递到一个进程,那么该消息被传递到本组的所有进程)。有序性(FIFO,因果序,全序)。
组成员管理:
发布-订阅系统
定义:
在发布-订阅系统中,发布者发布结构化的事件到事件服务,订阅者通过订阅表达对特定事件感兴趣,其中订阅可以是结构化事件之上的任意模式。而发布-订阅系统的任务是把订阅与发布的时间进行匹配,保证事件通知的正确传递。一个给定的时间将被传递到许多潜在的订阅者,因此发布-订阅系统本质上是一对多的通信范型。
应用场景:
1. 金融信息系统
2. 实时数据直接输入的其他领域(包括RSS源)
3. 支持协同工作,那里需要通知众多参与者共同感兴趣的事件
4. 支持无处不在计算,包括管理来自无处不在基础设施的时间(如:位置事件)
5. 一系列监控应用,包括互联网上的网络监控
编程模型:
1. 异构性:当事件通知被作为一种通信手段时,分布式系统中没有被设计实现互操作的组件可以在一起工作。
2. 异步性:通知是由生成事件的发布者异步地发送到所有对其感兴趣的订阅者的,防止发布者需要与订阅者同步。
3. 保证所有事件被有效地传递到有过滤器与事件匹配的所有订阅者。在此之上,可以有安全性、可伸缩性、故障处理、并发和服务质量等额外需求。
消息队列
定义:
作为一种间接机制提供点对点的服务。因为发送者把消息放置到队列中,以后由一个进程移走该消息,所以消息队列也成为面向消息的中间件。
应用场景:
实现企业应用集成,即在企业中实现应用之间的集成,该目标是通过消息队列内在的松耦合实现的。由于其对事务的内在支持,它们还被广泛的用作商业事务处理系统的基础。
编程模型:
四种特性
1. 排队的策略一般是先进先出,
2. 支持优先级队列
3. 消息可以配置大小,类型
4. 消息是持久的,实现可靠传递
三种接收方式:
1. 阻塞接收:保持阻塞直到有合适的消息为止
2. 非阻塞接收:(轮训操作)检查队列的状态,返回可用消息,或者一个不可用的指示
3. 通知操作:当相关的队列中有一条消息可用时,会发出一个事件通知
分布式共享内存
定义:
分布式共享内存(DSM)是一种抽象,用于给不共享物理内存的计算机共享数据。进程通过读和更新看上去是其他地址空间中普通的内存来访问DSM。然而,底层的运行时系统透明地保证运行在不同的计算机上的进程可以观察到其他进程的更新。就好像进程在访问单个共享内存,但是事实上物理内存是分布式的。
编程模型:
1. 节省了程序员在写应用程序时对消息传递的考虑
2. 共享内存也可以是持久的
由于博主知识有限,如有误,请指正点评,欢迎交流
- 分布式系统之四:间接通信
- 分布式系统阅读笔记(六)-----间接通信
- 分布式系统中的通讯范型与间接通信
- 分布式系统阅读笔记(四)-----进程间通信
- 分布式系统通信
- 分布式系统的通信模式
- java分布式系统通信框架
- 分布式系统中的进程通信
- 分布式系统中的通信机制
- 深入浅出Java分布式系统通信
- 深入浅出Java分布式系统通信
- 分布式存储(分布式系统四)
- syscall - 间接系统调用
- 系统间接口设计
- Java分布式通信之RMI
- 分布式java应用之通信
- 分布式系统之架构
- 分布式系统之设计
- Java之二:工厂模式
- Java之三:Java类的装载、链接和初始化
- Java之四:类的加载器ClassLoader
- Java之五:Java实例化类的方法
- Java之六:Java Reflection
- 分布式系统之四:间接通信
- 分布式系统之五:进程/线程
- 原来恐慌一场
- Curling 2.0
- c# 去除bom文件头
- Windows中的精度定时问题
- 3D建模和3D渲染技术专题一: 热身篇,光线追踪(path Tracing),环境光阴影(ambient occlusion),焦距效果(effect focus)介绍
- JavaScript图片裁剪
- 把一个单词增删改一个字符变为另外一个单词的最小操作次数