分布式Java应用与实践 (一)

一) 分布式Java应用

1.1 基于消息方式实现系统间的通信

数据传输

TCP/IP 可靠的网络传输协议,首先给通信双方建立链接之后再进行数据传输,保证链接及数据传输的可靠,因此会牺牲一些性能

UDP/IP 不保证数据一定到达的网络传输协议,并不直接给通信的双方建立链接而是发送到网络上进行传递。性能表现较好但是会出现数据乱序或丢失。

数据处理

同步IO:

BIO(Blocking IO) - 当发起读或者写操作时均为堵塞方式,只有当程序读到了流或者将流写入操作系统后才会释放资源

NIO(Non-blocking IO) - 基于事件驱动的思想,采用Reactor模式实现。发起读或者写操作时为非堵塞方式,当Socket有流可读或者可写入Socket时,操作系统会通知应用程序进行处理,应用再将流读取到缓冲区或写入操作系统。

异步IO: AIO -  基于事件驱动的思想,采用Proactor模式实现。当进行读写操作时,只需直接调用API的read或write方法,这两种方法都是异步的。有流可读入时,操作系统会将可读的流传入read方法的缓冲区,并通知应用程序。操作系统将write方法传递的流写入完毕时,操作系统会主动通知应用程序。

关于BIO, NIO, AIO,参考http://ihenu.iteye.com/blog/2247618

基于Java自身包实现的系统间通信方式有TCP/IP+BIO, TCP/IP+BIO, TCP/IP+NIO, UDP/IP+BIO, UDP/IP+NIO

2. 基于远程调用方式实现系统间的通信

可通过调用本地的一个Java借口方法,透明的调用远程的Java实现。主要有RMI和WebService.

时间: 2024-12-21 21:57:41

分布式Java应用与实践 (一)的相关文章

《分布式Java应用之基础与实践》读书笔记三

对于大型分布式Java应用与SOA,我们可以从以下几个方面来分析: 为什么需要SOA SOA是什么 eBay的SOA平台 可实现SOA的方法 为什么需要SOA ??第一个现象是系统多元化带来的问题,可采用对共用逻辑的部分进行抽象的方法,形成多个按领域划分的公用业务逻辑系统:第二个现象是系统访问量.数据量上涨后带来的典型问题,可采用拆分系统的方式来解决.在构建了共用业务逻辑系统和拆分系统后,最明显的问题就是系统之间如何交互.为了整个系统的性能.可用性等考虑,统一的交互方式就成为明显的解决方案了,S

《分布式Java应用之基础与实践》读书笔记一

分布式Java应用的体系结构知识简单分为: 网络通信:包括协议和IO 消息方式的系统间通信:包括基于Java包.基于开源框架.性能角度 远程调用方式的系统间通信:包括基于Java包.基于开源框架.性能角度 大型应用拆分为多个子系统来实现,这些子系统可能部署在同一台机器,或者不同机器的多个不同JVM中,每个子系统对应一个JVM.但这些子系统又不是完全独立的,要相互通信来共同实现业务功能,对于此类Java引用,我们称之为分布式Java引用.通常有两种典型的方法来实现. 基于信息方式实现系统间的通信,

《从PAXOS到ZOOKEEPER分布式一致性原理与实践》pdf

下载地址:网盘下载 内容简介  · · · · · · <Paxos到Zookeeper:分布式一致性原理与实践>从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了Paxos和ZAB协议.同时,本书深入介绍了分布式一致性问题的工业解决方案--ZooKeeper,并着重向读者展示这一分布式协调框架的使用方法.内部实现及运维技巧,旨在帮助读者全面了解ZooKeeper,并更好地使用和运维ZooKeeper.全书共8章,分为五部分:第一

最重要的 Java EE 最佳实践

参考:IBM WebSphere 开发者技术期刊: 最重要的 Java EE 最佳实践 IBM WebSphere 开发者技术期刊: 最重要的 Java EE 最佳实践 2004 年 IBM? WebSphere? 开发者技术期刊中曾发表过一篇名称类似的文章,本文是其更新版本.这个修正版中考虑了一些不断变化的技术趋势,更重要的是推荐了一些作者认为应当广泛遵循.但尚未广泛遵循的实践. 2 评论: Keys Botzum, 高级技术人员 , EMC Kyle Brown, 杰出工程师, EMC Ru

《分布式服务框架原理与实践》- 总结一下吧

我们听过无数的道理,却仍旧过不好这一生.额,我说的是技术! <分布式服务框架原理与实践>这本书,一直在讲一些大道理,和具体的业务和我本身的工作已经没多大关系了.但是,不管怎么样,还得总结下吧.别人的道理,并不是自己的道理!自己的的道理才是硬道理,哪怕是烂道理! 个人觉得这本书讲得太宽泛,或者说讲得不够深入,或者文学范不够,总之,感觉不够吸引人,如果赶时间,还是算了吧. 他列举了许多需要注意的方面,而且就每个方面以单独的章节进行前因,后果的展示,应该说有比较好的或者统一的数据结构结构吧.下面稍微

Java 理论与实践: 流行的原子

Java 理论与实践: 流行的原子 新原子类是 java.util.concurrent 的隐藏精华 在 JDK 5.0 之前,如果不使用本机代码,就不能用 Java 语言编写无等待.无锁定的算法.在 java.util.concurrent 中添加原子变量类之后,这种情况发生了变化.请跟随并行专家 Brian Goetz 一起,了解这些新类如何使用 Java 语言开发高度可伸缩的无阻塞算法.您可以在本文的 论坛中与作者或其他读者共享您对本文的看法.(也可以通过单击文章顶部或者底部的 讨论链接来

《Java并发变成实践》读书笔记---第二章 线程安全性

什么是线程安全性 要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的(Shared)和可变的(Mutable)状态的访问.从非正式的意义上来说,对象的状态是指存储在状态变量(例如实例或静态域)中的数据."共享"意味着变量可以由多个线程同时访问,而"可变"则意味着变量的值在其生命周期内可以发生变化.所以编写线程安全的代码更侧重于如何防止在数据上发生不受控的并发访问. 如果当多个线程访问同一个可变的状态变量时没有使用合适的同步,那么程序就会出现错误

Java 理论与实践: 处理 InterruptedException

捕捉到它,然后怎么处理它? 很多 Java™ 语言方法,例如 Thread.sleep() 和 Object.wait(),都可以抛出InterruptedException.您不能忽略这个异常,因为它是一个检查异常(checked exception).但是应该如何处理它呢?在本月的 Java 理论与实践中,并发专家 Brian Goetz 将解释 InterruptedException 的含义,为什么会抛出 InterruptedException,以及在捕捉到该异常时应该怎么做. 这样的

Java编程规范实践

一个好的编程规范可以让代码易于理解,具体的操作却不必如此麻烦. 本文包含以下内容: Eclipse Java代码Formatter配置 Eclipse 代码模板配置 自动添加Javadoc注释 附录:常见Java编码规范 Java代码Formatter配置 在Eclipse中可以通过Code Format和Code Template配置方便地实现代码格式化和注释定制. 首先选择了一款喜欢的编码格式:Nutz Java 编码规范 (V1.0) 阅读完毕后,找到对应的eclipse code for