欢迎光临
我们一直在努力

JGroups ARM(一)-JSP教程,Java技巧及代码

建站超值云服务器,限时71元/月

                                               jgroups/arm(一)
                                            根据hein meling和alberto montresor的ppt编写

                                        前言

 

       进入了分布式的时代,我们通常将1)可靠的高可用性2)容错 3)负载均衡定义为分布式系统满足的三个基本条件。分布式系统并不是指操作系统,它扮演一种中间件的角色,在各种操作系统和应用之间构架起一套桥梁,它能够做到 i)不依赖于特定的硬件,软件及操作系统,不受限于系统架构和软件体系 ii) 在充分利用便宜的硬件和软件的基础上,实现最大的性价比。

       进一步讨论分布式系统的时候,让我们了解一下我们传统的集中式系统面对的挑战:

1, 服务器硬件故障(硬盘损坏)

2, 网络故障(交换机,路由器崩溃)

3, 操作系统故障(windows死机)

4, 软件故障(内存泄露)

分布式系统需要解决集中式系统所带来的问题,需要从以下两个方面着手

1) 提供一套系统框架,该框架实现了服务器之间的多路数据复制且在出现故障的时候,不需要管理员的干预便能自动恢复。

2) 提供一套接口,让用户能够在此基础上开发可靠的,高可用性的分布式应用。

 

       让我看看过去的分布式系统框架把

l        corba

l        dcom/.net

l        java rmi/jini/ejb

这三种系统框架都具有以下的特性

1, 面向对象

2, 基于client/server远程方法调用的思想

3, 模块化

4, 高度重用性

5, 互操作性

6, 可移植性(dcom限于windows平台上)

 

       下面,以java rmi 远程方法调用为例,描述一下传统的分布式框架存在的问题。

 

       java rmi (remote method invocation 远程方法调用)是用java在jdk1.1以后的版本实现的,它大大增强了java开发分布式应用的能力。rmi是在一种百分之百纯java的网络分布式应用系统的核心解决方案之一,其实它可以被看作是rpc的java版本。但是传统rpc并不能很好地应用于分布式对象系统。而java rmi 则支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。rmi目前使用java远程消息交换协议jrmp(java remote messaging protocol)进行通信。jrmp是专为java的远程对象制定的协议。用java rmi开发的应用系统可以部署在任何支持jre(java run environment java,运行环境)的平台上。但由于jrmp是专为java对象制定的,因此,rmi对于用非java语言开发的应用系统的支持不足。不能与用非java语言书写的对象进行通信。

      

       rmi让jvm1与jvm2互相调用的时候,很好屏蔽了底层操作系统的细节,但是,如果将上面的架构改成一对多模式(一个客户端对多个服务器),client仍然避免不了需要知道系统各个服务器的网络细节(即客户端对服务器的调用并不是透明的),而且,服务器之间还存在一个如何维持调用一致性的问题。

       总之,rmi和dcom等分布式框架都没有很好的地考虑可靠性和高可用性的需求。于是,一个新的概念从这里提出了——组件群(object group)。

       组件群可以这样理解:它是一个基于服务器对象和组件的动态集合,集合中的所有组件对象互相协作和维持各个组件一致性,他们为客户端外提供一致、可靠和高可用性服务。

?shape?\* mergeformat
client

server

server

server

server
?shape?\* mergeformat
client

server

server

server

server
      组件群依赖于三种服务来构架起分布式体系框架,在描述这套框架之前,先约定,群组(group)是一个组件的组合,组件可抽象为组员,群组发生的事件通常有:

a)      join

b)     leave

c)     merge

d)     partition

e)      crash

 

1, 群组管理服务(group membership service)

       因为群组是动态的,有些组员会加入(join)到群,有些组员会脱离(leave),有些组员会因为故障而偶然脱离(crash),有时候还存在2个群之间的合并(merge)、分离(partition)等事件,因此,群必须具有处理这些事件的能力。

2, 可靠多播服务(reliable multicast service)

       在分布式群组环境下,我们通过一对多的方式来实现高可用性(跟ha其实同一个概念),现在的关键是,我们的群如何进行可靠的通讯。

       答案很简单——多播。关于群组多播的概念可参考:

       http://blog.csdn.net/huangzhq/archive/2005/02/18/291761.aspx

3, 状态传输服务(state transfer service)

       状态传输的目的就在于群组组员的信息同步,也就是,组员a跟组员b所看到的群的结构是一致的。也就是,群组成员是通过此服务来维持该群的一个统一的视图(view)。

      

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » JGroups ARM(一)-JSP教程,Java技巧及代码
分享到: 更多 (0)

相关推荐

  • 暂无文章