若某一个销售系统:库存信息存储在一个应用系统中,订单系统又存储在另一个应用系统,客户信息在第三个系统中,那若把三者整合,则如何实现呢?
对于目前的主分店中的收银软件等情况,分店与主店是如何通信呢?
以及目前的售票系统,全国地区又是如何通信呢?
因此:我们平常开发,根本满足不了这种方式。
回头细想一下:平常开发:纵向开发从页面知道数据库层,完全在一个服务器中,并且完全在一个进程中运行。
由此,分布式开发应运而生。
那什么是分布式开发?
分布式,从字面而言:物理地址上分开,比如主分店,主机在纽约,分店在北京。不在同一个服务器中或者不在同一个服务器进程中。
分布式开发:把我们三层部署在不同的位置上。
三层:用户界面、业务逻辑、数据库存储三个层次。
分布式开发好处?
协作与互联
分布式系统的重要作用之一就是能够为我们整合大量地理上分散于各地的信息和服务,如地图、电子商务网站、多媒体、大百科全书等。互联网上即时通讯系统和聊天室的流行凸显了分布式系统的另一个重要作用:与家庭、朋友、同事乃至客户保持联系。
经济性
我们可以将选定的应用组件和服务分配到具有特殊处理属性的计算机节点上执行,而那些简易的程序就可以运行在相对廉价的硬件上。
性能
多个计算和通信处理任务可以并行运行在数 据中心的不同节点上,或运行在同一服务器的不同虚拟机上。
容错性
分布式系统的关键目标之一是允许系统发生部分故障。。一种常见的容错实现方式是在多 个节点或网络上提供重复的服务。冗余性有助于将单节点失败的影响控制在最小范围内,它可以显著提高系统在出现部分故障时的可靠性
分布式开发技术?
目前分布对象技术已经成为建立应用框架(Application Framework)和软构件(Software Component)的核心技术,在开发大型分布式应用系统中表现出强大的生命力,并形成了三项具有代表性的主流技术,
目前成熟的技术包括J2EE, CORBA和.NET(DCOM).
CORBA (Common Object Request Broker Architecture) 是在1992年由OMG(Open Management Group) 组织提出的。那时的分布式应用环境都采用Client/Server架构,CORBA的应用很大程度的提高了分布式应用软件的开发效率。
当时的另一种分布式系统开发工具是Microsoft的DCOM(Distributed Common Object Model)。Microsoft为了使在Windows平台上开发的各种应用软件产品的功能能够在运行时(Runtime)相互调用(比如在Microsoft Word中直接编辑Excel文件),实现了OLE(Linked and Embedded Object)技术,后来这个技术衍生为COM(Common Object Model)。
随着Internet的普及和网络服务(Web Services)的广泛应用, Browser/Server架构的模式逐渐体现出它的优势。 于是,Sun公司在其Java技术的基础上推出了应用于B/S架构的J2EE的开发和应用平台;Microsoft也在其DCOM技术的基础上推出了主要面向B/S应用的.NET开发和应用平台。
三种主流技术的比较:
COBBA:与开发语言无关的独立性,与开发者无关的独立性和与操作系统无关的独立性。
DCOM:目前,Microsoft的分布式组件对象模型(Distributed Componont Object Model)仅运行于两种操作系统之上:Windows95和WindowsNT4。
J2EE中主打RMI:仅局限Java语言。依赖java虚拟机。
J2EE平台下分布式通信技术:
Java RMI(Remote Method Invoke):远程方法调用。Java RMI实现Java对象间的远程通信。服务器用注册器把一个名字和远程对象绑在一起,客户机通过名字从服务器注册器上查找远程对象,找到后下载远程对象的本地代理,调用远程对象的方法。
Java IDL(Java Interface Defilation Language):接口定义语言。可以实现Java对象的符合CORBA规范的远程对象通信。
JNDI(Java Naming and Directory Interface):Java命名和目录接口。JNDI为分布式系统访问远程对象提供了一个标准的命名接口。EJB主接口对象、数据源、消息服务器等都可以用JDNI树的形式注册到名称服务器中,调用它们的对象通过符合JDNI的程序接口在JNDI名称服务器中查找指定名称的远程对象。
JMS(Java Message Service):Java消息服务。为开发消息中间件应用程序定义了一套规范。Java客户端和Java中间层访问消息系统只要实现JMS定义的简单的接口,就可以实现复杂的应用,而不必去关注低级的技术细节。
还有基于rmi协议的EJB组件、与编程语言无关的webservice通信方式。
其中webservice通信框架,axis、axis2,cxf,博客中曾经都做相应的总结以及实践。
并且项目中使用jboss提供的数据源,还是使用EJB发布无状态bean,都用到了JNDI。
至于JDK实现的RMI如何进行远程访问,解耦合的消息服务,以及与COBBA联合使用会在继续跟进研究
参考:
http://baike.baidu.cn/view/4792581.htm ——分布式架构 百度百科
对于其中的概念扩展学习
http://www.cnblogs.com/jifeng/archive/2011/07/20/2111183.html
http://hi.baidu.com/chinacharis/item/26dffc5fb6f23a16abf6d760