码迷,mamicode.com
首页 > 其他好文 > 详细

分布式应用概述二

时间:2019-04-03 14:05:05      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:tor   同步   实现   之间   bio   网络协议   多个   透明   处理   

1、概述

    1.1  大型应用通常会拆分为多个子系统来实现;

        对于java来说,这些子系统可能部署在同一台机器的多个不同的JVM中,也可能部署在不同的机器上

        但这些子系统又不是完全独立的,要相互通信来共同实现业务功能

    1.2  对于分布式java应用,通常有2种典型的方法来是实现:

          1.1.1  基于消息方式

                当系统之间要通信时,就向外发送消息,消息可以是字节流、字节数组、甚至是java对象,其他系统接收到消息后则进行相应的业务处理;

                消息方式的系统间通信,通常基于网络协议来实现,常用的实现系统间通信的协议有:TCP/IP、UDP/IP;

                TCP、UDP可用于完成数据的传输,但要完成系统间通信,还需要对数据进行处理。例如,读取、写入数据,按照POSIX标准分为同步IO、异步IO;

                  1.1.1.1  BIO

                          当发起IO的读或写操作时,均为阻塞方式,只有当程序读到了流或者将流写入OS后,才会释放资源;

                  1.1.1.2  NIO

                          基于事件驱动的思想,通常采用Reactor模式,当发起IO的读或写操作时,是非阻塞的;

                          只有当Socket有流可读或可写入Socket时,OS会相应地通知应用程序进行处理,应用再将流读取到缓冲区或写入OS;

                          对于网络IO而言,主要有3种事件:连接建立、流读取、流写入;

                  1.1.1.3  AIO

                          基于事件驱动思想,通常采用Proactor模式;

                          和NIO不同,当进行读写操作时,只须调用API的read、write即可,这2种方法均为异步;

                          对于read操作而言,当有流可读取时,OS会将可读的流传入read方法的缓冲区,并通知应用程序;

                          对于write操作而言,当OS将write方法传递的流写入完毕时,OS主动通知应用程序;

                          较之NIO而言,AIO一方面简化了程序的编写,流的读写都由OS来代替完成;另一方面省去了NIO中程序要遍历事件通知队列的代价

    

          1.1.2  基于远程调用方式

                当系统之间要通信时,可通过调用本地的一个java接口的方法,透明地调用远程的java实现,具体的实现细节由java或框架完成,这种方式在java中主要用来实现基于RMI、WebService的应用

 

2、分布式java应用实现:

    1.1  消息方式  

          1.1.1  基于java自身技术实现消息方式的系统间通信:

                TCP+BIO;

                TCP+NIO;

                UDP+BIO;

                UDP+NIO;

          1.1.2  基于开源框架实现消息方式的系统间通信:

                           

                          

 

分布式应用概述二

标签:tor   同步   实现   之间   bio   网络协议   多个   透明   处理   

原文地址:https://www.cnblogs.com/anpeiyong/p/10648336.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!