分布式系统中程序的两种通信模式
2015-03-27 13:15
351 查看
两种通信模式协议:
1.客户-服务器通信 2.组通信
客户-服务器模式详解
通常情况下,请求应答是同步的,客户进程一直阻塞,知道收到来自服务器的应答为止,请求-应答通信也是可靠的,来及服务器的应答是对客户的有效确认。 请求-应答协议: 基于三个通信原语:doOperation、getRequest、senReply ``` public byte[] doOperation(Romoute ObjectRefo, int method, byte[] arguments) //发送请求消息 到远程对象并返回应答,参数指定远程对象、要调用的方法和该方法的参数 public void sendReply(byte[] reply, InetAddress clientHost, int clientPort); //发送应答消息reply到该英特网地址和端口上的用 ``` http协议: http方法: GET:该方法请求一个资源该资源的URL以参数的形式给出 HEAD:该请求与GET类似,只是不返回任何数据,返回的是所有与数据相关的信息,如数据类型,修改时间。 POST:该方法指定一个资源的URL,该资源能够处理请求中的数据。 PUT:该方法将请求中的数据存储起来并用给定的URL作为其自愿的标识符 DELETE:服务器删除给定的URL标识符 OPTIONS :服务器提供给客户可用在给定URL上的方法 TRACE : 服务器发回请求消息。该请求消息用于诊断 消息内容: http请求消息: 方法 | URL或域名路径 | HTTP版本 | 头部 | 消息体 http应答的消息 http 版本 | 状态码 | 理由 | 头部 | 消息体
组通信详解
为了提高容错能力和提高可可用性将一个服务实现为多个不同的计算机上的多个不同的进程,那么会有一个进程到一组进程的通信
最简单的组播不提供消息传递保证和排序保证
IP组播—组播的实现
组播使得发送方能够将单个IP数据包传送给组成组播组的一组计算机,发送方并不知道接收者的身份。
组播地址的分配:注意组播是由D类地址指定的,224.0.0.1—224.0.0.255,第一个地址是组播主机本身
组播的数据安全性: 分为不可靠组播和可靠组播
IP组播的JAVA API(实现)
MulitcastSocket:提供了IP组播的数据报接口,该类继承了DatagramSocket的子类,具有加入退出组播组的能力
实际上套接字在给定的端口加入到指定的一个组播组,它将接收其他计算机上的进程发送给这个端口的数据包,进程通过调用它的组播组的leaveGroup方法离开指定的组。
组播成员加入到一个组,然后发送和接受数据报
import java.net.*; import java.io.*; public class MuliticastPerr{ public static void main(String args[]){ //命令行参数,消息内容和目的组播地址 MulticastSocket s = null; try{ InetAdress group = InetAdress.getByName(args[1]); s = new MulticastSocket(6789); s.joinGroup(group); byte[] m = args[0].getBytes(); DatagramPacket messageOut = new DatagramPacket(m, m.length, group, 6789); s.send(messageOut); byte[] buffer = new byte[1000]; for(int i = 0; i < 3;i++){ DatagramPacket messageIn = new DatagramPacket(buffer, buffer.length); s.receive(messageIn); } s.leaveGroup(group); }catch(){ }catch(){ }finally{ if(s != null){ s.close(); } } } }
组播存在的问题:
可靠性和排序:
组播路由器出现故障组成员就会接收不到组播的信息
在互联网上IP数据包的不一定按照顺序发送的,不同的成员接收到的顺序不一样。
相关文章推荐
- 小白学分布式程序开发2-分布式架构下系统间交互的5种通信模式
- 第5章分布式系统模式 Broker(代理程序)
- 分布式系统的通信模式
- 第5章分布式系统模式 Broker(代理程序)
- 转载:使用win pe模式安装win7的时候出现“安装程序无法定位现有系统分区,也无法创建新的系统分区”提示
- 分布式系统设计模式 zz
- 基于P2P模式的视频通信系统
- 两种通信模式(Ad hoc mode和Infrastracuture mode)的区别是什么?
- 分布式系统开发学习之CS模式(二)
- 分布式程序开发的模式
- 如何用程序确认当前系统的存储模式?
- 让程序在Windows CE系统启动时自动运行的两种方法
- 文件系统的两种文件索引模式extent和blockmap
- 分布式系统模式读后记(一)
- ZooKeeper: 一个用于分布式系统的分布式协作服务程序
- 如何用程序确认当前系统的存储模式
- java分布式通信系统(J2EE分布式服务器架构)
- [原创]分布式系统开发学习之CS模式(二) - CS模式的限制与应用及Scalability的补充讨论
- [原创]分布式系统开发学习之CS模式(一) --- 简介
- 基于VxWorks的嵌入式系统复合通信模式