正在加载图片...
·76 智能系统学报 第2卷 内,如不能解析则结束本次查询任务处理 事务DIAgent发“提交”报文,此时每个相关的子事 5)查询解析DIAgent按地址向目的物理查询 务DIAgent知道其他的相关的子事务DIAgent将 DIAgent发送查询处理消息,重复3)、4)5)直接把复 “赞成”提交,故它可以收到“提交”"报文后就进行提 合查询的物理查询处理完成为止.在规定时间内,如 交5.6 果某一个物理查询任务不能提交到目的物理查询 3.3网络通信模块的设计 DIAgent,则本次查询失败,结束本次查询任务处理」 3.3.1设计思想 6)各物理查询DIAgent完成查询任务后,返回 网络分布环境中各DIAgent之间需要通信,是 查询结果到查询解析DIAgent..在规定时间内,如不 通过网络通信模块进行的,每个DIAgent都需要一 能返回结果,则本次查询失败 个网络通信模块,设计网络通信模块要考虑以下几 7)查询解析DIAgent综合物理查询结果,提交 个因素: 任务DIAgent,由任务DIAgent交给用户/应用系 1)网络通信模块支持与外界双向通信,与外界 统,结束本次查询任务处理.如果某一个物理查询 的通信接口应该有收发2个端口. DIAgent不能返回查询结果,则结束本次查询任务 2)网络通信模块支持与宿主双向通信,所以与 处理 宿主的通信接口应该有2个端口 8)事务分解DIAgent分析接收的任务是不是 3)网络通信模块内应该具体缓冲区,保证通信 分布式事务,如是分布式事务,则按照一定的算法把 的可靠性,防止因拥塞而掉包发生 分布式事务分解为一系列子分布式事务 4)网络通信模块作为服务方接收信息时,应支 9)事务分解DIAgent按照子事务/事务的功能 持多客户访问 要求到功能解析服务DIAgent(即Facilitator DIA- 为此,根据每个通信的要求设计了下列网络通信 gent)中查询哪一个DIAgent能够完成此任务,Fa 模块图:本模块特点是各部分高度并行运行,保证了 cilitator DIAgent找到后,则返回DIAgent名称.如 在有多个Aget的条件下通信要求,其结构如图2. 不能解析,则结束本次事务处理 3.32网络通信模块组成 1O)事务分解DIAgent利用9)步得到的DIA- Socket接口:功能是将直接与协议有关的通信部 gent名称从自己熟悉DIAgent列表中查询地址.如 分组合在一起,并给网络通信模块的其他部分提供一 找不到,则到名字解析服务DIAgent查询该DIA- 种通信方式,使网络通信模块的其他部分不用考虑与 gent对应的地址(包括IP地址和端口号).如不能 发送协议有关的部分,各部分的工作原理如下: 解析则结束本次事务处理.重复9)、10)直接把分布 服务线程:它使用ServerSocket不停地监听本 式事务的子事务按上述要求作完 DIAgent的端口地址,一旦发现消息来,主动启动一 11)事务分解DIAgent把上面的所有处理子事 个消息线程处理这个消息,然后继续监听,它支持多 务的DIAgent的地址及子事务内容以消息方式告 客户」 知事务协调DIAgent.事务协调DIAgent把所有的 消息线程:由服务线程启动.它的任务是读入消 子事务发送到处理子事务的目的DIAgent(即各采 息,并将消息送到接收缓冲区 气队的子事务DIAgent). 客户线程:客户线程由发送线程启动,任务是将 12)事务协调DIAgent向所有相关的子事务DF 消息通过Socket发出 Agent发送“开始提交"”消息.由于每个相关的子事务 接收缓冲区:用来缓存外界发来的消息,它的访 DIAgent据自己的情况进行投票,只有收到所有的相 问方式采用同步,即互斥访问 关的子事务DIAgent均赞成,提交才进入第2阶段 发送缓冲区:用来缓存向外发送的消息,以免连 13)和第3阶段14),如在规定时间内收不到回复,则 续发送多个消息而使系统出错.向外发送的消息一 认为参与者拒绝处理事务,结束本事务处理」 般是通过调用网络通信模块的消息发送函数进入发 13)事务协调DIAgent向所有相关的子事务 送缓冲区.根据本模块情况,发送缓冲区和接收缓冲 DIAgent发送“准备提交"消息.相关的子事务DIA- 区按队列原理工作 gent收到该报文后,若已经准备好提交,则回答“准 发送线程:是一个常驻线程,它的任务是不断监 备就绪”消息否则结束本事务处理 视发送缓冲区,一旦有消息进入发送缓冲区就启动 14)当事务协调DIAgent收到所有的相关的子 Socket接口中的方法来将消息发出.Socket接口中 事务DIAgent'“准备就绪”回答,就向所有相关的子 的方法将产生一个客户线程来将消息发出。 1994-2008 China Academic Journal Electronie Publishing House.All rights reserved.http://www.cnki.net内 ,如不能解析则结束本次查询任务处理. 5) 查询解析 DIAgent 按地址向目的物理查询 DIAgent 发送查询处理消息 ,重复 3) 、4) 、5) 直接把复 合查询的物理查询处理完成为止. 在规定时间内 ,如 果某一个物理查询任务不能提交到目的物理查询 DIAgent ,则本次查询失败 ,结束本次查询任务处理. 6) 各物理查询 DIAgent 完成查询任务后 ,返回 查询结果到查询解析 DIAgent. 在规定时间内 ,如不 能返回结果 ,则本次查询失败. 7) 查询解析 DIAgent 综合物理查询结果 ,提交 任务 DIAgent ,由任务 DIAgent 交给用户/ 应用系 统 ,结束本次查询任务处理. 如果某一个物理查询 DIAgent 不能返回查询结果 ,则结束本次查询任务 处理. 8) 事务分解 DIAgent 分析接收的任务是不是 分布式事务 ,如是分布式事务 ,则按照一定的算法把 分布式事务分解为一系列子分布式事务. 9) 事务分解 DIAgent 按照子事务/ 事务的功能 要求到功能解析服务 DIAgent (即 Facilitator DIA2 gent) 中查询哪一个 DIAgent 能够完成此任务 ,Fa2 cilitator DIAgent 找到后 ,则返回 DIAgent 名称. 如 不能解析 ,则结束本次事务处理. 10) 事务分解 DIAgent 利用 9) 步得到的 DIA2 gent 名称从自已熟悉 DIAgent 列表中查询地址. 如 找不到 ,则到名字解析服务 DIAgent 查询该 DIA2 gent 对应的地址 (包括 IP 地址和端口号) . 如不能 解析则结束本次事务处理. 重复 9) 、10) 直接把分布 式事务的子事务按上述要求作完. 11) 事务分解 DIAgent 把上面的所有处理子事 务的 DIAgent 的地址及子事务内容以消息方式告 知事务协调 DIAgent. 事务协调 DIAgent 把所有的 子事务发送到处理子事务的目的 DIAgent (即各采 气队的子事务 DIAgent) . 12) 事务协调 DIAgent 向所有相关的子事务 DI2 Agent 发送“开始提交”消息. 由于每个相关的子事务 DIAgent 据自己的情况进行投票 ,只有收到所有的相 关的子事务 DIAgent 均赞成 ,提交才进入第 2 阶段 13)和第 3 阶段 14) ,如在规定时间内收不到回复 ,则 认为参与者拒绝处理事务 ,结束本事务处理. 13) 事务协调 DIAgent 向所有相关的子事务 DIAgent 发送“准备提交”消息. 相关的子事务 DIA2 gent 收到该报文后 ,若已经准备好提交 ,则回答“准 备就绪”消息 ,否则结束本事务处理. 14) 当事务协调 DIAgent 收到所有的相关的子 事务 DIAgen“t 准备就绪”回答 ,就向所有相关的子 事务 DIAgent 发“提交”报文 ,此时每个相关的子事 务 DIAgent 知道其他的相关的子事务 DIAgent 将 “赞成”提交 ,故它可以收到“提交”报文后就进行提 交[5 - 6 ] . 3. 3 网络通信模块的设计 3. 3. 1 设计思想 网络分布环境中各 DIAgent 之间需要通信 ,是 通过网络通信模块进行的 ,每个 DIAgent 都需要一 个网络通信模块 ,设计网络通信模块要考虑以下几 个因素 : 1) 网络通信模块支持与外界双向通信 ,与外界 的通信接口应该有收发 2 个端口. 2) 网络通信模块支持与宿主双向通信 ,所以与 宿主的通信接口应该有 2 个端口. 3) 网络通信模块内应该具体缓冲区 ,保证通信 的可靠性 ,防止因拥塞而掉包发生. 4) 网络通信模块作为服务方接收信息时 ,应支 持多客户访问. 为此 ,根据每个通信的要求设计了下列网络通信 模块图:本模块特点是各部分高度并行运行 ,保证了 在有多个 Agent 的条件下通信要求 ,其结构如图 2. 3. 3. 2 网络通信模块组成 Socket 接口 :功能是将直接与协议有关的通信部 分组合在一起 ,并给网络通信模块的其他部分提供一 种通信方式 ,使网络通信模块的其他部分不用考虑与 发送协议有关的部分 ,各部分的工作原理如下: 服务线程 :它使用 ServerSocket 不停地监听本 DIAgent 的端口地址 ,一旦发现消息来 ,主动启动一 个消息线程处理这个消息 ,然后继续监听 ,它支持多 客户. 消息线程 :由服务线程启动. 它的任务是读入消 息 ,并将消息送到接收缓冲区. 客户线程 :客户线程由发送线程启动 ,任务是将 消息通过 Socket 发出. 接收缓冲区 :用来缓存外界发来的消息 ,它的访 问方式采用同步 ,即互斥访问. 发送缓冲区 :用来缓存向外发送的消息 ,以免连 续发送多个消息而使系统出错. 向外发送的消息一 般是通过调用网络通信模块的消息发送函数进入发 送缓冲区. 根据本模块情况 ,发送缓冲区和接收缓冲 区按队列原理工作. 发送线程 :是一个常驻线程 ,它的任务是不断监 视发送缓冲区 ,一旦有消息进入发送缓冲区就启动 Socket 接口中的方法来将消息发出. Socket 接口中 的方法将产生一个客户线程来将消息发出. · 67 · 智 能 系 统 学 报 第 2 卷
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有