网站首页博客首页 ┆欢迎光临 Bos开发者网络 登录注册帮助
我的企业架构视点
日志

应用模式分析系列二(Identity Map)

标识映射(Identity Map)
    通过内存映射标志,确保每个对象只加载一次。
    上面是定义,实际上就是在内存中维持一个对象缓存(通常是Map缓存),每次获取对象的时候,先到缓存中获取,不存在再访问数据库,当然需要考虑更新时的同步。这不是个什么新鲜东西,给一种常用的做法赋予一个深奥的名字就是大师们常干的事情。对于这个模式我没有太多个人的想法,只有以下2点:
   1、Map的层次。如果一个对象会存在并发更新,则只能作为会话层缓存映射。如果一个对象属于只读对象,则可以作为全局缓存映射。在EAS的Cache中提供了CacheRegion的划分方式,结合Session对象,我们可以灵活定义映射层次。嗯,我认为Session是个好东西,如果不被滥用的话。
   2、映射的大小:由于JAVA虚拟机的要求,在32位的服务端对内存是有严格要求的,基本上就在1.3G左右,以前元数据是做了映射缓存,可惜占用内存太多,被无情地Cut了,改为采用惰性加载+WeakReferrence的处理方式,我还是认为缓存起来比较好,以前也思考过对应的方案。其中和Anderson就讨论过是否可以通过专用的CacheServer来满足需求。以前没有集群方案,现在有了集群,似乎该方案开始具备可行行了。
已经公开 2007年9月14日 16:40 作者: 胡锦敏

评论

avatar 
缓存这个东西在集群下的数据同步的确是个头大的问题,如果在Session中就更头痛了,不知道金蝶实现了真正的负载平衡吗?谢谢。tansm@msn.com
2007-10-25 18:26
 
请登录后再发表评论以赚取更多积分

About 胡锦敏

计算机应用专业博士,留荷博士后,工作流专家,长期从事企业建模、工作流和电子商务等相关的研究工作,02年加盟金蝶从事EAS的总体设计工作,现为金蝶EAS资深架构师。同时还主导国家863企业信息化技术相关课题的研究工作,研究范围包括MDA,SOA、应用集成、企业间业务协同等。