Liferay的架构:缓存(第一部分)

Liferay的AUI框架 Liferay中的AUI框架,官方叫做Alloy,是一个UI超框架,能为浏览器的三方面,结构,风格和表现建立网络应用提供连续的简单的API。 它融合了三种设计语言:HTML, CSS 和 JAVA。 准确来说AUI是Liferay在YUI的基础上进行的Liferay扩展,以方便Liferay的一些实际应用和扩展。AUI的很多语法结构、使用方法都都和YUI相关不太多。熟悉YUI的能够快速熟悉AUI。 立即下载

    这次,我将要涉及到一个非常重要的概念:缓存。在当今的web应用中,如果没有设计一个比较好的缓存系统,在web中就不可能有一个良好的性能。所以我将要

提到的缓存不仅仅能够更好地理解Liferay架构,而且还会比较好地帮助我们去写其他的Java Web应用,尤其是在他们比较大的时候。

    Liferay以提供了优良性能(可以参考这篇性能白皮书)著称,而它的缓存系统是实现优良性能的关键因素。它的缓存系统贯穿了Liferay的三层(前端,service层,持久化层)

下图显示了每层主要的缓存组件:

让我们一层一层地来看看cache的应用,先从最底层开始:

    在持久化层,Liferay依赖Hibernate去完成它访问数据库的大部分工作。Hibernate有两层缓存结构,分别是Level1(L1) 和Level2(L2).Level1被用作cache

从当前数据库会话获取的对象,在这种情况下,数据库的的一个会话会与Liferay的 Service层的一个调用捆绑起来。所以,当前端(或者一个 Web Service)

调用service,一个数据库的会话将被打开,而且会被重用一直到这个Service方法调用return。所有对DB的操作将会共享L1 cache, 所以获取同样的对象将只会

查询一个DB.

   Hibernate的第二层cache, Level 2 可以用来扩张DB 会话和 存储数据库对象(Entity Cache)和查询的结果(Query Cache).举个例来说,如果属于一个组织

(organization)的某一个用户调用了从DB获取对象的方法,那么这时这些被查询出来的对象就会被存在缓存中。不过值得注意的是,真正存在缓存里的是存在

实体缓存(Entity Cache)对象们的引用列表。这样是为了确保在缓存中,同一个对象在缓存系统中只有一个。

    除了用Hibernate,Liferay也可以自定义SQL语句用来直接查询一些比较复杂的结果(通过重用DB的连接)。针对这些,Liferay也有自己的实体和查询缓存

(Entity Cache and Query Cache,不过目前我好像如果通过自己写SQL查询的话,没有用到缓存?).实质上,在Liferay 6.2的版本中,由于Shuyang(Liferay创始人之一)

的努力,这两种缓存已经被高效地实现了。Hibernate的L2 cache将会默认地被关闭,Liferay自己的查询缓存系统将会取代它。

    最后比较重要的一点是,以上的cache都是通过一种底层的缓存池来管理在内存中的对象的,Liferay默认用ehcache来实现这一点,但是这也可是改变的,

我们可以通过修改portal.properties文件来改变它。这些配置已经被写在hibernate-clustered.xml中,在这个xml文件中定义了,定义和配置了几个缓存区域。

    这些配置文件对于一个高性能的网站来说是很重要的。但是不要根据你自己的猜测来随意改变它们。你应该总是在做一些性能测试的时候修改它,这样可以帮助你

找到性能瓶颈和验证你所修改的。

译自:http://www.liferay.com/zh/web/jorge.ferrer/blog/-/blogs/liferay-s-architecture-caching-part-1-




































liferay数据库表结构 全面的liferay表结构详细描述,为liferay开发提供支持 立即下载

相关推荐

liferay 代码架构图

liferay 架构图,包括所有的类图,以及各类图之的关系等等,包的关系,实现思路

Liferay的缓存

Liferay有三种缓存: MultiVMPoolUtil, SingleVMPoolUtil,FinderCacheUtil 默认实现是Ehcache。 区别: MultiVMPoolUtil 可以进行分步式部署。 SingleVMPoolUtil 不进行分步式部署。 FinderCacheUtil 是一种持久化的,手工的去清理改变的缓存。...

xttifqqk的专栏 305

liferay document_llibrary上传下载实现跟踪

详细的document_llibrary流程跟踪,分析上传下载实现原理

Liferay集群负载均衡配置

先介绍一下项目系统的环境, Liferay Version: 5.2.2 两台硬件服务器,一台WINXP(M1),一台linux(M2),用Virtualbox在M2上虚拟了两个linux分别叫M3,M4 DB Mysql: JCR(JackRabbit DB), Portal(Liferay DB) 放在M1上 Web Server: Solr Server 搜索引擎Server在M1上...

Tyler_Zhou 348

liferay架构

liferay portal tomcat

AMBA VIP基础使用方式(AXI)

AXI环境配置 1)基础配置 作为master或者slave使用时,对应的is_active = 1 只作为i监测(monitor)使用时,对应slave_cfg的is_active = 0(对应端口连接也有所区别) class smu_axi_cfg extends svt_axi_system_configuration; `uvm_object_utils(smu_aix_cfg) function new(string name="smu_axi_cfg); super.new(n..

qq_37573794的博客 7984

构建门户之利刃Liferay Portal系统架构

传送门☞轮子的专栏☞转载请注明☞http://blog.youkuaiyun.com/leverage_1229 1How to AccessProtal(Simple) 用户可以通过传统上网或者无线上网的方式来访问Protal。而开发人员可以通过SOAP、RMI和自定义的通道类来访问暴露给外部调用的API来操作Protal。 2Protal Interfa...

weixin_30568715的博客 249

手把手教你排查Abaqus中的Johnson-Cook损伤参数:避免因d3正负号导致的仿真失败

本文详细解析了Abaqus中Johnson-Cook损伤参数d3正负号设置的关键问题,帮助用户避免因参数错误导致的仿真失败和Excessive distortion报错。通过对比不同文献定义、提供实操指南和典型错误排查流程,有效提升非线性分析的准确性和效率。

weixin_33960567的博客 355

liferay集群

一,nginx配置ip_hash,解决session问题。将IP通过哈希计算得到一个值,根据该值选择一台服务器,以后这个IP进来都会走同一台服务器。用这种方法可能会导致某台服务器的压力过大,但可以解决session问题,不会丢失session.二,配置域名后发现在liferay的控制面板中无法点击按钮进行清除缓存这个原因是因为在liferay的配置文件里,默认的转发配置如下:我们用域名的话需要设置...

fwk19840301的博客 813

MATLAB配置MinGW编译器的完整指南

本文提供了在Windows系统上为MATLAB配置MinGW编译器的完整指南。详细介绍了通过MATLAB附加功能管理器在线安装和手动离线安装两种核心方法,并重点说明了如何解决常见的“未找到支持的编译器”等错误。指南包含从版本检查、环境变量配置到最终使用mex命令验证的每一步,帮助用户顺利完成MATLAB与MinGW的集成,以支持C/C++代码编译。

weixin_29031057的博客 265

软件测试工程师笔试题

这里写目录标题全套软件测试面试笔试题(附答案)二、选折三、添空四、简答(资料是搜集整理的,感谢前辈的解题)无1.区别阶段评审的与同行评审2.什么是软件测试3. 简述集成测试的过程4 怎么做好文档测试5 白盒测试有几种方法6 系统测试计划是否需要同行审批,为什么7Alpha 测试与 beta 的区别8 比较负载测试,容量测试和强度测试的区别。性能测试从使用方便的角度来说,9 测试结束的标准是什么?10 描述软件测试活动的生命周期?11 软件的缺陷等级应如何划分? 软件测试工程师笔试题(附答案) 全套软件测试面

m0_46446002的博客 2549

liferay 集群 缓冲(实际项目的解决方案)

解决思路:   首先把缓冲问题剥离出来 在利用NFS  共享到另一台服务器,deploy也可以用同样的方法实现这意味着缓存可以分布在多个Liferay 节点下同时运行。启用缓存可以显著提高性能。例如说两个用户在浏览留言板。第一次用户通过单击启动一个线程的命令来阅读。Liferay 必须从数据库查找该线程并且格式化在浏览器中显示的格式。通过一个分布式的 Ehcache运行此线程时,可以从数据库中提取...

fwk19840301的博客 779

深入解析CRC16查表法:从原理到Modbus协议实践

本文深入解析了CRC16查表法的核心原理与实现,重点阐述了其“空间换时间”的优化思想。通过对比直接计算法,详细说明了查表法如何通过预计算表格将计算速度提升数十倍,并提供了完整的Modbus CRC16查表法代码生成、解析及实战避坑指南,帮助开发者在嵌入式及工业通信场景中高效实现可靠的数据校验。

weixin_29166013的博客 555

终于解决了liferay的缓存问题!

板 要我编写一个统计页面访问量的Portlet,整了快20天了,始终因为liferay在未signin时页面不刷新,而无法解决每个领域的访问量统计。 一直怀疑是Tomcat的缓存在作梗,网上搜罗了好几天,试过了N种方法,就是不行。今天突然发现下面文章,眼睛顿时一亮:liferay页面缓存问题解决

北冥有鱼 其名为鲲 化而为鸟 其名为鹏 1745

【EB-03】 AUTOSAR builder与EB RTE集成

打开EB工具后,在EB的步骤是:执行MultiTask(2)-> Mapping Component to Partitions(4)->Task Mapping(5)-> SvcAs_Trigger(7)-> Code Generation(8)如涉及新增BSW Module,也需要重复以上步骤。

libuping2023的博客 960

基于DNN神经网络的多输入多输出数据回归预测(附带Matlab代码)

假设我们的输入数据包含n个特征,输出数据包含m个特征。在本文中,我们将介绍如何使用DNN(深度神经网络)实现多输入多输出数据回归预测,并提供相应的Matlab代码。需要注意的是,上述代码中的DNN模型是一个简化的示例,您可以根据实际任务的复杂程度和要求进行相应的调整和优化。综上所述,我们介绍了如何使用DNN神经网络实现多输入多输出数据回归预测,并提供了相应的Matlab代码。函数对DNN模型进行训练,其中输入数据需要转置,以适应网络的输入要求。最后,我们使用训练好的模型对测试数据进行预测,并打印预测结果。

DevWizard的博客 1068

Liferay研究之廿五:缓存技术的使用

缓存是一个良好设计架构的必须元素,因为使用具有通用目的的架构机制,势必会造成一些计算的冗余,造成性能的降低,通过缓存机制,就可以弥补这方面的问题。Liferay中大量的使用了缓存机制,其核心都是MultiVMPool机制,但在具体使用上有两种方式。方式一:使用FinderCache类,具体用法:1、放入缓存FinderCache.putResult(classNameCache

smilingleo的专栏 2986

Python控制Keysight DAQ973A/DAQ970A实现数据采集

本文介绍了如何通过编程实现Keysight DAQ973A数据采集系统的自动化温度测量。首先,通过GPIB线将PC与仪器连接,并使用热电耦测量线连接被测装置。接着,通过查阅Keysight官网提供的编程手册,获取了实现温度测量所需的SCPI指令。然后,使用pyvisa库编写代码,与仪器进行交互,发送SCPI指令并读取测量结果。代码中整合了配置和查询指令,并将测量结果转换为浮点数格式。最后,将整个流程封装为命令行工具,用户可以通过配置文件设置参数,并执行自动化测试,测试结果将保存为CSV文件。整个过程实现了温

xgh1951的博客 1887

Liferay页面缓存

 转载自:http://blog.chinaunix.net/u/25536/showart_233145.htmlLiferay页面使用缓存,在未登录时,页面只做一次加载,即使对JSP文件修改,页面有时也没法重新加载。但在登录之后,每一个请求每一个页面时都会重新加载。在网上查了很多资料,使用那些方法对一般的JSP页面都有作用,但对Liferay却没有效果。  经过研究发现,Liferay缓存

lifesounds的专栏 1058

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Liferay 登录页面在浏览器选择后退,由于缓存不刷新的解决方案

在Liferay中,为了提高性能,页面进行缓存。但是在登录的两个地方,/c/portal/login 以及 login 的portlet 在使用的时候,登录之后再选择浏览器中的IE 后退按钮,由于进行了缓存则页面不重新刷新请求,故需要进行部分的修改。对应/c/portal/login 的修改是位于com.liferay.portal.action.LoginAction 中public A

北冥有鱼 其名为鲲 化而为鸟 其名为鹏 1821

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Liferay研究之廿七:一些有用的API分析

 com.liferay.portal.util.PropsUtil在Portal.properties中设置的每个属性,都有一个类的属性与之对应,这个类就是:PropsUtil,每个属性都是静态的。对应的还有一个类是:PropsValues可以直接获取属性对应的值。如果想扩展portal.properties,在其中加上自己的值,那么就需要修改这两个类。 com.liferay.portal.u

smilingleo的专栏 3965

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

提高liferay性能

转载自:http://www.liferay.com/web/wanpeng/blog/-/blogs/777189提高liferay性能 By Gavin Wan, On 5/7/08 6:28 AM 似乎总能听到liferay性能的抱怨, 在一个开源软件中这其实不难理解,就想一台公用的电脑,有人用oracle就在上面装个oracle,有人用DB2就又装了一个DB2……

smilingleo的专栏 2135

使用liferay开发小记

使用liferay开发系统时涉及到的对liferay的一些修改信息: liferay版本4.3.3 1,系统不想使用liferay默认的能自己定制portlet外观信息的选项。 则修改liferay-portal/html/themes/_unstyled/templates下的portlet.vm,并且在 相应的各个风格下面也修改该文件,去掉文件中的$theme.ico

北冥有鱼 其名为鲲 化而为鸟 其名为鹏 1045

Liferay中的Cache问题

最近在测试的时候,发现一个问题,就是IE的首页设为了该网站。 登录成功后,什么也不做,直接点击home的那个图标,画面会跑到登录画面去。 但是用户名,密码都不输入,直接点击登录就能够迁移到TOP画面。 其实如果是已经登录的情况下,不想跑到登录画面去,而是直接显示TOP画面。 查找了半天,发现是IE的cache的问题。 那么Liferay中cache的设置在那里呢? 是在them

步行者的专栏 1487
上一篇: Java基础重温(四)对象初始化加载
下一篇: Java基础重温(五)类,接口
desmond_assis
博客等级 码龄14年 33粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值