- 浏览: 78954 次
- 来自: ...
最近访客 更多访客>>
最新评论
-
Triffic:
相见恨晚啊,坚持看完
四个开源商业智能平台比较(三) -
java-007:
Thank you, the landlord, a good ...
商业智能平台研究(九) ETL 中的数据质量控制 -
zouming_3:
感觉jaspersoft做的要好看些。
四个开源商业智能平台比较(三)
cache是优化性能的必须选择,cache也是一个中大型系统必须选择的技术。Cache是专门针对有状态数据的系统做的一种优化措施。在J2EE中,通常我们有很多功能会在WEB层实现,比如Web Service,但是这些网络功能是非常耗时的,如果每个request都进行网络通讯,无疑性能是很低的。
因此, 我们需要将一些经常反复使用的状态数据一直保存在内存中,在有效期内供客户端不断反复访问。
使用HashMap保存对象是实现的最基本思路,很多开源软件都有自己的cache机制,如Jive的cache机制主要实现了单机系统的缓冲机制,如果多台服务器运行,jive 2.1以前的cache机制是无法 实现的,这迫使它在jive 2.5以后采取第三方非开源的分布式Cache系统。
那么有没有一种简单的分布式cache实现机制呢?
最新门户portal开源软件Liferay向我们展现了利用EJB实现分布式cache简单实用的实现。
Cache机制是利用内存中的对象来代替远程对象,因此它是一种Proxy模式,我们来看看几个关键的类:
1.Cache类
核心类是com.liferay.cache.model.cache,通过构造一个new cache(Object obj),将需要cache的对象
赋值进去,就能达到cache的目的,以后通过cache.getObject()可以得到这个对象。
为了达到分布式cache目的,多态Server能共享同样的Cache,liferay使用了数据库来持久化这些cache:
Cache
CacheEJB
CacheHome
这三个类是一个实体bean, 对应一个叫cache的数据库,使用集中式的数据库可以让多态服务器来共享这些被cache的 对象。Cache中有两个字段:ID和String型的text, 后者是将对象序列化以String方式保存在数据库中。
Modeler 是将实体Bean的Cache 逆向序列化成Cache。CachePool是实体Bean Cache的缓冲池。
通过CacheManager操作上述的CachePool Modeler和Cache,可以实现所有的有关Cache的生成 管理操作。
实际上,这个Cache是供WEB层使用的,因此,通过CacheManagerUtil这个总的接口向WEB层提供Cache功能,在WEB层,WebCachePool以单态的形式为所有WebCachable的对象提供cache。
可见,整个Cache机制有三层,第一层WebCachePool是离应用请求最近的;当超过更新期间后,第一层将从第二层CachePool获取,如果第二层没有,将从数据库中获取,如果数据库没有或过期,则启动这个被Cache的对象的某个方法,让其从远程通过网络获取新值。。
2.Cachable对象
上面我们已经提到被Cache的对象,这个对象能够被Cache,需要具备一定的条件,它要实现WebCacheable,而WebCacheable是个综合接口,它必须具备两个属性Cacheable, Converter。
Cachable的接口只有getRefreshTime()方法,意味着只要指定了自己的更新时间就能Cacheable,同时还要再具备Converter,Converter代表的意思是,如果Cacheable规定的更新时间失效后应该做的事情:到真正数据源再获取一次数据,由此可见,Cache的好处就是,不必每次需要这个数据时,都要执行一次Converter。
举例:
天气预报,我们可能会在我们首页上放置天气预报,这个天气预报的信息我们是通过Web Service到某个专业站点获取的,那很显然,不可能我们的首页在每次被访问时,都要通过Web Service这样的网络连接去获取天气数据,这时,我们就需要对天气数据Weather进行Cache。
//根据邮编构成一个WeatherConverter对象
WebCacheable wc = new WeatherConverter(zip);
//通过缓冲池再获得这个对象,Cache实际是一种Proxy模式
Cache cache = WebCachePool.get("weather." + zip, wc);
//从cache中再返回该对象。
return (Weather)cache.getObject();
从上可见,当客户端我们的首页后,我们不是直接返回wc.convert(zip),这个方法就是通过Web service到远程获取天气数据,而是中间强行插入一个proxy"网关",使用cache.getObject()来返回天气数据,这样,就起到Cache缓冲的效果。
liferay是个非常不错的门户软件,尤其是它的portlet概念,整合了普通门户网站的所有功能,非常类似IBM的Portal软件,但它是开源免费的。而且它的很多设计思想可以借鉴实现在我们自己的应用中。
发表评论
-
JFreeReport 0.9 的特性预览
2007-09-12 15:13 2175在Pentaho的官方论坛里,我看到了JFreeReport ... -
在Tomcat上部署和运行Pentaho示例1.2版本
2007-09-12 15:10 2540下载pentaho_j2ee_deploy ... -
在Tomcat上如何集成Pentaho和Liferay
2007-09-12 15:08 1749... -
BIRT API学习
2007-09-12 15:06 2867以下这个例子来自birt 的官方教材,我没有改动任何的信息. ... -
商业智能(十八) 安装BIRT
2007-09-12 15:04 1980安装Birt 其实非常的简单.只需要下载Birt-Runtim ... -
Mondrian 如何使用 materialized view
2007-09-12 15:03 1970第十四篇文章中,我把 ... -
用materialized view + dimension 来提高mondrian 的性能2
2007-09-12 15:01 1949接着上一篇的定义我们定义如下两个dimension : CRE ... -
materialized view+dimension提高mondrian性能1
2007-09-12 15:00 1876着上一篇的步骤部署好了mondrian 之后 进入数据库,修改 ... -
mondrian + oracle 部署foodmart demo
2007-09-12 14:59 3479mondrian作为开源世界的OL ... -
商业智能研究(十二) OLAP 相关的一些开源项目
2007-09-12 14:53 2347联机分析(OLAP)处理专门设计用于支持复杂的分析操作,侧重对 ... -
在tomcat上部署pentaho 1.5.3
2007-09-12 14:51 1903在tomcat上部署pentaho 1.5.3 最近一直在做m ... -
商业智能平台研究(十一) BI基本概念
2007-09-12 14:47 2719商业智能对每个不同的公司都有不同的定义. 如果你对这些公司的定 ... -
商业智能平台研究 (十) ETL 选型
2007-09-12 14:42 3573ETL (Extract-Transform-Load的缩写, ... -
商业智能平台研究(九) ETL 中的数据质量控制
2007-09-12 14:40 1712数据质量一直是ETL工具 ... -
商业智能平台研究(八)
2007-09-12 14:36 2020... -
商业智能平台研究(七)
2007-09-12 14:34 1401五一期间哪里都没有去 ... -
四个开源商业智能平台比较(六)
2007-09-12 14:30 2128roadmap是一个项目的计划表,个人认为任何一个项目都应该有 ... -
四个开源商业智能平台比较(五)
2007-09-12 14:28 2219lumi 问JPivot能否单独使用,不能,根据其主页上的描述 ... -
四个开源商业智能平台比较(四)
2007-09-12 14:26 1873我想问,如果贵公司是 ... -
四个开源商业智能平台比较(三)
2007-09-12 11:58 2609先回答一下各位的评论,blogjava上的江南白衣 朋友(主 ...
相关推荐
在Liferay中实现SSO(Single Sign-On)单点登录功能,可以让用户在一个系统登录后,无需再次输入凭证就能访问其他关联系统,极大地提高了用户体验。其中,CAS(Central Authentication Service)是一个广泛应用的...
【Liferay 门户集成CAS实现单点登录与应用系统集成】是将开源门户平台Liferay与中央认证服务(CAS)相结合,以实现用户在多个应用系统间的统一登录体验。Liferay是一个基于Java的企业级门户解决方案,它具备强大的...
在本文中,我们将深入探讨如何实现Liferay门户与微信的集成,从而实现微信登录的自动登录功能。Liferay是一款开源的企业级门户平台,它提供了丰富的定制化选项,包括自定义登录方式。微信作为中国最流行的社交应用之...
### 基于Liferay+Portal技术的校园信息门户研究与实现 #### 一、引言 随着信息科技与通信技术的迅猛发展,数字化校园已成为高等教育机构信息化建设的重要组成部分。数字化校园不仅为师生提供了海量信息资源和服务...
【Liferay + CAS 实现单点登录步骤】 在IT领域,单点登录(Single Sign-On,简称SSO)是一种方便用户管理和身份验证的技术,它允许用户通过一次登录就能访问多个相互关联的应用系统,无需多次输入凭证。Liferay是一...
在Liferay Portal中,文档管理主要通过【Document Library】Portlet实现。用户可以方便地上传文档,如在文件夹内点击【Add Document】,选择本地文件上传。值得注意的是,上传的文档大小通常有3000KB的限制。文档...
1. **扩展框架**:Liferay Ext基于Maven构建,它提供了一个框架,开发者可以在其中添加自定义的类加载器,使得新的类和配置可以优先于默认的Liferay类加载,实现对核心功能的扩展。 2. **portlet开发**:通过...
JBPM是一个开源的工作流和业务规则管理系统,Liferay可以通过它来实现复杂的业务流程自动化。通过这个文档,我们可以学习到Liferay如何存储和管理JBPM中的工作流实例、任务和相关数据,这对于理解Liferay中的工作流...
Liferay Portal Liferay IDE
以下将详细介绍Liferay文档库上传下载实现的流程及原理。 1. **文件上传流程**: - **DLFILEENTRY表**:当上传一个文件时,系统首先会在DLFILEENTRY表中创建一条新记录,代表新添加的文档。这条记录包含了文件的...
- **主题更换:**通过Liferay的外观管理功能,用户能够自定义网站的主题和布局,实现个性化设计。 - **内容管理系统:**Liferay内置的CMS允许用户编辑和发布网页内容,支持文档管理、版本控制等特性,简化了网站内容...
这可以通过配置Liferay的会话复制机制实现,如使用Memcached或 Hazelcast作为分布式缓存,将会话信息实时复制到其他节点。 4. **负载均衡器的选择与配置**: - **硬件负载均衡器**:例如F5 Big-IP或Cisco CSS,...
2. **微服务架构**:Liferay的微服务架构介绍,如何设计和部署分布式服务以支持大型企业级系统。 3. **大数据集成**:如果涉及,可能会涵盖如何利用Liferay与大数据平台(如Hadoop或Spark)集成,实现数据分析和...
- 如果需要,可以在Liferay source location处选择Liferay的源码路径,这样有助于调试和理解内部实现。 - 点击 `Finish` 完成配置。 3. **启动Liferay服务器**: - 在Liferay IDE下方的 `Servers` 面板中,可以...
这本书详细介绍了如何利用Liferay的API、服务和插件进行开发,涵盖了从基础到高级的各种主题。 在Liferay开发中,首先需要理解Liferay Portal的核心概念。Liferay Portal是一款开源的企业级门户平台,它提供了丰富...
Struts2是一个流行的MVC框架,"plugins开发指南12-liferay6中struts2开发.pdf"将介绍如何在Liferay 6中集成Struts2,实现更高效的应用程序开发。同时,"plugins开发指南4-2简单的MVC分层结构的portlet-核心代码开发....
本书详细阐述了Liferay在集群环境下的配置和优化,包括数据同步、负载均衡以及故障转移策略,帮助读者实现Liferay系统的稳定运行。 4. 《Liferay Portal 7.x Theming》 对于希望自定义Liferay外观的设计师或开发者...
这些技术的应用,使得Liferay能够支持跨域的数据交互和功能调用,进一步增强了其在分布式环境下的应用灵活性。 ### 六、应用服务器 Liferay可以部署在多种应用服务器之上,包括Tomcat等标准servlet容器。这种设计...
Liferay 是一个开源的企业级门户平台,它提供了一个强大的框架,用于构建和管理Web应用程序、内容和工作流程。本超学习文档将深入探讨Liferay的核心特性、开发环境、Java技术的应用以及Hibernate在Liferay中的整合。...
对于 Web 服务,Liferay 使用 Axis Servlet 实现。同时,它为 J2ME、J2SE 和 J2EE 提供了隧道 Servlet 支持。这种架构使得 Liferay 具有高度的可扩展性和互操作性。 2. **核心技术** - **业务层**:Liferay 采用了...