|
Datarelay介于mgmt和数据仓库间,是个传递消息的组件。Datarelay分为server端和client端。Mgmt的数据更新如果需要让仓库同步,则通知server端, serve端生成事件并分发事件到各个client端,client端再通知仓库,让它到数据库同步数据。
Datarelay server端启动后,数据库表DRS_GROUP会插入数据
[localimg=400,31]2[/localimg]
GROUP_ID对应为datarelay.config文件的group.id参数
Datarelay client端启动后,数据库表DRC_Group会插入数据
[localimg=400,51]3[/localimg]
停止Datarelay client端最好用shutdown.sh脚本,如果成功停止,DRC_GROUP表就会清除相应的数据。这样下次启动就可通过该表知道client有没有正常注册上。
[localimg=400,44]4[/localimg]
现在有这样一个场景
当前有两个Datarelay client端,GROUP_ID为:drc-203.10.10.14和203.10.0.18-drc。这时drc-203.10.10.14这个Datarelay的服务器网络中断了。
操作:mgmt上将一个vodid=319点点播做了绑定,那么mgmt会在DISTRIBUTEINFO表插入一条数据,ENTITY即是被操作对象的id
[localimg=400,27]5[/localimg]
此后mgmt会通知Datarelay server端,并在DISTRIBUTE_EVENT表插入数据
该表的PATLOAD字段的值对应为DISTRIBUTEINFO表的GROUP_NUMBER的值。
而事件的执行结果则会记录在DISTRIBUTE_TASK表中
EVENT_ID字段的值对应DISTRIBUTE_EVENT表的ID字段的值。STATE的值是任务的执行状态,1为失败,0为成功。
仅当Datarelay的所有任务执行成功,DISTRIBUTEINFO、DISTRIBUTE_EVENT、DISTRIBUTE_TASK表的相应数据会马上被清除掉,只有出现失败的任务,才能看到相关的数据。
[localimg=400,82]6[/localimg]
Datarelay Server端和一般每3分钟向client发一次心跳, client 端datarelay.log心跳日志:
30.04.2009 10:25:37 *DEBUG* [http-2080-1] HttpServiceMapping: Looking up handler for [/DatarelayService] (AbstractUrlHandlerMapping.java, line 161)
HeartbeatMessageHandler: 2009-04-30 10:25:37 | DEBUG | XTVMW | Entre func [onDatarelayMessage]Received Message from Server ,The MessageType is 'HEARTBEAT' | com.huawei.xtvmw.datarelay.client.HeartbeatMessageHandler.onDatarelayMessage(HeartbeatMessageHandler.java:56) (DebugLogImpl.java, line 383)
30.04.2009 10:25:37 *DEBUG* [http-2080-1] HeartbeatMessageHandler: 2009-04-30 10:25:37 | DEBUG | XTVMW | Exit func [onDatarelayMessage] | com.huawei.xtvmw.datarelay.client.HeartbeatMessageHandler.onDatarelayMessage(HeartbeatMessageHandler.java:65) (DebugLogImpl.java, line 383)
Server端的datarelay.log心跳日志:
30.04.2009 10:37:32 *INFO * [pool-3-thread-4] HeartbeatMessageGenerator: 2009-04-30 10:37:32 | INFO | XTVMW | HeartBeatean to http://203.10.0.18:2080/datarelay/DatarelayService has successed | com.huawei.xtvmw.datarelay.server.HeartbeatMessageGenerator.onDatarelayMessage(HeartbeatMessageGenerator.java:130) (DebugLogImpl.java, line 383)
30.04.2009 10:37:32 *INFO * [pool-3-thread-4] DrWatchdogService: 2009-04-30 10:37:32 | INFO | XTVMW | notify to http://203.10.0.18:2080/datarelay/DatarelayService has successed | com.huawei.xtvmw.datarelay.service.DrWatchdogService$WatchdogExecutor.run(DrWatchdogService.java:496) (DebugLogImpl.java, line 383)
如果server 端有向某client发心跳的日志而client端没看到心跳日志,则是client出了问题。
如果server端没有向任何client发心跳的日志,则是server端出了问题。
如果不是很有必要深究原因,重启出问题的服务吧。
Client 端处理任务的日志
30.04.2009 08:57:48 *INFO * [pool-1-thread-4] UpdateMessageHandler: 2009-04-30 08:57:48 | INFO | XTVMW | Received Message from DatarelayServer where the event id is -1,the topic is vod AND the repository operaotr is successed.. | com.huawei.xtvmw.datarelay.client.UpdateMessageHandler.onDatarelayMessage(UpdateMessageHandler.java:88) (DebugLogImpl.java, line 383)
30.04.2009 08:57:48 *INFO * [pool-1-thread-4] CompleteMessageGenerator: 2009-04-30 08:57:48 | INFO | XTVMW | Complete Notify Operation to [http://203.10.0.11:8080/datarelay/DatarelayService] succeeded! | com.huawei.xtvmw.datarelay.client.CompleteMessageGenerator.onDatarelayMessage(CompleteMessageGenerator.java:97) (DebugLogImpl.java, line 383)
第一段红色字体表示“通知了仓库,关于vod的更新,并且通知successed.了”。
第二段红色字体表示“回复了server端,通知消息的任务圆满完成”。 |
|