笨笨的思想片断

零碎片断,杂七杂八。
posts - 25, comments - 79, trackbacks - 0, articles - 0

不间断运行工作系统元数据更新策略

Posted on 2005-12-02 16:40 笨笨 阅读(1366) 评论(0)  编辑  收藏 所属分类: 软件开发

关键在于元数据更新的事务性

一般做法如下:
meta_refresh.gif

主动检查:每个进程内,有一个定时检查模块,定时检查数据库中元数据表的最后更新时间戳,发现需要重新加载的元数据。
被动通知:每个进程内,有一个等待更新消息通知的消息驱动Bean模块,接受元数据管理机发出的元数据更新JMS消息/MQ消息,更新指定元数据。

元数据更新的事务性:为保证业务处理模块不受元数据更新过程的影响;在程序设计上,采用双内存切换机制。即内存中,同时有两块内存用于存放元数据。任一时刻,元数据全局变量指向其中一块,为当前工作元数据内存块;元数据检查更新模块,则使用另一块内存,在元数据加载、校验过程结束后,再切换元数据全局变量指向新的元数据内存块;切换元数据全局变量的过程自身受共享锁保护。从而保证业务处理模块的处理过程不受后台元数据切换的影响,并且业务处理模块所访问的元数据始终是可用的,不会出现业务处理过程中,元数据变化的情况。

对于分布式应用,有可能需要自行编写元数据更新的分布式事务管理器,自行实现元数据更新的两阶段提交过程。如果想偷懒,也可以考虑用JCA自行实现Resource Manager,借用应用服务器的Transaction Manager。


只有注册用户登录后才能发表评论。


网站导航: